本质上说SOA体现的是一种新的系统构架,在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并具有同一接口方式的组件(也就是Service)组合构建起来的。
SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL,WebServicesDescriptionLanguage)是用于描述服务的标准语言。SOA服务用消息进行通信,该消息通常使用XMLSchema来定义(也叫做XSD,XMLSchemaDefinition)。SOA基于标准化传输方式(HTTP和JMS),采用标准化协议(SOAP)进行调用。在一个企业内部,SOA服务通过一个扮演目录列表(directorylisting)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述、定义和集成(UDDI,UniversalDescription,Definition,andIntegration)是服务登记的标准。简言之,SOA具有以下三大基本特征:
(1)独立的功能实体。在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。传统的组件技术,如.NETRemoting,EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体。当宿主本身或者其他功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(MessageQueue),冗余部署(RedundantDeployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。
(2)大数据量低频率访问。对于.NETRemoting,EJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成。在Internet的环境下,这些调用给系统的响应速度和稳定性带来较大的影响。针对这一问题,SOA系统推荐采用大数据量的方式一次性进行信息交换。
(3)基于文本的消息传递。在COM、CORBA这些传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能。但是在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。
此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。
服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求,它将其服务发布到服务注册代理中心,以便服务请求者发现和访问该服务;当服务请求者从服务注册代理得到调用所需服务的信息后,通讯在服务请求者和服务提供者之间进行,无需经过服务注册代理。
上一页 [1] [2]

|
发 表 评 论 |
|
|