代码之家  ›  专栏  ›  技术社区  ›  Martin OConnor

哪种方法更好地处理Web服务——先签约还是最后签约?

  •  12
  • Martin OConnor  · 技术社区  · 15 年前

    开发Web服务的更好方法是:先签约还是后签约?
    各有哪些优点和缺点?

    你有哪方面的经验?

    编辑 这个问题是关于Web服务的实现(阅读:SOAP) 问题是,是否应该首先对实现类进行编码,并首先编写从该实现类(最后一个契约)生成的WSDL和XSD模式,还是先编写WSDL和XSD模式,然后生成实现类(首先契约)

    3 回复  |  直到 14 年前
        1
  •  8
  •   Nathan    15 年前

    合同优先是公认的“最佳实践”。

    它使您对服务的生产者和消费者都非常清楚,究竟需要什么以及期望什么。当您开始尝试转换Java类型-gt;xml类型时,这一点就变得尤为重要。您还可以跨不同的Web服务重用模式。

        2
  •  6
  •   Archimedes Trajano    14 年前

    两种方法我都用过。我的建议是使用 合同第一 模式,但 代码优先 WSDL。

    编写WSDL文件有很多奇怪的细微差别,比如绑定、端口等等。我宁愿用工具而不是手工来完成。有一些工具可以帮助实现这一点,但它们中没有一个比

    @WebService
    public ...

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

    对于这个模式,我建议 合同第一 因为XML模式语言比Java中描述的语言要丰富得多。我通常给出的一个例子是,XML模式可以限制字符串的大小并应用正则表达式模式。在Java和注释中这样做看起来有点麻烦。

    首先将模式作为契约执行的另一个好处是,存在将模式文件转换为HTML文档的工具。

    XJC工具可以生成必要的类文件。不过,我只建议在开始时这样做。

    最后,您应该获取生成的WSDL文件,并改为使用该文件。这样,您就可以使用wsimport并验证从WSDL到模式的整个过程是否有效。

    通过在@webservice实现中使用wsdllocation属性,可以使用WSDL文件进行部署,当用户从服务器请求WSDL时,应用程序服务器将为您修复绑定数据,但您仍然保留注释。否则,您的注释将不会出现在请求的WSDL文件上。

        3
  •  0
  •   Charlie Martin    15 年前

    我怀疑答案是肯定的“视情况而定”。

    问题是如果你建立 出版 你的合同,你受它约束。这使得改变更加困难。不可能,但更难。

    另一方面,如果您对Schemata等感到满意,那么处理契约比处理代码更快,这样您可以对契约进行一些增量更改。

    是否也有工具可以从WSDL生成代码框架?我几乎肯定有。如果是这样的话,那么您最好将模式设置为“代码”项,并从中生成代码。

    推荐文章