RPC全稱爲Remote Procedure Call,翻譯過來爲"遠程過程調用"。主要應用於不同的系統之間的遠程通信和相互調用。
比如有兩個系統,一個是PHP寫的,一個是JAVA寫的,而PHP想要調用JAVA中的某個類的某個方法,這時候就需要用到RPC了。
怎麼調?直接調是不可能,只能是PHP通過某種自定義協議請求JAVA的服務,JAVA解析該協議,在本地實例化類並調用方法,然後把結果返回給PHP。
這裏我們用PHP的socket擴展來創建一個服務端和客戶端,演示調用過程。
RpcServer.php代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
RpcClient.php代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
然後分別運行上面兩個腳本(注意,php要添加環境變量)
1 2 |
|
結果如下:
Test.php代碼如下:
1 2 3 4 5 6 7 8 9 |
|
目錄結構如下:
上面我們自定義的協議,可以隨意修改,只要是客戶端和服務端兩邊能夠統一併能解析。
客戶端通過請求服務端,把要調用的類,方法和參數傳遞給服務端,服務端去通過實例化調用方法返回結果。