RPC:Remote Produce Call 是這幾個單詞的縮寫。
我們直譯過來就是遠程過程調用。對,這種技術是實現遠端的過程調用,遠端意味著跨主機、可能跨平臺、跨網絡、跨進程是毫無疑問的事情了,所以我們也可以使用RPC技術來實現本機上一個進程中方法調用另一個進程中的方法。使用這種技術客戶機可以調用遠端的服務器來執行工作,執行完后把結果集返回來。但是這種復雜性對用戶來說是透明的,用戶可以是系統的使用者,也可能是開發高層應用邏輯的開發員。
RPC是怎么工作的呢?我就在下面做了個草圖來表達一下。以一個Hello過程來描述。
Client Server
Hello
|
|
|
|
Hello |
Client Stub |
|
|
|
Server Stub |
Client Runtime Liberary |
|
|
|
Server RuntimeLiberary |
Transport |
|
|
|
Transport |
客戶調用過程如下:
1:客戶端應用程序在客戶機發出方法調用Hello。
2:Client Stub接受應用程序的方法調用,并把請求、數據組織成標準格式給Client Runtime Liberary層。
3:Client Runtime Liberary通過指定的通道(可能是管理、網絡等)發送數據及請求。
服務接收過程如下:
1:Server RuntimeLiberary負責實時地從網絡接收數據、請求。把它交給Server Stub。
2:Server Stub 負責把數據譯成本地格式并進一步調用應用程序實現的服務。
3:執行服務Hello.打印出"Hello World" 。
服務端服務執行完后的返回過程:
1:服務把返回數據給Server Stub 。
2:Server Stub 把數據轉換成標準格式給Server RuntimeLiberary。
3:Server RuntimeLiberary 則向客戶方發送結果數據。
客戶方的接受過程
1:Client Runtime Liberary接受數據交給Client Runtime Liberary。
2:Client Runtime Liberary把標準格式的數據譯成本機、本地語言(是開發語言)的數據。并進而交給客戶程序。
3:客戶程序收到服務端處理后的信息了。客戶如何利用這個信息呢?哦!這是他的事...................
RPC模型最初是由SUN公司提出來的,到在現在有多種RPC模型。我這里將要討論的RPC知識是microsoft RPC模型。