主要是思維方式的不同:
顯然,RPC是以方法調(diào)用的方式描述WebSerivce的,也就是說,你要說清楚調(diào)用的那個方法,以及各個參數(shù)的名稱和值。要描述這些東東,SOAP消息就要有一個統(tǒng)一的規(guī)范,指出那一部分是方法名,哪個部分是參數(shù),哪個部分是返回值。換句話說,RPC方式調(diào)用的SOAP消息格式是有章可循的,固定的。(比如說,每個Parameter必須對應(yīng)一個Part,Part的name必須和參數(shù)名一致)。
而Document則是以文檔傳輸?shù)姆绞矫枋鯳ebService,只要你的SoapBody里面是一個可以用Schema描述的合法的Xml文檔就行了,對具體的格式?jīng)]有什么要求(Schema要在WSDL里面寫)。
可以看出,Document形式要更加靈活——尤其是需要傳輸特定格式的Xml文檔的時候,而RPC的Soap消息實際上也可以用Document形式模擬(只要Schema定義得當(dāng))。所以目前Document方式應(yīng)用更廣泛一些(也是.NET里面的缺省方式)。
對Namespace,我覺得兩者應(yīng)該沒有明顯的區(qū)別。主要是RPC通常與Encoding模式結(jié)合使用,這就要引用Soap的namespace了;而Document只要引用XmlSchema的Namespace定義類型就成了。