本文讨论服务接口设计的最佳实践,包括开发方法、服务粒度及操作签名……
面向服务的体系结构(Service-Oriented Architecture,SOA)强调企业内不同系统间的松散耦合。服务接口结构在
SOA中是最重要的,因为设计糟糕的服务接口对需要使用这些接口的所有应用程序都会造成负面影响。设计良好的服务接口能够加速项目计划的执行,从而提高您的
SOA解决方案对业务需求的响应能力。
引言
面向服务的体系结构(Service-Oriented Architecture,SOA)正快速成为很多企业中的主要体系结构样式。构建
SOA解决方案的主要目的是通过松散耦合其系统来对企业进行武装,从而能更好地响应业务需求。在 SOA解决方案内设计 Web服务的主要目标之一是支持快速构造业务流程。您还希望加速企业内以及与外部业务合作伙伴的应用程序集成。
在实现 SOA解决方案的上下文中,服务接口的结构非常重要。设计糟糕的服务接口可能会极大地导致使用此接口的很多服务使用者应用程序的开发过程变得非常复杂。从业务角度而言,设计糟糕的服务接口可能使得业务流程的开发和优化变得复杂。相反,设计良好的服务接口可以加速开发计划的执行,并对业务级别的灵活性起到促进作用。
Web服务从本质上就非常适合用于构造 SOA解决方案。Web服务领域的很多现有和未来的行业标准可确保互操作性,此类标准包括 SOAP、JavaAPI
for XML-based RPC (JAX-RPC)、WSDL和 WS-* 规范等等。各种流行的开发环境(如 IBM Rational
Application Developer 和 IBM WebSphere Integration Developer)中均包含了基于标准的工具,从而能够加速
SOA 项目的进行。
本文的重点是服务接口设计抽象层面的东西:
设计与开发方法
服务粒度
操作签名
开发方法
基于 XML和 Web服务的编程模型和开发工具定义了三种构建 Web服务的方法:
自底向上
各种先进的集成开发环境(Integrated Development Environment,IDE)提供了用于从现有代码(如
Java? 或 COBOL)创建 Web服务实现的工具。使用此方法时,开发人员通常将选择现有的 JavaBean 或 EJB 组件,并调用向导来生成
WSDL文件,以用于将 Bean 或 EJB 作为 Web服务调用。
自顶向下
使用此方法时,开发人员将首先使用 WSDL和 XML模式(XMLSchema,XSD)构造定义 Web服务接口,然后为服务生成框架实现代码。接下来,开发人员将完成框架服务实现。大多数先进的
IDE(如 Rational Application Developer V6 和 WebSphere Integration
Developer V6)都为此方法提供工具支持。
中间相遇
此方法对前面两个方法进行了结合。开发人员首先使用 WSDL和 XSD 定义服务接口,并为服务生成框架实现。如果有必要,开发人员还可以使用自底向上技术来通过方便的应用程序编程接口(Application
Programming Interface,API)公开现有代码。然后开发人员将编写在新设计的接口和旧接口之间进行转换的代码。
很多熟练的 Java 开发人员喜欢使用自底向上技术来加速 SOA项目中的 Web服务开发。他们将首先用 Java开发新服务的实现,然后将使用强大的代码生成向导来为这些服务创建
WSDL接口。尽管此方法可以加速各个服务的实现,但这对整个 SOA项目通常都意味着问题。
之所以出现问题,是因为自底向上生成经常会得到无法重用的类型定义以及多个定义为表示语义等效信息的类型。
最佳实践:使用自顶向下和中间相遇开发方法,而不使用自底向上技术。使用 XSD 和 WSDL 设计您的服务接口,然后生成框架 Java
代码。
|