随着许多事物涉及 Web 服务,出现了一些赞成和反对 WSDL 的激烈论调(甚至在 WSDL 2.0 火上浇油之前)。一个主要反对 WSDL 的观点是与为服务书写 WSDL 有关的繁琐性和复杂性。但是, Relax-WS 项目正试图为之提供一个解决方案。正如项目页面如此恰当的描述:
WSDL 是 SOA 的关键技术,但是创建和编辑这些文件就像使用镊子将一碗面条中的所有面条弄直一样充满“乐趣”。
他们的想法是通过增加对服务、端口、操作和消息的支持来扩展 Relax-NG Compact Syntax 。该项目意图鼓励开发者一开始就考虑 WSDL,作为服务契约的一部分,而不是作为事后补充: > 程序员从一个 WSDL 文件开始,作为构建的一部分,会产生由一个或多个类实现的服务接口。这里的挑战在于创建 WSDL!
例如,一个相对简单的服务可以定义如下:
#<br></br># This is "hello world" in relax-ws.<br></br>#<br></br>service Hello {<p> port {</p><br></br> operation SayHello {<br></br> in {<br></br> element name {xsd:string}<br></br> }<p> out {</p><br></br> element message {xsd:string} <br></br> }<p> }</p><p> }</p><br></br>}<br></br>
然后,Relax-WS 将自动产生关联的 WSDL。但是,这对于把开发者和 WSDL 隔离开来真的有帮助吗?它足以让一些 WSDL 批评家沉默吗?正如 James Strachan 的博客中的一个评论所说的: > 这无疑很酷,但是这不是同样具有它声称要修正问题的同样缺点吗:“代码驱动开发……对于开发很快,但是容易导致引入平台特定的特性,这使得接口不能被跨平台的客户端使用。”不要误解我,我瞧不上 WSDL,但是我认为由 Java 或一个 relaxng 语法自动产生 WSDL 都会导致“不可用的跨平台客户端。”
评论