
已有的软件结构可以是基于从原始的过程编程(C语言)到面向对象的编程(C++/Java),到面向组件的编程(J2EE平台),再到面向服务编程的任何结构。每一步都会成倍地增加系统开发和集成的复杂性。项目的要求将结构的决定权推给了系统的设计人员。面向服务结构(SOA)的编程范例是基于服务的,而需要系统集成的公司更喜欢在内部和外部项目中使用SOA。
服务(
service)这个术语在SOA里主要用来指对即插即用的网络设备的激活。已有的SOA实现的例子包括JINI、CORBA、Java
RMI机制、ebXML,以及最近的Web服务。
SOA的一个实现——Web服务
Web服务是通过统一资源标识符(URI)和服务约定(service contract)来唯一标识的,而服务约定是由XML来定义的。这个服务约定包括公共接口以及服务的绑定。Web服务的用户都是使用基于XML的消息(被格式化为SOAP消息)同Web服务进行通信的软件系统。
一个客户端在典型状况下会搜索最能够匹配其要求的Web服务。客户端是通过查看公共或者私有服务目录(也就是说,服务注册表)来完成这一搜索的。图A显示的是这个交互操作的图表(步骤列在了下面)。
图A

SOA环境里的交互操作
- 服务提供者在服务目录里注册一项服务。现在服务目录就知道服务约定的对象了。
- 通过查询服务目录,客户端或者服务使用者能够找到它所需要的服务。服务目录组件会返回关于如何绑定服务、服务约定的信息,如果客户请求的话,它可能还要提供关于服务更详细的信息。
- 客户端绑定到服务提供者上,后者反过来会满足客户端的要求。