壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1654|回复: 0

SOA借鉴设计模式

[复制链接]
发表于 2007/8/24 15:57:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
做软件设计的,就算没有机会仔细研究过设计模式,多少都听说过“四人帮(Gang of Four)”的《Design Pattern》。“设计模式”的四个伟大的作者,把面向对象软件设计的代码复用推向一个新的高度,第一次将设计模式规范化,并提升到理论高度。虽然软件设计模式针对的是代码片段的复用,而SOA实施中讨论的是服务的复用,是软件开发中两个不同层次的问题,但是因为面向对象的软件设计也是SOA的一大支柱,所以这里有共性,设计模式许多好的思路,在SOA的服务复用中值得借鉴。

在面向对象软件设计中,具体的应用软件是用许许多多的类(Class)代码来构建。设计模式理论就是指导如何有效的组织类代码形成具体应用软件。譬如说,通过Strategy Pattern定义一系列的算法封装类,使它们可相互替换,使得算法的变化可独立于使用它的客户;通过Composite Pattern将对象组合成树形结构以表示部分-整体的结构,让客户对单个对象和复合对象的使用具有一致性。在SOA实施中,具体的应用系统由许多按照良好接口定义的服务构成,通过何种有效的方式来组织这些服务,同样需要理论指导,或者说同样可以定义SOA的模式。譬如说,能否定义有效的模式把低层次的服务组装成高层次的服务,同时兼顾低层次服务的可替换性,以保持足够的业务灵活度。

在定义SOA模式的时候,还可以借鉴设计模式的诸多原则。譬如说,面向对象软件设计中的里氏替换原则(Liskov substitution principle),对父类的调用同样适用于子类(Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T.) 。同样的原则,对于SOA也是非常有意义的,在原有服务基础上扩展功能的服务应该保持良好的兼容性,让原有系统的服务——消费关系无需改变就能适用新服务。以此为例,许多成熟原则的运用能加速SOA的演进。

等同设计模式的作用,定义SOA的模式,其实是利用模式来共享专家知识。SOA作为新生事物,刚开始的时候,只有少数经验丰富的技术专家和业务专家能够掌握其精髓,熟练运用到具体的业务领域,构建优秀的SOA系统。如果从专家们实施的成功项目中提炼出SOA运用的最佳实践,也就是“模式”,通过广泛的推广模式运用,就相当于快速复制专家经验。一方面,经验不够丰富的人不会因为白手起家而无所适从,他们可以基于模式做SOA实施,提高成功率,在学习专家经验的同时提高自身水平;另一方面,模式让SOA作为专家知识载体,在广泛的运用过程中,有机会进一步得到修正和提升,千锤百炼后最终更加完善适用。

那么,谁会推动模式的定义呢?作为专家知识载体的模式,可能会分别来自于SOA平台工具厂商,开发社区,以及企业。这三个来源对模式定义的侧重点会有所差异:平台工具厂商会定义最大限度利用其平台特性的模式,并辅以相应的开发工具;开发社区往往讨论通用的模式,帮助形成定义模式的标准;企业的模式定义最实用,而且和行业应用紧密结合。不管何种来源,模式定义殊途同归的结果是加速SOA系统构建知识的普及。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1601368
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 08:30 , Processed in 0.010728 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表