分布式通信的幾種方式(EJB料按、RMI奄侠、RPC、JMS载矿、web service雜談)

http://blog.csdn.net/jiaolong724/article/details/21089347

RPC(remote produce call)
RPC是遠(yuǎn)程過程調(diào)用協(xié)議垄潮,它是基于C/S模型調(diào)用的機(jī)制,客戶機(jī)向服務(wù)器端發(fā)送調(diào)用請求等待服務(wù)器應(yīng)答闷盔,是一種典型的請求應(yīng)答機(jī)制弯洗,大致過程可以理解為本地分布式對象向本機(jī)發(fā)請求,不用自己編寫底層通信本機(jī)會通過網(wǎng)絡(luò)向服務(wù)器發(fā)送請求逢勾,服務(wù)器對象接受參數(shù)后牡整,經(jīng)過處理再把處理后的結(jié)果發(fā)送回客戶端。
它是早期的支持分布式一些溺拱,缺點rpc是面向過程的遠(yuǎn)程調(diào)用逃贝,不支持面向?qū)ο螅袁F(xiàn)在用的人就少了迫摔。
不支持異步調(diào)用
RMI(remote method invocation)
rmi也是遠(yuǎn)程方法調(diào)用沐扳,似乎和RPC一樣都是調(diào)用遠(yuǎn)程的方法,我們可以把RMI看作是用java語言實現(xiàn)了RPC協(xié)議句占,由于RPC不支持對象通信沪摄,這也是RMI比RPC的優(yōu)越之處,支持對象傳輸纱烘。
它遵循的不是SOAP協(xié)議杨拐,而是JRMP(java remote message protocol)轉(zhuǎn)為java對象所制定的一個協(xié)議,可以運行在任何用java語言寫的系統(tǒng)上擂啥,具有跨平臺特性哄陶,它不能跨語言。
既然用只支持java那么它也有了java對象的很多特性哺壶,如果垃圾回收奕筐、面向?qū)ο蟮取?br> RMI 采用stubs (客戶機(jī))和 skeletons (框架)來進(jìn)行遠(yuǎn)程對象(remote object)的通訊。stub 充當(dāng)遠(yuǎn)程對象的客戶端代理变骡,有著和遠(yuǎn)程對象相同的遠(yuǎn)程接口,遠(yuǎn)程對象的調(diào)用實際是通過調(diào)用該對象的客戶端代理對象stub來完成的芭逝,效果和調(diào)用本地對象一樣塌碌。
傳輸?shù)臄?shù)據(jù)一般是java對象,而不是XML格式的數(shù)據(jù)旬盯。
優(yōu)點:支持分布式對象台妆、跨平臺翎猛,stubs/skeletons機(jī)制;缺點:不能跨語言接剩。
JMS(java remote service)
jms是在各個java類(包括ejb類)之間傳遞消息的中間件切厘,好比給我們送信的郵遞員,在各個人之間收發(fā)信件懊缺。
支持兩種消息模型P2P和pub/stub疫稿,即點對點和發(fā)布訂閱模型。
傳輸?shù)氖且环N消息移植機(jī)制鹃两,將消息從一個客戶機(jī)移動到另一個終端遗座。
優(yōu)點:支持異步通信、消息produce和recept松耦合俊扳。
EJB(enterprise java bean)
ejb是java EE 中的一個規(guī)范途蒋,該規(guī)范描述了分布式應(yīng)用程序需要解決的問題,例如事務(wù)處理馋记、安全号坡、日志、分布式等梯醒,而同時呢宽堆,sun公司也實現(xiàn)了自己定義的這一個標(biāo)準(zhǔn),相當(dāng)于自己頒布一個標(biāo)準(zhǔn)然后冤馏,又給出了實現(xiàn)供別人使用日麸,實現(xiàn)以很多API的方式提供給用的人。
ejb是按照java服務(wù)器接口定義的java類逮光,可以理解為一個特殊的java類代箭,放在容器里容器可以幫助該類管理事務(wù)、分布式涕刚、安全等嗡综,一般小的程序不會用到,只有大型分布式系統(tǒng)才會用到ejb杜漠,既然ejb是一個java類或是一個組件极景,顆粒較小,這也是與Webservice的區(qū)別之一驾茴,下面會說到盼樟,它就可以被其它一個或多個模塊調(diào)用。
包含了三種類型的Bean锈至,可以通過注釋JPA一個規(guī)范來標(biāo)記,其中有一種Bean晨缴,叫MDB消息驅(qū)動bean,它的通信機(jī)制涉及到了JMS協(xié)議峡捡。
ejb可以進(jìn)行遠(yuǎn)程調(diào)用击碗,但是不能夠跨語言筑悴,ejb是同步調(diào)用,而平時我們說的的ejb異步調(diào)用指的是ejb的MDB異步通信稍途。
Web Service
Web service是一種網(wǎng)絡(luò)間跨平臺阁吝、跨語言的分布式系統(tǒng)間通信的標(biāo)準(zhǔn)。傳輸?shù)臄?shù)據(jù)位XML械拍、json等格式的數(shù)據(jù)突勇,應(yīng)用范圍廣。
Web Service大體上分為5個層次:

  1. Http傳輸信道
  2. XML的數(shù)據(jù)格式
  3. SOAP封裝格式
  4. WSDL的描述方式
  5. UDDI UDDI是一種目錄服務(wù)殊者,企業(yè)可以使用它對Webservices進(jìn)行注冊和搜索

EJB與JMS的關(guān)系
它們其實是沒有多大關(guān)系的与境,它們都是java EE的規(guī)范,ejb的一種類MDB實現(xiàn)了JMS規(guī)范猖吴,當(dāng)然是先JMS規(guī)范的不止有ejb的mdb摔刁,比如apache ActiveMQ也實現(xiàn)了JMS規(guī)范,我們平時用的是實現(xiàn)了JMS的產(chǎn)品海蔽,而不是JMS規(guī)范共屈。

Web service與EJB
對這兩個常常有點迷惑人,因為他們都實現(xiàn)了分布式應(yīng)用調(diào)用党窜,雖然他們很相似但是還是有很多區(qū)別的拗引,首先通信協(xié)議是不一樣的,ejb采用rmi-iiop協(xié)議幌衣,Web service利用http協(xié)議傳輸數(shù)據(jù)矾削,優(yōu)點常識的都知道http協(xié)議支持的較廣泛,從這點來看Web Service層次要高一些豁护、俗話說站得高看得遠(yuǎn)哼凯。
Webservice主要關(guān)注于解決異構(gòu)系統(tǒng)、不同語言系統(tǒng)通信楚里,其關(guān)注的是分布式服務(wù)開發(fā)断部、著手點要高、站的角度高班缎,而ejb可以看做是分布式編程平臺蝴光,通過容器和組件,簡化了程序開發(fā)达址、調(diào)試和部署等它關(guān)注的是分布式組件開發(fā)蔑祟,粒度小。
Web service可以看做是異構(gòu)系統(tǒng)沉唠、異構(gòu)語言系統(tǒng)間通信的一個標(biāo)準(zhǔn)做瞪,而ejb只屬于J2EE規(guī)范的一部分。
ejb底層用rmi-iiop協(xié)議進(jìn)行通信,防火墻會阻止装蓬;
web service是基于http協(xié)議進(jìn)行通信,防火墻不會阻止纱扭。

SOA與Web Service
SOA是面向服務(wù)體系架構(gòu)牍帚,是一種編程思想,SOA不是Web Service乳蛾,WebService是目前最適合實現(xiàn)SOA的技術(shù)暗赶。
小結(jié)
這些通信標(biāo)準(zhǔn)或?qū)崿F(xiàn)各有個的優(yōu)點和缺點,在實際使用中根據(jù)具體情況合理選擇肃叶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹂随,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子因惭,更是在濱河造成了極大的恐慌岳锁,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹦魔,死亡現(xiàn)場離奇詭異激率,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)勿决,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門乒躺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人低缩,你說我怎么就攤上這事嘉冒。” “怎么了咆繁?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵讳推,是天一觀的道長。 經(jīng)常有香客問我么介,道長娜遵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任壤短,我火速辦了婚禮设拟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘久脯。我一直安慰自己纳胧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布帘撰。 她就那樣靜靜地躺著跑慕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上核行,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天牢硅,我揣著相機(jī)與錄音,去河邊找鬼芝雪。 笑死减余,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惩系。 我是一名探鬼主播位岔,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堡牡!你這毒婦竟也來了抒抬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晤柄,失蹤者是張志新(化名)和其女友劉穎擦剑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體可免,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡抓于,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了浇借。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捉撮。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖妇垢,靈堂內(nèi)的尸體忽然破棺而出巾遭,到底是詐尸還是另有隱情,我是刑警寧澤闯估,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布灼舍,位于F島的核電站,受9級特大地震影響涨薪,放射性物質(zhì)發(fā)生泄漏骑素。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一刚夺、第九天 我趴在偏房一處隱蔽的房頂上張望献丑。 院中可真熱鬧,春花似錦侠姑、人聲如沸创橄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妥畏。三九已至邦邦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間醉蚁,已是汗流浹背燃辖。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留馍管,地道東北人郭赐。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像确沸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俘陷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容