JWS支持RPC绑定样式也支持Document绑定样式,同时Document绑定样式为默认值。在这两种绑定样式中,依照Web服务基本概要(WS-I Basic Profile)的基本要求,这两种绑定样式只可以采用literal编码方式。在服务绑定样式上究竟选择RPC还是Document一直都是争论的话题。不管怎样,Document绑定样式,尤其是包装情况下,正在很快地被人们所认可。因此接下来简要地探讨这两种绑定样式选择上的权衡。
下面是RPC样式的一些优点:
由于已经有了类型定义,自动生成的WSDL文档非常精简。
WSDL文档中的消息可以直接反映出对应的基础web服务操作的名称,也就是在基于java语言的web服务中@WebMethod所注解的方法。因此从WSDL文档中人们可以直接获取服务操作的名称。
由于不需要承载更多类型及编码信息,消息的传输往往是高效的。
下面是RPC样式的一些缺点:
由于WSDL中没有类型定义部分,因此不能够提供XSD文档来校验SOAP消息体。
同样由于没有XSD来定义数据类型,服务能够使用的数据类型有限。因此服务只是局限于一些相对简单的类型,比如整数、字符串、日期、数组等。
以此样式实现的java服务可能在其他语言平台下无法使用,这样也就违背了web服务的互用性原则。同样也就不会有来自web服务社区和WS-I小组的长期支持了。
下面是Document样式的一些优点:
可以利用WSDL文档类型部分的XSD文档直接来验证SOAP消息体。
XML模式语言除了支持整数、字符串及日期等这些简单数据类型之外,还支持任意复杂的类型,因此这种样式的web服务所使用的数据类型不受限制。
只要在XSD中定义了明确的数据结构,如何构建SOAP消息体具有很大的灵活性。
包装行为吸取了RPC样式的一个重要优点,即RPC样式中SOAP消息体可以直接通过与之关联的服务操作名称来命名,同时又摒弃了RPC样式的不足之处。
下面是Document样式的不足之处:
在非包装版本中,SOAP消息中没有提供服务操作的名称,一些特定的程序代码在分发消息时可能会变得复杂。
包装版本使得服务调用的复杂度有所增加,尤其是在API级别。