不要误解和小看SOA的架构思路
好久没有到板桥大哥这里作客了。今天晚上有空就过来这里做一下客。
今天想和大家聊一下SOA。因为我和很多人聊过什么是SOA。SOA 到底是什么似乎很多人都没有很准确的了解SOA 的真谛。于是我今天从代码以外的一个角度就是开关角度(设计角度)来看一下SOA.
第一个例子:记得我上司在我面前质疑过SOA的作用,他觉得SOA的作用到底有什么重要的性,给我们带来什么更大的飞跃.他似乎不太满意外面鼓吹的SOA架构的作用-----我觉得他是在当今效果来评估SOA的作用来看SOA的实施的可行性;第二例子是我们一个研发人员看SOA(webservice)他是J2EE(JavaEE 5)应用软件人员他认为:soa 就是使用xml的描述语言来描述接口的技术,没有什么神秘和难以捉摸的技术体系----他是从代码技术角度来看SOA的实现载体。
的确他们他们的看法都有一定的代表性,第一个例子的看法他是从应用的高度来看,但是他的看法并不是SOA的错,却是现在的行业技术实现的事例(毕竟SOA的架构体系处于初级阶段,人们对他的理解还不是很高,特别是国内的技术人员理解得不够)造成的.第二例子完全就是从技术实现的片面的恶角度看SOA,这样的理解只是处于一种很低的层次看SOA,这样的看法是很不够也不可能设计出好的基于SOA的架构体系的.
那好,现在我就说说一下我的看法(看法也未必是正确,希望大家自己评估,如果大家觉得有什么错误或更好的理解请不要吝啬指出,谢谢大家乐);我认为SOA架构体系正是软件工程发展一个有标志性里程碑也是开关原则的必然出现的架构.SOA其实体现的是:分离关注点他和J2EE(JavaEE5)的JDBC/JDNI思路是一样的,而WebService只是他的一种行业标准化的结果而已,而并不是SOA就是SOAP(只是SOAP只是SOA的一种体现)。为什么我这样认为呢,这么说吧,换个角度看吧:如果我使用servlet/jsp来访问结构,jsp/servlet都返回一个XML的字符串(或是byte流,而且byte流里面有一个节点存放序列化的对象,和流程控制信息) 得到这个结果后对xml字符串后进行相应的解析进行相关的操作一样可以实现所谓的webservice的效果(只是不符合标准而已)以前我也曾这样做过web系统(只是不知道这就SOA的思想的实现)。
那么在现阶段较好使用 SOA是是什么呢,我个人觉得SOA根本体现分离关注点包含三个方面:一个是代码技术角度,一个是设计架构角度,一个应用业务功能角度。代码技术:反应的从对象/接口的关系静态(体现代码)-->描述的动态的转变;设计架构体系:从根本上可以把架构的技术关系从静态耦合关系-->代码没有耦合,耦合关系发生在runtime动态关系转变(这必然促使架构中组件关系的);应用角度:这是他思路最强和更高层次看问题,从业务和技术功能的从静态耦合到静态分离(runtime耦合)转变----这是多么强大的功能能也是IT行业追求的效果.
所以说SOA是体现高度的开关原则的体现。所以我自己个人提倡不要以为SOA的体系没有太大的作用,其实如果能理解好SOA的思路,应用高层次可以帮助我们解决业务和技术功能的分离,在底的层次可以在系统内部的关系处理好分离关注点(系统/组件/类/对象的分离)功能;而WebService只是SOA的一种行业标准的实现而已。