Web Service中RPC和Document的区别

来源:互联网 发布:算法之美 中文版 编辑:程序博客网 时间:2024/04/29 19:04

来自国外论坛的通俗易懂的回答: 

With Document/Literal encoding, the payload of a message is an XML fragment that can be validated against the corresponding XML schema, for instance: 

view plaincopy to clipboardprint?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <soap:Envelope  
  3.     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  
  4.     xmlns:mi="http://www.somedomain.com/xyz/message-id"  
  5.     xmlns:proc="http://www.somedomain.com/xyz/processed-by"  
  6.     xmlns:po="http://www.books.com/purchase">  
  7.     <soap:Header/>  
  8.     <soap:Body>  
  9.         <po:purchaseOrder orderDate="2008-09-22"  
  10.             xmlns:po="http://www.somedomain.com/xyz/PO">  
  11.             <po:accountName>Books.com</po:accountName>  
  12.             <po:accountNumber>923</po:accountNumber>  
  13.             ...  
  14.             <po:book>  
  15.                 <po:title>Air Guitars In Action</po:title>  
  16.                 <po:quantity>300</po:quantity>  
  17.                 <po:wholesale-price>14.99</po:wholesale-price>  
  18.             </po:book>  
  19.         </po:purchaseOrder>  
  20.     </soap:Body>  
  21. </soap:Envelope>  


RPC (remote procedure call)/Literal more closely corresponds to remote procedure invocations. 
For instance, the method: public float getBookPrice(String inISBN) would correspond to the following RPC/Literal request message: 
view plaincopy to clipboardprint?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <soap:Envelope  
  3.  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  
  4.  xmlns:sd="http://www.somedomain.com/xyz/BookQuote">  
  5.    <soap:Body>  
  6.       <sd:getBookPrice>  
  7.           <isbn>0321146182</isbn>  
  8.       </sd:getBookPrice>  
  9.    </soap:Body>  
  10. </soap:Envelope>  


There is a SOAP standard XML format for RPC-style messaging. However, use and implementation of this standard is optional. 
Hope this makes things more clear!

 

One important difference between RPC and Document web services is that with RPC web services, XML schema will only be created for complex type parameters. It is thus not possible to validate the entire XML fragment contained in the SOAP body. 
With Document web services, however, the XML schema needs to define the ENTIRE XML fragment contained in the SOAP body. Consequently, the entire message can be validated against the XML schema.