用SOAP進行遠端過程呼叫(RPC)

2021-04-17 01:01:10 字數 2480 閱讀 5908

譯者注:本人最近一直在學習.net,對xml及微軟倡導的soap

協議更是情有獨衷。因此為了促進自己的學習,也為了和志同道合者進行交流,翻譯這篇文章。這是我第一次翻譯文章,措詞和對專業術語的把握不一定恰當,也不知道能不能發表,如果能有幸獻醜,望討論和指教。

下面是乙個關於用簡單物件訪問協議soap

(****** object access protocol)進行遠端過程rpc

(remote procedure call)的例子。傳送往web 伺服器(the web service)請求遠端服務的soap

訊息是基於http協議的,並且是採用xml文件格式。web伺服器處理接受到的根據soap

協議封裝的請求(request),然後同樣回送給客戶端以soap

協議封裝的應答(response)。

上面這個soap

訊息包括以下幾個基本元素:

1 報套(envelope)

2 報頭(header)

3 報體(body)

所有的soap

訊息都封裝在報套(envelope)這樣乙個元素之內。為確定範圍,每個元素應有命名空間。元素的成員在命名空間內可以被訪問。之所以需要命名空間,是為了避免在不同的地方(譯者注:此處「不同的地方」,我的理解是不同的web伺服器)有相同的元素名而引起的混亂。

在上面這個soap

訊息中,為了進行許可權認證,報頭元素傳送了使用者的email位址。報頭中的「mustunderstand」屬性使得web伺服器要進行許可權認證。即處理這個soap

訊息的web伺服器必須要理解報頭中的這樣乙個屬性引數。這個屬性引數等於1表明,web伺服器在進行處理之前進行許可權確認是強制性的,否則,web伺服器將不處理這樣乙個訊息。

報體元素(body element)包括乙個方法,此方法在web伺服器上。這個方法在web伺服器上可以用任何語言進行定義,幷包括3個引數,這3中資料型別在命名空間xsi內被定義(譯者注:在報頭前有這樣一句xsi = "http://www.w3.org/2001/xmlschema-instance,看不太懂的朋友要多看看xml方面的書籍)。如果這樣乙個soap

訊息封裝正確,那麼它啟用web伺服器上的方法firstmethod並返回乙個值。

如果web伺服器在處理這樣乙個訊息過程中發生錯誤,將返回乙個在報體內有fault元素的soap

訊息。僅僅在處理時發生錯誤才傳送這樣乙個訊息。當傳送資料或引數到web伺服器發生錯誤時將顯示正常的http錯誤。任何錯誤的soap

訊息都含有以下四個子元素:

1.faultcode(optional) – 包含發生錯誤的型別

2.faultstring(optional) – 包含發生錯誤的起因

3.faultactor – 包含發生錯誤的伺服器名稱

4.details – 包含2個子元素.

a. message – 包含詳細的錯誤內容

b. errorcode – 錯誤**

當web伺服器執行firstmethod方法成功之後,它返回乙個soap

訊息給客戶端,此訊息當然也是以xml格式封裝。firstmethodresponse元素包含返回的值。任何應答元素名稱都是由呼叫的方法名加上字尾response組成。

這soap

訊息以http協議包傳送到soap.aspx">www.anyserver.com/firstsoap.aspx,web伺服器上的firstmethod方法被啟用。soapaction描述了能被唯一啟用的web服務的uri。

譯者注:朋友們最好到soap/#_toc478383526">http://www.w3.org/tr/soap/#_toc478383526詳細的看一下****** object access protocol (soap) 1.1,我想會對你學習soap有幫助。

遠端過程呼叫

遠端過程呼叫 rpc remote procedure call protocol 遠端過程呼叫協議 它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。為通訊程式之間攜帶資訊資料。採用客戶端 伺服器方式 請求 響應 三種主流的實現方式 rest soap xmlrpc xml...

遠端過程呼叫 RPC

rpc是遠端過程呼叫 remote procedure call 的縮寫。就是一台伺服器上的服務通過引數傳遞的方式呼叫另一台服 務器的服務,並獲取返回結果。比如有兩台伺服器a b,a上的服務想要呼叫b上的函式或方法,由於不在同乙個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料...

Hadoop 遠端過程呼叫

hadoop ipc類圖如下 連線 font size 14px 為了提高通訊效率,連線是可以復用的,通過connectionid來區分不同的連線 class connectionid connectionheader類是客戶端和服務端tcp連線建立之後交換的第一條訊息,包括connectionid...