【IT168 技术文章】
要实施SOA,首先要了解实现SOA所需要的相关技术,其中涉及的主要技术包括以下几个:XML、SOAP 、WSDL、UDDI和ESB。如下图1所示。
图1 SOA技术实施示意图
1. XML
XML 1.0 (可扩展标记语言,Extensible Markup Language) 标准是一个基于文本的 World Wide Web 组织 (W3C) 规范的标记语言。与 HTML 使用标签来描述外观和数据不同,XML 严格地定义了可移植的结构化数据。它可以作为定义数据描述语言的语言,如标记语法或词汇、交换格式和通信协议。
2. SOAP
简单对象访问协议 (Simple Object Access Protocol) 是一个基于XML的,用于在分布式环境下交换信息的轻量级协议。SOAP 在请求者和提供者对象之间定义了一个通信协议,这样,在面向对象编程流行的环境中,该请求对象可以在提供的对象上执行远程方法调用。因为SOAP是平台无关和厂商无关的标准,因此尽管SOA并不必须使用SOAP,但在带有单独 IT基础架构的合作伙伴之间的松耦合互操作中,SOAP仍然是支持服务调用的最好方法。
W3C SOAP 1.2规范在服务请求者和服务提供者之间定义使用XML格式的消息进行通信。将应用程序请求(在XML中)放入 SOAP 信封中(也是 XML ),并从请求者到提供者发送应用程序请求,提供者发回的响应也采用相同的形式。最近 SOAP 被称为面向服务的架构协议 (Services-Oriented Architecture Protocol)。
SOAP的优点在于它完全和厂商无关,相对于平台、操作系统、目标模型和编程语言可以独立实现。另外,传输和语言绑定以及数据编码的参数选择都是由实现决定的。
3. WSDL
Web服务描述语言 WSDL (Web Services Description Language) 是一个提供描述服务IDL标准方法的XML词汇。Web 服务描述语言(WSDL)规范定义了一个 XML词汇表,该词汇表依照请求和响应消息,在服务请求者和服务提供者之间定义了一种契约。我们能够将Web服务定义为软件,这个软件通过描述SOAP消息接口的 WSDL文档来提供可重用的应用程序功能,并使用标准的传输协议来进行传递。
WSDL描述包含必要的细节,以便服务请求者能够使用特定服务:
- 请求消息格式
- 响应消息格式
- 向何处发送消息。
WSDL 是基于 XML 的,因此 WSDL 文档是计算机可读的(machine-readable)。这样开发环境使用WSDL将集成服务的流程自动处理到请求者应用程序。例如 WebSphere Studio产生一个Java的代理对象,它能够像本地对象一样实现服务,但是实际上代理对象仅仅处理请求的创建和响应消息的解析。不管服务是否用Java、C#或者其他的语言实现,生成的Java代理对象都能够从WSDL描述中调用任何的Web服务。实际上,WSDL不能像编程语言那样描述实现细节。
4. UDDI
统一描述、发现和集成 (Universal Description, Discovery and Integration) 规范提供了一组公用的 SOAP API,使得服务代理得以实现。UDDI为发布服务的可用性和发现所需服务定义了一个标准接口(基于 SOAP 消息)。UDDI 实现将发布和发现服务的 SOAP 请求解释为用于基本数据存储的数据管理功能调用。
为了发布和发现其他SOA服务,UDDI 通过定义标准的 SOAP 消息来实现服务注册(Service Registry)。注册是一种服务代理,它是在 UDDI 上需要发现服务的请求者和发布服务的提供者之间的中介。一旦请求者决定使用特定的服务,开发者通常借助于开发工具(如Microsoft Visual Studio .NET)并通过创建以发送请求并处理响应的方式访问服务的代码来绑定服务。
SOA不需要使用UDDI,但由于 UDDI 是建立在SOA上来完成自身工作的,所以UDDI是服务发现的一个好的解决方案。
5. ESB
如图2所示,企业服务总线ESB(Enterprise Service Bus)是SOA架构的一个支柱技术。 作为一种消息代理架构它提供消息队列系统,使用诸如SOAP或JMS (Java Message Service)等标准技术来实现。
有人把ESB描述成一种开放的、基于标准的消息机制,通过简单的标准适配器和接口,来完成粗粒度应用(比如服务)和其他组件之间的互操作。
ESB的主要功能有:通信和消息处理、服务交互和安全性控制、服务质量和服务级别管理、建模、管理和自治、基础架构智能等。