哪种方式更好的Web服务方式 - 合同优先或合同最后?

Mar*_*nor 13 web-services contract-first

哪种是开发Web服务的更好方法; 合同第一或合同最后?
各有哪些优缺点?

你有哪些经验?

编辑 这个问题是关于Web服务的实现(读取:SOAP)问题是实现类是否应该首先编码,WSDL和XSD模式是从那里生成的(最后合同)还是首先编写的WSDL和XSD模式以及生成的实现类(合同优先)

Nat*_*han 8

合同优先是普遍接受的"最佳实践".

它使您非常清楚服务的生产者和消费者确切需要什么和期望什么.当您开始尝试转换java类型 - > xml类型时,这一点变得尤为重要.您还可以在不同的Web服务中重用模式.


Arc*_*ano 6

我用过这两种方法.我的建议是使用契约优先模式,但首先编写 WSDL 代码.

编写WSDL文件有许多奇怪的细微差别,如绑定,端口等.我宁愿用工具而不是手工完成.有一些工具可以帮助你做到这一点,但没有一个比这更简单

@WebService
public ...

至少您可以验证您的部署.

对于模式,我首先建议了契约,因为XML Schema语言比Java中描述的要丰富得多.我通常给出的一个例子是,XML Schema可以限制字符串的大小并应用正则表达式模式.在Java和注释中执行此操作看起来有点麻烦.

首先将模式作为契约的另一个优点是存在将模式文件转换为HTML文档的工具.

XJC工具可以生成必需的类文件.但是,我只建议在开始时这样做.

最后,您应该获取生成的WSDL文件并使用它.这样你就可以使用wsimport并验证从WSDL到Schema的整个过程是否有效.

您可以使用@WebService实现中的wsdlLocation属性部署WSDL文件,并且当用户从服务器请求WSDL时,应用程序服务器将为您修复绑定数据,但您仍保留注释.否则,您的注释将不会出现在请求的WSDL文件中.