Web 服务使用了相似的方法。xml 是一种通用数据表达法。在使用不同程序语言编写的程序和执行不同的机器指令之间,可以使用 XML 作为交换媒介。XML 是所有 Web 服务技术的基础,并且是互操作性的要害,每个 Web 服务规范都是基于 XML。非凡是,SOAP 使 XML 所编写信息的交换规范化,WSDL 使用 XML 词汇描述 SOAP 的细节。 本文的第一部分中,定义了面向服务的体系结构(SOA)以及它的一些特征,并解释了它同 Web 服务技术的关系。从那里可以了解到 SOA 是一种由应用程序所组成服务的体系结构样式,并且封装了应用程序功能以提高可重用性。我将 Web 服务描述为一套新兴规范,Web 服务是目前实现 SOA 的最好方法。关于 Web 服务的文章有很多,因此我将依据其他文章来解释这些细节。当我分析 SOA 的体系结构概念时,你会看到一些明显同 Web 服务重复的内容,但是本文的着重点是 SOA 扩展 Web 服务的前景。服务工作角色同 Web 服务一样,面向对象的体系结构(SOA)中有两个要害角色:服务请求者和服务提供者。一个或多个提供者应用程序通过发送请求消息并处理响应消息来提供服务,请求者应用程序调用这些服务。 图 1 .服务请求者和服务提供者
服务发现尽管服务调用和服务描述通常被认为是 SOA 的需求,但服务发现也是它的可选功能。UDDI(通用描述,发现和集成)为发布服务的可用性和发现所需服务定义了一个标准接口(基于 SOAP 消息)。UDDI 实现将发布和发现服务的 SOAP 请求解释为用于基本数据存储的数据治理功能调用。为了发布和发现其他 Web 服务,UDDI 通过定义标准的 SOAP 消息来实现服务注册(Service Registry)。注册是一种服务代理,它是在 UDDI 上需要发现服务的请求者和发布服务的提供者之间的中介。一旦请求者决定使用特定的服务,开发者通常借助于开发工具(例如IBM WebSphere Studio 或者 Microsoft® Visual Studio .NET)并通过创建以发送请求并处理响应的方式访问服务的代码来绑定服务。图 13. UDDI 模式
发现用于构建 SOA 应用程序的服务,其结果就象电子黄页一样。你可以使用工具(比如 WebSphere 中的 UDDI Browser)在应用系统设计期间寻找合适的服务。SOA 不需要使用 UDDI,但由于 UDDI 是建立在 SOA 上来完成自身工作的,所以 UDDI 是服务发现的一个好的解决方案。正如在 Steve Graham 的文章“Six Species of UDDI”(请参阅参考资料)中提到的,你能够用多种不同的方法使用 UDDI。本文非凡指出了在 IT 组织内 UDDI 的使用,主要是为了治理内部服务以提高可重用性以及进一步促进端点无关性。例如,应用程序中可能会缓存所需服务的位置。假如服务重新部署到不同的服务器当中,服务请求者能够使用 UDDI 发现新的位置并将它缓存以备将来使用。当内部部署 UDDI 时,使用 UDDI 服务请求者应用程序将自动适应于服务部署的变更(例如,为维护负载平衡而做的变更)。 随着 UDDI 的发展,它将广泛的用于发现由市场模型中其他组织所提供的公共可用的(publicly-available)业务服务。正如我们将在关于服务编排的文章中所讨论的,UDDI 在运行时对服务的 UDDI 动态选择方面很有用的。结束语本文讨论了 SOA 的基本元素以及它们相互发现和互操作的方法。你通过开发服务目录(内部的或合作伙伴的)来创建基于 SOA 的 IT 体系结构,并编写代码使用这些服务来开发出新的应用程序。由于服务提供者能够通过请求其他服务来完成自己的工作,在设计上就可以使用服务的分层结构。虽然简单的请求-响应消息模型最为流行,但是你可以使用其他的消息模型灵活的设计系统。WSDL 文档告诉你如何集成服务,UDDI 帮助你找到所需的服务。参考资料您可以参阅本文在 developerWorks 全球站点上的英文原文。