先说EJB,这是Java官方(SUN公司)为了使Java支持分布式系统而制定的规范,可以说是J2EE规范的核心之一。由各个应用服务器各自去实现,比如IBM的Websphere、JBoss等。 但是,因为EJB本身的一些固有缺陷(本人没有EJB的实践经验,就不展开了,反正大家都说不好用),所以并没有得到广泛的使用,加上EJB只能基于Java,所以IBM、Oracle、HP等各个大厂又开始大力鼓吹、推广SOA。 SOA最初是个叫做Gartner的小公司(相对的小)提出来的,是一种“架构”或者说“思想”,具有跨平台、跨编程语言、松耦合等特性。但SOA本身并非具体的规范、更非具体的产品,所以IBM、Oracle等厂商各自有各自的产品和解决方案,而且都很重、很贵,如果按照这些大厂的解决方案去实施SOA,肯定要采购一大批硬件和软件,还不一定用得顺手。 抛开这些大厂的SOA解决方案和开源的SOA方案不谈,SOA落到实现上最常见的技术方案是WebService,而WebService又是由SOAP、WSDL、UDDI等构成。 然而,WebService(准确的说是SOAP)也不是个好伺候的东西,首先学习曲线比较陡、各种开源框架多如牛毛,遇到异常各种晦涩的异常信息,各种类冲突等,加上其他的一些缺陷,于是更加轻量、更加灵活的Restful异军突起。 从狭义上讲,可以认为WebService等同于SOAP。从广义上讲,Restful和SOAP都可以算做WebService的具体实现。 它们的关系是:SOA是概念上的、最顶层的抽象,WebService是实现层的抽象,SOAP和Restful都是具体的实现方式。 ================分隔================= 以上属于个人对这些概念的理解,然后是回答问题时间: 1、SOA的通信方式是什么? 刚才说了,SOA是架构、是思想,SOA本身并没有什么通信方式。但SOA落到实现层,不管是SOAP还是Restful,最普遍的通信协议还是HTTP。 2、SOA和EJB的区别是什么? 初衷都是为了更好的搭建分布式系统,SOA是一种架构,EJB是J2EE规范的一部分。从层次上讲,SOA比EJB的层次更高一点,EJB大致和WebService是同一层次的东西。 3、WebService与Restful属于SOA吗? 不能用属于这个词,应该说WebService(特指SOAP)和Restful都是实现SOA的具体技术手段。 |
|
来自: hewii > 《Software Tech.》