SOA 常见误区

来源:互联网 发布:全国打拐dna数据库查询 编辑:程序博客网 时间:2024/04/30 02:05

在 SOA 领域中有一些常见误区,现说明如下:
1)认为 SOA=Web Service:
Web 服务通常指的是基于 SOAP/HTTP 的一种服务,这些服务通常是实践 SOA 所定义服
务的一种技术形式,它提供了分布式环境下卓越的互操作能力,但实现 SOA 的方法还很多,
并不仅仅是 Web 服务一种。SOA 构架是独立于技术实现的。SOA 并不必用 Web Services 来
实现,相反,Web Services 也并不一定遵循 SOA 标准。
不过,Web Services 的特性十分适合用来实现 SOA 架构。Web Services 之间能够交换带
结构的文档(比如 XML),这些文档可能包含完全异构的数据信息。这些文档可以同时附带
关于数据的数据:元数据(metadata)。换句话说,Web Services 可以有较粗的粒度,这样较
粗的粒度正好可以构成 SOA 中服务的粒度。
说到底,两者是相交的圆,SOA 服务和 Web Services 之间的区别还在于设计。SOA 概念
并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解。其中的区别也就是
定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,Web Services 在
需要交互的服务之间如何传递消息有具体的指导原则;从战术上实现 SOA 模型是通过 HTTP
传递的 SOAP 消息中最常见的 SOA 模型。因而,从本质上讲,Web Services 是实现 SOA 的
具体方式之一。
2)认为 SOA 是一种特殊的分布式组件对象(Components Objects):
SOA 中的服务与组件对象的相似之处在于:都有一个或多个接口,并且,服务发布者和
使用者都遵守这些接口。
不同之处在于:SOA 是关于模式(schemas)的,组件对象是关于对象类型(object types)
的;SOA 通过像 SOAP 这样的标准消息机制(messages)来实现通信,而组件对象通过方法
调用(method calls)来交互。与 CORBA 中的接口定义语言 IDL (Interface Definition Language)
相比,SOA 在 WSDL (Web Services Definition Language) 中采用 XML,会显得更加普遍和通
用。
联系之处在于:服务最终还是通过类和组件对象来实现的。
SOA 被认为是传统紧耦合的、面向对象的模型的替代者。像通用对象代理架构 CORBA
(Common Object Request Broker Architecture)和分布式组件对象模型 DCOM (Distributed
Component Object Model)。在 SOA 中,单个服务可以用面向对象方法来设计,但是,整个
SOA 的设计却是面向服务的。下面的表格中给出了 SOA 与分布式组件架构的不同点。
SOA 与分布式组件架构的区别
编号 分布式组件架构 面向服务的架构
1 面向功能 面向流程
2 设计目的是实现需求 设计目的是适应变化
3 开发周期长 交互式和重用性开发
4 成本为中心 业务为中心
5 应用阻塞 服务协调
6 紧密耦合 敏捷的和松耦合
7 同构技术 异构技术
8 面向对象 面向消息
9 需要更深入的了解实施细节 独立与实施细节
3)认为新系统 SOA 没有用武之地:对于新构建的系统,如果需要得到业务敏捷性的话,
这就使 SOA 具有了用武之地。SOA 通过更好地让 IT 和业务融合在一起,借助于企业架构、
业务建模、SOA 监管以及一些新的设计原则,使支持这种风格的新技术来达成 IT 的灵活性,
可以更好的支持业务敏捷性。
4)认为 SOA=BPM:业务流程管理(Business Process Management,BPM)与 SOA 的
关系紧密,但并不是一件事。BPM 的目的是业务优化,这种优化需要 IT 支持,SOA 很好的
能提供这种支持;反过来 BPM 在业务建模和业务规则方面也能给 SOA 提供很好的支持,为
SOA 达成业务敏捷性带来良好的基础。