这两种交互方式应该在应用架构的设计初始就应该详加考虑,因为它将在很大程度上决定系统的耦合程度。
RPC(Remote Procedure Call)本质上就是远程方法的调用。尽管Webservice是基于XML的但是你仍然可以使用远程方法调用这种模式来进行Webservice的实现,尤其是在那种简单的请求相应的模型中。在这个过程中,传输中的XML文件所描述的更多是有关远程方法的信息,比如方法名,方法参数等等。
而文档交换方式,与RPC相比较在XML文件中不是做远程方法的映射,而是一份完整的自包含的业务文档,当Service端收到这份文档后,先进行预处理(比如词汇的翻译和映射),然后再构造出返回消息。这个构造返回消息的过程中,往往不再是简简单单的一个方法调用,而是多个对象协同完成一个事务的处理,再将结果返回。
这两种方式的区别,类似与打电话和发邮件的不同处理方法。在目前,对于第一种方法提供了很多自动化的工具使得远程方法的调用能够很容易的完成,而后一种方法缺少一系列工具的支持,需要开发者手工完成。
尽管如此,在此还是推荐使用文档交换的方式。由于它在以下方面具有RPC所不具备的优点。
使用文档方式,你可以充分利用XML文件的功能去描述和验证一份业务文档,而在RPC模型中XML仅仅被用于描述方法的信息。
使用文档方式,在客户的Service的提供者之间不再需要紧密的约定,而RPC模型需要客户和Service的提供者紧密相连,一旦方法发生变化,客户端就需要做相应的改动。这不符合低耦合系统的要求,而在文档交换方式中则灵活的多。
由于业务数据是自包含的,显然文档模型更利于采用异步处理。
注意:当使用Jax-WS RI工具生成客服端代码时,采用RPC模式时@SOAPBinding(style = SOAPBinding.Style.RPC) ,是不能书写异步客服端调用
请阅读:我应该采用哪一种 WSDL 样式?
http://www-128.ibm.com/developerworks/cn/webservices/ws-whichwsdl/
相关推荐
SOAP绑定有两大数据样式:RPC(Remote Procedure Call)和Document。 1. RPC样式: - **RPC/Encoded**:此样式将方法名映射为SOAP消息中的根元素,同时在SOAP消息中编码参数类型信息。WSDL示例中展示了`...
通过这个接口,西门子RPC可以与主机计算机进行通信,实现数据交换和控制指令的传输。 1PLC/NCK Interface 1PLC/NCK Interface是西门子RPC开发功能文档中的一部分。这是一个专门用于PLC(Programmable Logic ...
通过示例说明document/literal、document/literal(wrapped)、rpc/encoded、rpc/literal样式的web服务对应的soap消息格式,对于理解webservice有很大好处,尤其是根据wsdl构造soap消息,非常有价值。
RPC/encoded风格更像传统的远程方法调用,而document/literal风格则更加关注数据,与具体的编程模型解耦。document/literal模式在Web服务中提倡使用XML Schema定义数据类型,使得服务更易于互操作和理解。 在这个...
DTD(Document Type Definition)定义了XML文档的结构,本书提供了XML-RPC请求和响应的DTD,确保文档的有效性和一致性。 #### 四、Java中的XML-RPC客户端-服务器通信 ##### 4.1 为什么选择XML-RPC for Java? Java...
帧-RPC 使用postMessage在iframe和Windows之间进行rpc,无需序列化 例子 公开页面中将作为iframe加载的方法: var RPC = require ( 'frame-rpc' ) ; var origin = document . referrer ; var rpc = RPC ( window ,...
Slate可帮助您创建美观,智能,响应Swift的API文档。 上面的示例是使用Slate创建的。 在检查。特征简洁,直观的设计—使用Slate,API的描述位于文档的左侧,而所有代码示例均位于右侧。 受和API文档启发。...
rpc.py 一个基于ASGI / WSGI的快速而强大的RPC框架。 基于WSGI / ASGI,您可以将rpc.py服务器部署到任何服务器,并使用http2获得更好的性能。 并且基于httpx对多种http协议的支持,客户端还可以使用http / 1.0,...
OpenRPC测试覆盖率 该工具旨在帮助您根据API测试您的OpenRPC文档。 请问你需要帮忙或者有任何疑问吗? 加入我们的 ! 问题 即使编写了OpenRPC文档,您也要测试OpenRPC文档是否确实代表了实际的API。 解决方案 为...
RPC(Remote Procedure Call)则表示远程过程调用,它使得客户端能够像调用本地函数一样调用服务器上的方法。AjaxRPC结合两者,实现了Web应用的无刷新通信和远程调用。 2. **工作原理**: - **客户端**:...
**六、PECL与PEAR的区别** PECL(PHP Extension Community Library)是PHP的C扩展库,主要提供对PHP内核的扩展功能,而PEAR则更多地关注PHP的高级应用层。两者相辅相成,共同丰富了PHP的生态系统。 **七、总结** ...
主要存在两种风格:RPC(Remote Procedure Call)和Document。 1. RPC风格:在RPC风格中,SOAP消息看起来像一个远程调用,参数以名/值对的形式出现。这种风格更接近于传统的远程过程调用,使得代码更易于阅读和理解...
在Web服务中,有两种主要的消息交换模式:RPC(Remote Procedure Call)风格和Document风格。RPC风格类似于函数调用,将参数编码为XML并发送到服务端,然后返回结果。而Document风格则更加灵活,它将整个XML文档作为...
virtual HRESULT STDMETHODCALLTYPE startDocument(void); virtual HRESULT STDMETHODCALLTYPE endDocument(void); virtual HRESULT STDMETHODCALLTYPE startPrefixMapping( /* [in] */ wchar_t __RPC_FAR ...
- **Style**: 可以是 `RPC` 或 `Document`。 - **RPC (Remote Procedure Call)**: 表示调用远程过程的方式,其中`<soap:body>`元素包含了一个封装元素,表示被调用的方法名称及其参数和返回值。 - **Document**: ...
5. **提交作业**:`JobClient` 通过 RPC 机制将作业的基本信息(如 `jobID` 和 HDFS 文件目录)发送给 `JobTracker`。 6. **作业排队**:`JobTracker` 将接收到的作业信息放入作业队列等待执行。一旦有可用资源,`...
四种组合分别是`rpc/encoded`、`rpc/literal`、`document/encoded`和`document/literal`。`document/encoded`由于复杂性和互操作性问题,通常不被推荐使用。`rpc/encoded`虽然可以表示复杂的对象图和多态数据,但也...
在本文中,我们将深入探讨`Laravel开发-laravel-exist-db-client`这一项目,它是一个专为Laravel5设计的XML RPC客户端,用于与eXist数据库进行交互。eXist是一个开源、纯Java构建的XML数据库和XML应用程序服务器,而...
此外,它也常用于XML-RPC服务、SOAP消息处理等场景。 总结,DOM4J-1.6.1版本是一个强大且易用的XML处理工具,它简化了XML文档的操作,提供了高效、灵活的解决方案,使得开发者能够更好地处理XML数据。无论是新手...