在自顶向下的开发中,客户端和服务器端开发人员都使用WSDL(顶部)来生成各自环境所需的工件(底部)。 自上而下的开发是越来越普遍的做法,至少有两个重要原因。 首先,在许多情况下,描述服务的WSDL在某些注册表(例如UDDI)中是公开可用的。 使用当今可用的工具,服务器端开发人员可以从WSDL开始定义由WSDL定义的portType的新实现,而客户端开发人员可以从相同的WSDL开始开发服务的客户端。 其次,甚至更重要的是行业趋势,即使用XML架构定义(XSD)定义可互操作的数据标准。 使用XSD定义的这些行业标准数据类型非常适合定义新的Web服务接口。 因此,自上而下的开发模式首先是识别或开发与Web服务的域相关的XML模式,然后为该Web服务创建WSDL。 然后可以同时开始客户端和服务器端的开发。
自上而下的开发模式包括以下开发步骤
- 标识或创建与问题域相关的XML模式,该模式描述Web服务操作的输入和输出数据类型。 数据类型应在一个或多个模式(.xsd)文件中定义。 您可以使用标准架构开发工具来创建或修改必要的架构。
- 创建一个新的WSDL文件,该文件包含一个type元素,该元素从步骤1导入(不包括)模式文件,并且包含一个portType,而portType依次包含引用在导入的模式中定义的数据类型作为输入和输出参数的操作元素。 创建此WSDL的推荐样式是包装文档文字,使其与WS-I兼容,并最大程度地与.NET环境互操作。 诸如WebSphere Studio系列之类的复杂的企业应用程序开发工具包括WSDL编辑器,它们在创建WSDL文档时提供了巨大的帮助。
- 生成提供者端和请求者端的JAX-RPC构件。 请注意,以下描述的这些步骤可以由两个不同且独立的团队并行完成。 双方的实施平台也可以不同。
- 使用Web服务工具来生成提供程序端工件。 存在一系列工具,从Apache Axis或WebSphere Application Server的命令行驱动WSDL2Java到WebSphere Studio系列中的Web服务向导。 这些工具会为WSDL types元素中定义的每个复杂类型生成一个Java类(DTO)。 它们还生成POJO或无状态会话EJB框架服务实现,该实现具有针对portType中包含的每个操作的方法。 这些工具还可以生成JAX-RPC所需的任何其他提供者端工件,以将实现作为Web服务部署到应用程序服务器中。 这些工件的示例包括webservices.xml文件。 该工具可能还会生成其他依赖于应用程序服务器的元数据文件。 运行该工具后,serer-side开发人员必须实现适当的业务逻辑,以实现服务定义中操作的语义。
- 使用Web服务工具从WSDL为服务请求者生成DTO,SEI和客户端存根实现。 此过程与上述自下而上模式中的步骤4完全相同。 和以前一样,客户端开发人员必须使用存根从客户端业务逻辑调用服务。
自顶向下方法的优点是:
它支持使用现有的基于标准的XSD类型。 有关示例,请参见上面的清单4和5。
为当前服务开发新的架构类型时,只需将新开发的XSD导入其他服务即可轻松地将其重新用于其他服务。
它允许客户端和服务器端的并行和独立开发。
通过更改WSDL本身,可以最好地管理对服务的增量更改。 由于WSDL是客户端和服务器端的通用接口(或合同),因此可以轻松管理这些更改,因此它们不会影响与现有请求者或提供者的互操作性。
这些工具将使用WSDL中定义的名称空间来确定生成的JavaBean(或DTO)的程序包名称。 大多数工具都支持名称空间到程序包名称的映射。 从WSDL开始的好处是,客户端和服务器端都可以使用不同的程序包名称映射,而不会影响服务的访问。
自顶向下方法的缺点是:
它需要WSDL和XSD的知识,因为两者都必须手动生成或操纵。 即使是当今存在的用于生成WSDL和XSD的复杂工具,也需要对WSDL和XSD的结构有详细的了解,以确保适当地符合标准和最佳性能。
与自下而上的支持相比,自上而下方法的工具支持通常受到限制,但这种支持正在改善。 例如,许多工具不能正确处理导入模式的WSDL文件,而不是将其嵌入。 缺少对产生包装文档文字WSDL的全自动支持。 导入模式最常见的问题是XSD必须与WSDL文件位于同一目录中,并且相对路径名并非总是起作用。
重要的是要注意,您可以使用自下而上的过程来生成驱动自上而下的过程的WSDL。 例如,您可以使用自下而上的过程来创建在UDDI注册中心发布的WSDL。 我们建议这样做时,使用工具将WSDL types元素中的模式与其余定义分开,以便可以重用该模式。 任何自上而下方法的关键点是,一旦生成WSDL(手动生成或从代码生成),WSDL便成为从那时起请求者和提供者都使用的主接口。
翻译自: https://www.javacodegeeks.com/2015/08/web-services-top-down-development.html