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

物聯(lián)網(wǎng)通信協(xié)議的種類(lèi)與其區(qū)別
HTTP和RPC的區(qū)別與聯(lián)系

通信協(xié)議中的HTTP、TCP、UDP你了解多少(上)

通信協(xié)議的作用、類(lèi)型及優(yōu)缺點(diǎn)
RPC接口與HTTP接口哪一個(gè)更好?

基于Client/Server架構(gòu)的HTTP接口和RPC接口

什么是HTTP協(xié)議?什么是RPC協(xié)議?二者如何選擇使用?

RPC 和 REST 區(qū)別是什么

IOT(物聯(lián)網(wǎng))的七大通信協(xié)議之Http協(xié)議

評(píng)論