|
|
|
 |
| 小扒一下SOA的皮 |
SOA - Service Oriented Architecture, 用中国话讲就是面向服务的架构。这三个字母可是最近IT业里炒得非常热的,随便翻开一本IT杂志都会找到那么一两篇关于SOA的文章。那么SOA到底是什么呢,为什么这么吸引眼球呢?个人觉得SOA是一个更抽象化了的面相对象架构(OOA)。只是系统架构思想在不断涌现的新技术的基础上对面向对象思想延伸和扩展,那么基于这点判断SOA是一个纯IT纯技术的概念,对业务部门来说SOA没有任何意义。因此在纯技术的名义下,本人也对SOA做了一番研究。
我觉得对SOA得从两个方面来看待,一个是IT架构的,一个是系统开发
如果从架构来看,SOA并不是什么新鲜玩意,说白了它就是个披着马甲的面向对象架构,但是它又比面向对象的架构更高一层,更贴近业务流程——即以服务为单元来抽象、分割和包装业务实体。所谓的服务应该是一个接收一定输入并产生一定输出的具有清晰边界的完整的业务逻辑单元(比如验证用户的身份,查询一张订单),而面向对象的架构则将业务模型分割成尽可能小的孤立单元——对象,这些对象通过程序控制逻辑连成一体而实现特定的业务逻辑。SOA产生的动机更多得来自于IT自身,在Service模式大行其道的时代,IT希望有一种方式将IT Value变成看得见的Service提供给用户,提供给Partner或者提供给其他IT部门,因此就有人拍脑袋想到通过以服务为单元来打包原本孤立分散的系统功能,这就是所谓的SOA。其实这种围绕的服务的思想可谓历史悠久,但是上升到架构层面还得拜托于技术得进步——那就是Web Service和XML的出现。而Web Service和XML正是系统开发领域的技术不断进步的产物,下面我们就从开发层面来扒SOA的皮。
从开发者的角度来看,SOA只是一个比以往更方便了的进程间通信机制,XML语言和SOAP等Web Service的相关协议的成熟和被广泛接受使得跨系统的进程间通信变得易于实现,开发者不用再费心去考虑通信协议的实现因为支持Web Service的系统平台已经替开发者考虑了这些问题,服务使用者只需要按照协议规范去做简单的调用,服务提供者只需要按照规范定义服务的接口,底层的通信机制对双方来说都是透明的,开发及设计人员被从繁重的底层编码中解放出来而可以专注于实现业务逻辑。举个更直观的例子,SOA就像我们现在的以太网协议体系一样,从最低层的数据链路层、到TCP/IP层、再到应用层的模式,对于应用层来说只需要按照协议规定与TCP/IP层交互就可以实现所有以太网功能,网络应用程序的开发者不需要自己再去开发一套以太网通信机制。其实在如今这个网络成为所有系统的基础的时代来看,Web Service可以被看作是在以太网应用层之上的又一个网络通信的层次,而SOA就成为了如何利用这种便利更好的设计IT系统的一种理念。其实进程间通信一直是IT技术领域的核心,从比较底层的管道、中断、共享内存机制,到了比较高级的通过以太网的远程过程调用(RPC),以及EJB,CORBA,COM/DCOM,开发人员通过技术的进步不断的改进进程间通信机制,直到XML技术的出现,寻找一种跨平台的通用进程间通信机制的旅程才看到了曙光。而正式有了通用的进程间通信机制,IT们才可能将特定的功能包装成Service提供给外部的用户使用,所谓的外部用户也就是其他的IT们,这种Service的模式让企业IT按服务收钱,按需配置成为可能。
综上所述SOA只是个纯IT的概念,是自娱自乐型的,可以说基本上对业务没有任何帮助,业务部门更不可能对此产生任何兴趣。SOA对于企业IT来说参考意义大于现实意义 ,而对于厂商来说更有研究意义和忽悠的意义。系统集成是企业IT永远的话题,SOA只是一种更高级的解决方案但是我们本身并不需要去了解太多的细节,厂商可以将SOA应用在产品中并实施。所以如果您不是一家IT公司,那么请远离SOA,拒绝忽悠!
Eric(以上仅代表作者观点—编者按)
|
|
|