偶长期以来一直想写一篇关于SOA的文字,但是迟迟没有动笔。 面向服务的体系架构(Service Oriented Architeture,即SOA)在今天这个软件业中,可谓是如雷贯耳,如日中天。其架势直逼当年“面向对象”(Object Oriented ,OO)出道之时。偶们都知道,对象是现实世界中实体的缩影,面向对象编程,即面向现实世界中的实体编程。那么“服务”又是什么涅?如何面向“服务”去架构呢?这个东东虽然大家都听说过,但是真正理解起来的想法可谓是千奇百怪哦。 偶虽然也不能说真正读懂SOA,但是偶觉得偶想象中的SOA,绝对是架构设计的巅峰之作。更为重要的是,SOA并不遥远,近得唾手可得。 从面向过程到面向对象到现在的面向服务,软件的抽象程度逐渐提高,软件的复用率也逐渐被人们作为重要话题一再提及,面向过程时期讲的是函数的复用,面向对象时期讲的是类和对象的重用。从零散的函数升级到了整体的对象级别,明显是层次的进步。到了面向服务时代,就应该是组件级、或者说构件级的重用。 谈到这里,不得不引出所谓的服务中间件的概念了。其实这对偶来说是一个很陌生的概念,也是一个正在探索的概念。像ESB(SUN的openESB)和ogsi都可以作为中间件的基础。偶觉得,既然要SOA,要分布式,就要进行得彻底一点。服务的使用和服务的提供应该围绕着这个中间件来进行,我注册了(不一定要实现),你就可以使用。所以SOA应该不再是点对点式的服务提供和调用的关系。服务调用者不一定要知道服务提供者的接口细节,因为我只关注你在中间件上的服务注册信息而已。至于调用方式到底原则跨平台跨语言的Web Service,还是选择皇家正统的EJB,那就看到底要把这个架构做到何种程度的松散耦合了。 很多人看到这里(如果能忍受偶的繁体文字和凌乱文笔坚持看到这里的话)都觉得SOA是一个很乱很乱的东西咯。所以不得不再谈谈关于如何将这些乱七八糟的东西整合到一起来,即所谓的集成。 如果涉及到SOA和应用集成的话,那么传统的一些架构模式可能不再适用了,像什么MVC啦之类,因为最起码,在你的架构里,得多加一个层面“集成层”。 综上所述,偶要做出一个小小的,不算很严谨的结论啦(各位GGJJ,偶发现自己真是不擅长言辞,不要骂偶肤浅)。SOA是一个架构设计思想,而不是一种具体的技术,要实现SOA,首先得定出game rule。对于多个业务系统之间,这个rule必须保证是中立,不依赖于任何一方的。然后业务系统要想纳入这个SOA的集群中,就必须依赖于制定这个rule的Service Manager,而非另外一个真正要被依赖的业务系统。彼此把接口暴露给Service Manager就可以了。 松散耦合 偶肯定地认为,在不久的将来,SOA必定会大行其道,成为改变软件世界的一次革命。偶将成为SOA的忠实FANS,哈哈 |