曾经有一次我提供EJB培训的客户,正在进行传统Corba架构向EJB2架构迁移,通过和他们的交流,对Corba多了一些了解。当时就感叹,和EJB2相比,Corba实在太难用了。Corba时代在1998年EJB1.0发布以后,就逐渐淡出历史舞台了。
1、基于RMI/IIOP协议的EJB时代
这个时代开始于1998年,到现在基本上已经划上了句号。其实在EJB出现以前,在1996年Microsoft发布WindowsNT4.0以后,Microsoft当时也提出了自己的分布式架构,即MTS,但是MTS的光辉被随后出现的伟大的EJB技术彻底击败,此后,就拉开了Java的应用服务器时代,BEA也是在这个时代的转折点成长起来的。
不管是Corba,还是EJB,都有一些共同点:
- 通过专有的网络协议通讯
- 不能跨平台调用
- 通过分布式对象调用来实现分布式架构,换句话来说就是,分布式架构是绑定在面向对象的机制上的
分布式对象架构的缺陷在EJB2时代被充分暴露了出来,乃至于Martin Folwer在《企业应用架构模式》当中强调,分布式调用的第一原则就是不要分布式。更多关于EJB2分布式对象架构的缺陷在Rod Johnson的《J2EE without EJB》当中被剖析的更加清楚。
2、基于SOAP协议的Web Services时代
这个时代始于2001年Microsoft公司推出dotnet平台,整个行业开始鼓吹Web Services。中间经历了一次低潮之后,在IBM,BEA成功的联手炒作SOA之后,再次王者归来。
Web services有一些明显不同于Corba和EJB分布式对象架构的特征:
- 通过标准SOAP协议通讯,一般走HTTP通道
- 能够跨平台调用
- 通讯格式是xml文本,而不是二进制数据格式
- 通过RPC机制来实现分布式调用,而不是通过面向对象机制实现分布式调用
Web services的优点和缺点都非常突出,这个不是本文的要点,不做具体分析。这里唯一要强调的是SOAP协议并不依赖于HTTP。事实上SOAP协议可以走很多底层协议,例如SMTP协议,Jabber协议等等。
REST也是一种分布式系统的架构风格,那么REST和上面这些分布式架构有哪些明显的区别呢?
- REST走的是HTTP协议,并且充分利用或者说极端依赖HTTP协议
- Corba和EJB是采用专有的二进制协议,SOAP可以但不依赖HTTP,并且仅仅使用HTTP POST。
- REST是基于HTTP抽象资源的分布式调用,换句话来说,就是分布式调用是绑定在资源的操作上面的。
通过上面的总结,我们可以做一个直观的对比数据:
分布式架构 协议 调用方式
——————————————————-
Corba架构 专有二进制协议 对象的CRUD操作
EJB架构 专有二进制协议 对象的CRUD操作
Web Services SOAP协议 RPC方式
REST HTTP协议 对资源的CRUD操作
——————————————————–
分布式架构 协议 调用方式
——————————————————-
Corba架构 专有二进制协议 对象的CRUD操作
EJB架构 专有二进制协议 对象的CRUD操作
Web Services SOAP协议 RPC方式
REST HTTP协议 对资源的CRUD操作
———————————————–
REST最大的特点是什么呢?REST是为通过HTTP协议来进行分布式调用量身定造的架构,在传统上,我们开发一个非分布式的软件系统,使用OO进行建模和架构,无往而不利。但是分布式对象却显得不那么有效。对于跨进程的调用,也许我们需要探索更好的面向对象的分布式调用架构。
REST是专门为分布式调用设计的架构,在REST里面,分布式是通过对资源的操作来实现的,不是像EJB那样通过对象的方法调用来实现的。资源是一种抽象的概念,资源被映射到相应的一套URL规则上面了。所以资源只和URL相关,而与具体实现无关,因此REST具有更好的解藕性。在RoR的实现当中,你可以把一些资源直接映射到model对象上面去,也可以不映射到model上面,而完全是由业务逻辑组合的抽象资源。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
API开发与管理大作战
2014将会是API管理方法新旧PK的一年,据Delyn Simons说,她领导了Mashery开发者的外展团队。应用编程接口(API)的主流化和私有化在新的一年也将掀起波澜,她在波士顿“Future Insights Ultimate Developer Event 2013”大会上预测说。
-
公共API外包管理是否值得考虑?
公共API外包管理是指聘请一个专家小组来解决可扩展性问题,同时也提出几套可替代的方案。
-
最适合大数据应用的是SOA还是REST?
跟所有的企业数据一样,大数据唯有通过应用投射给用户才有用。对于设计或重新设计大数据应用的架构师来说,一个关键问题是究竟是用SOA还是RESTful的API?
-
弹性资源对传统的REST架构构成挑战了吗?
组件化应用程序需要机制来将组件传递到下一个工作地。从一开始,人们对连接流程及其实施就有不同的观点。可以证明,SOA阵营是由RPC和SOAP的软件接口发展而形成的。