在開始討論這個話題之前我們先來認識一下傳統的開發模式。
OSI網絡結構的七層模型
各層的具體描述如下:
第七層:應用層 定義了用于在網絡中進行通信和數據傳輸的接口 - 用戶程式;提供標準服務,比如虛擬終端、文件以及任務的傳輸 和處理;
第六層:表示層 掩蓋不同系統間的數據格式的不同性; 指定獨立結構的數據傳輸格式; 數據的編碼和解碼;加密和解密;壓縮和 解壓縮
第五層:會話層 管理用戶會話和對話; 控制用戶間邏輯連接的建立和掛斷;報告上一層發生的錯誤
第四層:傳輸層 管理網絡中端到端的信息傳送; 通過錯誤糾正和流控制機制提供可靠且有序的數據包傳送; 提供面向無連接的數 據包的傳送;
第三層:網絡層 定義網絡設備間如何傳輸數據; 根據唯一的網絡設備地址路由數據包;提供流和擁塞控制以防止網絡資源的損耗
第二層:數據鏈路層 定義操作通信連接的程序; 封裝數據包為數據幀; 監測和糾正數據包傳輸錯誤
第一層:物理層 定義通過網絡設備發送數據的物理方式; 作為網絡媒介和設備間的接口;定義光學、電氣以及機械特性。
在上述7層中,http協議是應用層協議。HTTP協議是超文本傳送協議(HyperText Transfer Protocol)的縮寫,它是萬維網(World Wide Web,www,也簡稱為Web)的基礎。HTTP協議設計之初就是為了實現Web的想法。HTTP協議位于TCP/IP協議棧的應用層。基于HTTP協議的客戶/服務器模式的信息交換過程,分四個過程:建立連接、發送請求信息、發送響應信息、關閉連接。
而關于RPC的基本概念介紹如下:
英文原義:Remote Procedure Call Protocol
中文釋義:(RFC-1831)遠過程調用協議
注解:一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的應用程序更加輕易。
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息的到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用過程接收答復信息,獲得進程結果,然后調用執行繼續進行。
RPC信息協議由兩個不同結構組成:調用信息和答復信息。
二者的聯系是:
RPC OVER HTTP
Microsoft RPC-over-HTTP 部署(RPC over HTTP)允許RPC 客戶端安全和有效地通過Internet 連接到RPC 服務器程序并執行遠程過程調用。這是在一個名稱為RPC-over-HTTP 代理,或簡稱為RPC 代理的中間件的幫助下完成的。
RPC 代理運行在IIS 計算機上。它接受來自Internet 的RPC 請求,在這些請求上執行認證,檢驗和訪問檢查,如果請求通過所有的測試,RPC 代理將請求轉發給執行真正處理的RPC 服務器。通過RPC over HTTP,RPC 客戶端不和服務器直接通信,它們使用RPC 代理作為中間件。
關于xml-rpc
1.1. xml rpc簡介
xml rpc是使用http協議做為傳輸協議的rpc機制,使用xml文本的方式傳輸命令和數據。
一個rpc系統,必然包括2個部分:1.rpc client,用來向rpc server調用方法,并接收方法的返回數據;2.rpc server,用于響應rpc client的請求,執行方法,并回送方法執行結果。
1.2. xml rpc的可用版本
xml rpc client和xml rpc server都有很多版本的實現。一般而言,一個實現版本都會同時實現client/server。但由于都滿足xml rpc規范,從理論上講,任何一個版本的rpc client實現與任何一個版本的rpc server都能配套使用。
更進一步,由于xml rpc以xml文本的方式,使用http協議傳輸,所以與編程語言無關。例如:rpc client的已實現版本包括了:perl,php,python,c/c++,java,等等;rpc server的實現語言包括perl,java,等。
同一種編程語言所實現的版本也不止一個。例如java版的實現有:Marque的xmlrpc實現(http://xmlrpc.sourceforge.net/),apache的xmlrpc 實現(http://ws.apache.org/xmlrpc/)
1.3.xmlrpc的工作原理
完整的需要參考xmlrpc規范(http://www.xmlrpc.com/spec)
簡單描述:
rpcclient的工作原理:rpcclient根據URL找到rpcserver -> 構造命令包,調用rpcserver上的某個服務的某個方法 -> 接收到rpcserver的返回,解析響應包,拿出調用的返回結果。
rpcserver的工作原理:啟動一個webserver(在使用內置的webserver的情況下) -> 注冊每個能提供的服務,每個服務對應一個Handler類 ->進入服務監聽狀態。
-
數據傳輸
+關注
關注
9文章
1931瀏覽量
64725 -
HTTP
+關注
關注
0文章
510瀏覽量
31358 -
RPC
+關注
關注
0文章
111瀏覽量
11542 -
OSI
+關注
關注
0文章
82瀏覽量
15440
發布評論請先 登錄
相關推薦
評論