随笔 - 19, 文章 - 93, 评论 - 17, 引用 - 0
数据加载中……

SOA的进化(三)--------SOA 的根源(SOA 与过去架构的比较(四))------ 面向服务与面向对象(第Ⅰ部分)

3.5. 面向服务与面向对象(第 部分)

注意这一节标以“面向服务与面向对象”,有别于“比较面向服务与面向对象”。 区别在于所强调的事实:在这两个思想派别之间不必是竞争关系。


事实上,面向对象编程被普遍用于有 Web 服务内构建封装应用逻辑。然而,面向对象编程方法论在基本上与面向服务有何,这值得探究。对它们差异的理解会有助于你的工作。

下面列出这些设计方法方面的比较。(然而面向服务是基于服务的设计,面向对象是围绕对象的创建为核心。为了避免服务和对象间的比较混乱,使用了“处理逻辑单元”这一术语。)

l 面向服务强调处理逻辑(服务)单元间的松散耦合。尽管面向对象支持创建复用性、松耦合的编程例程,它们多数是以预先定义的类依赖为基础,结果导致了更多处理逻辑(对象)的紧密绑定。

l 面向服务鼓励不优雅的接口(服务描述)以便于每个通信(消息)包含尽可能多的信息以便于工作完成指定任务。面向对象编程充分支持精确的接口( API )以便通信( RPC 或本地 API 调用)单元能够执行不同规模的任务。

l 面向服务期待显著改变处理逻辑单元(服务)的作用域。面向对象处理逻辑( objects )趋于使其作用域更小且更有针对性。

l 面向服务促进活动未知的处理逻辑单元(服务)的创建,从而驱动通信单元(消息)的智能化。面向对象鼓励处理逻辑数据的绑定,产生了高度智能化的单元(对象)。

l 面向服务偏爱处理逻辑单元 (服务)被设计成尽可能无状态。面向对象促进数据与逻辑的绑定,导致更具状态的单元(对象)。(然而,最近基于构件的设计方法偏离了这一趋势。)

l 面向服务支持组合松散耦合的处理逻辑单元(服务)。面向对象支持组合但也鼓励处理逻辑单元( objects )间的继承,这会导致紧耦合。

你或许已经注意到我们避免提及特定的面向对象原则,比如封装、继承及聚合。因为我们还不会充分描述面向服务的原则,我们在这一层次上给出个别的比较范例。以后将 详细解释个别的面向服务原则,然后 再继续这一讨论。

要点总结

  • SOA 从根本上源自客户 - 服务器架构。当前 SOA 使用了一些用于构建客户 - 服务器应用的技术。尽管更加完善, SOA 引进的复杂性也与单纯的两层客户 - 服务器架构形成了尖锐对比。
  • 分布式互联网架构已与 SOA 一样普遍,包括大量的技术。然而,不论是技术还是其基本设计原则, SOA 都具有明显特征。例如, SOA 引进了不同于分布式互联网架构的处理与安全需求,而且管理也典型地更加复杂,归咎于它对基于消息的通信的依赖。
  • 传统架构已经且可继续在其自身的设计范式中使用 Web 服务。重要的是不要将这些架构与 SOA 相混淆。在分布式互联网架构中,发现了典型的对 Web 服务的非 SOA 方式的使用,此处 Web 服务被用于反映 RPC 风格的通信。

posted on 2006-12-03 09:30 BPM 阅读(651) 评论(0)  编辑  收藏 所属分类: SOA


只有注册用户登录后才能发表评论。


网站导航: