中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > Java遠程通訊可選技術(shù)及原理
Ajax 的六個誤區(qū) 回到列表 不用組件實現(xiàn)Ajax效果
 Java遠程通訊可選技術(shù)及原理

作者:villa123 時間: 2008-03-10 文檔類型:合作網(wǎng)站提供 來自:CSDN

第 1 頁 Java遠程通訊可選技術(shù)及原理 [1]
第 2 頁 Java遠程通訊可選技術(shù)及原理 [2]
第 3 頁 Java遠程通訊可選技術(shù)及原理 [3]

可選實現(xiàn)技術(shù)

當然,在上面的原理中并沒有介紹到所有的java領(lǐng)域可選的遠程通信協(xié)議了,例如還有EJB采用的ORMI、Spring自己定義的一個簡單的Http Invoker等等。
看完原理后我們再來看看目前java領(lǐng)域可用于實現(xiàn)遠程通訊的框架或library,知名的有:JBoss-Remoting、Spring-Remoting、Hessian、Burlap、XFire(Axis)、ActiveMQ、Mina、Mule、EJB3等等,來對每種做個簡單的介紹和評價,其實呢,要做分布式服務(wù)框架,這些東西都是要有非常深刻的了解的,因為分布式服務(wù)框架其實是包含了解決分布式領(lǐng)域以及應(yīng)用層面領(lǐng)域兩方面問題的。
當然,你也可以自己根據(jù)遠程網(wǎng)絡(luò)通信原理(transport protocol+Net IO)去實現(xiàn)自己的通訊框架或library。

那么在了解這些遠程通訊的框架或library時,會帶著什么問題去學(xué)習呢?

  1. 是基于什么協(xié)議實現(xiàn)的?
  2. 怎么發(fā)起請求?
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
  4. 使用什么傳輸協(xié)議傳輸?
  5. 響應(yīng)端基于什么機制來接收請求?
  6. 怎么將流還原為傳輸格式的?
  7. 處理完畢后怎么回應(yīng)?

JBoss-Remoting

Jboss-remoting是由jboss編寫的一個java領(lǐng)域的遠程通訊框架,基于此框架,可以很簡單的實現(xiàn)基于多種傳輸協(xié)議的java對象的RPC。

直接來回答問題:

  1. 是基于什么協(xié)議實現(xiàn)的?
    JBoss-Remoting是個通訊框架,因此它支持多種協(xié)議方式的通信,例如純粹的socket+io方式、rmi方式、http+io方式等。
  2. 怎么發(fā)起請求?
    在JBoss-Remoting中,只需將需要發(fā)起的請求參數(shù)對象傳入jboss-remoting的InvocationRequest對象即可,也可根據(jù)協(xié)議基于InvocationRequest封裝符合需求的InvocationRequest對象。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    JBoss-Remoting基于Java串行化機制或JBoss自己的串行化實現(xiàn)來將請求轉(zhuǎn)化為對象字節(jié)流。
  4. 使用什么傳輸協(xié)議傳輸?
    支持多種傳輸協(xié)議,例如socket、http等。
  5. 響應(yīng)端基于什么機制來接收請求?
    響應(yīng)端只需將自己的處理對象注冊到JBoss-Remoting提供的server端的Connector對象中即可。
  6. 怎么將流還原為傳輸格式的?
    JBoss-Remoting基于java串行化機制或jboss自己的串行化實現(xiàn)來將請求信息還原為java對象。
  7. 處理完畢后怎么回應(yīng)?
    處理完畢后將結(jié)果對象直接返回即可,jboss-remoting會將此對象按照協(xié)議進行序列化,返回至調(diào)用端。

另外,jboss-remoting支持多種通信方式,例如同步/異步/單向通信等。

Spring-Remoting

Spring-remoting是Spring提供java領(lǐng)域的遠程通訊框架,基于此框架,同樣也可以很簡單的將普通的spring bean以某種遠程協(xié)議的方式來發(fā)布,同樣也可以配置spring bean為遠程調(diào)用的bean。

  1. 是基于什么協(xié)議實現(xiàn)的?
    和JBoss-Remoting一樣,作為一個遠程通訊的框架,Spring通過集成多種遠程通訊的library,從而實現(xiàn)了對多種協(xié)議的支持,例如rmi、http+io、xml-rpc、binary-rpc等。
  2. 怎么發(fā)起請求?
    在Spring中,由于其對于遠程調(diào)用的bean采用的是proxy實現(xiàn),發(fā)起請求完全是通過服務(wù)接口調(diào)用的方式。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    Spring按照協(xié)議方式將請求的對象信息轉(zhuǎn)化為流,例如Spring Http Invoker是基于Spring自己定義的一個協(xié)議來實現(xiàn)的,傳輸協(xié)議上采用的為http,請求信息是基于java串行化機制轉(zhuǎn)化為流進行傳輸。
  4. 使用什么傳輸協(xié)議傳輸?
    支持多種傳輸協(xié)議,例如rmi、http等等。
  5. 響應(yīng)端基于什么機制來接收請求?
    響應(yīng)端遵循協(xié)議方式來接收請求,對于使用者而言,則只需通過spring的配置方式將普通的spring bean配置為響應(yīng)端或者說提供服務(wù)端。
  6. 怎么將流還原為傳輸格式的?
    按照協(xié)議方式來進行還原。
  7. 處理完畢后怎么回應(yīng)?
    處理完畢后直接返回即可,spring-remoting將根據(jù)協(xié)議方式來做相應(yīng)的序列化。

Hessian

Hessian是由caucho提供的一個基于binary-RPC實現(xiàn)的遠程通訊library。

  1. 是基于什么協(xié)議實現(xiàn)的?
    基于Binary-RPC協(xié)議實現(xiàn)。
  2. 怎么發(fā)起請求?
    需通過Hessian本身提供的API來發(fā)起請求。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    Hessian通過其自定義的串行化機制將請求信息進行序列化,產(chǎn)生二進制流。
  4. 使用什么傳輸協(xié)議傳輸?
    Hessian基于Http協(xié)議進行傳輸。
  5. 響應(yīng)端基于什么機制來接收請求?
    響應(yīng)端根據(jù)Hessian提供的API來接收請求。
  6. 怎么將流還原為傳輸格式的?
    Hessian根據(jù)其私有的串行化機制來將請求信息進行反序列化,傳遞給使用者時已是相應(yīng)的請求信息對象了。
  7. 處理完畢后怎么回應(yīng)?
    處理完畢后直接返回,hessian將結(jié)果對象進行序列化,傳輸至調(diào)用端。

Burlap

Burlap也是有caucho提供,它和hessian的不同在于,它是基于XML-RPC協(xié)議的。

  1. 是基于什么協(xié)議實現(xiàn)的?
    基于XML-RPC協(xié)議實現(xiàn)。
  2. 怎么發(fā)起請求?
    根據(jù)Burlap提供的API。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    將請求信息轉(zhuǎn)化為符合協(xié)議的XML格式,轉(zhuǎn)化為流進行傳輸。
  4. 使用什么傳輸協(xié)議傳輸?
    Http協(xié)議。
  5. 響應(yīng)端基于什么機制來接收請求?
    監(jiān)聽Http請求。
  6. 怎么將流還原為傳輸格式的?
    根據(jù)XML-RPC協(xié)議進行還原。
  7. 處理完畢后怎么回應(yīng)?
    返回結(jié)果寫入XML中,由Burlap返回至調(diào)用端。

XFire、Axis

XFire、Axis是Webservice的實現(xiàn)框架,WebService可算是一個完整的SOA架構(gòu)實現(xiàn)標準了,因此采用XFire、Axis這些也就意味著是采用webservice方式了。

  1. 是基于什么協(xié)議實現(xiàn)的?
    基于SOAP協(xié)議。
  2. 怎么發(fā)起請求?
    獲取到遠端service的proxy后直接調(diào)用。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    將請求信息轉(zhuǎn)化為遵循SOAP協(xié)議的XML格式,由框架轉(zhuǎn)化為流進行傳輸。
  4. 使用什么傳輸協(xié)議傳輸?
    Http協(xié)議。
  5. 響應(yīng)端基于什么機制來接收請求?
    監(jiān)聽Http請求。
  6. 怎么將流還原為傳輸格式的?
    根據(jù)SOAP協(xié)議進行還原。
  7. 處理完畢后怎么回應(yīng)?
    返回結(jié)果寫入XML中,由框架返回至調(diào)用端。

ActiveMQ

ActiveMQ是JMS的實現(xiàn),基于JMS這類消息機制實現(xiàn)遠程通訊是一種不錯的選擇,畢竟消息機制本身的功能使得基于它可以很容易的去實現(xiàn)同步/異步/單向調(diào)用等,而且消息機制從容錯角度上來說也是個不錯的選擇,這是Erlang能夠做到容錯的重要基礎(chǔ)。

  1. 是基于什么協(xié)議實現(xiàn)的?
    基于JMS協(xié)議。
  2. 怎么發(fā)起請求?
    遵循JMS API發(fā)起請求。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    不太清楚,猜想應(yīng)該是二進制流。
  4. 使用什么傳輸協(xié)議傳輸?
    支持多種傳輸協(xié)議,例如socket、http等等。
  5. 響應(yīng)端基于什么機制來接收請求?
    監(jiān)聽符合協(xié)議的端口。
  6. 怎么將流還原為傳輸格式的?
    同問題3。
  7. 處理完畢后怎么回應(yīng)?
    遵循JMS API生成消息,并寫入JMS Queue中。

基于JMS此類機制實現(xiàn)遠程通訊的例子有Spring-Intergration、Mule、Lingo等等。

Mina

Mina是Apache提供的通訊框架,在之前一直沒有提到網(wǎng)絡(luò)IO這塊,之前提及的框架或library基本都是基于BIO的,而Mina是采用NIO的,NIO在并發(fā)量增長時對比BIO而言會有明顯的性能提升,而java性能的提升,與其NIO這塊與OS的緊密結(jié)合是有不小的關(guān)系的。

  1. 是基于什么協(xié)議實現(xiàn)的?
    基于純粹的Socket+NIO。
  2. 怎么發(fā)起請求?
    通過Mina提供的Client API。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    Mina遵循java串行化機制對請求對象進行序列化。
  4. 使用什么傳輸協(xié)議傳輸?
    支持多種傳輸協(xié)議,例如socket、http等等。
  5. 響應(yīng)端基于什么機制來接收請求?
    以NIO的方式監(jiān)聽協(xié)議端口。
  6. 怎么將流還原為傳輸格式的?
    遵循java串行化機制對請求對象進行反序列化。
  7. 處理完畢后怎么回應(yīng)?
    遵循Mina API進行返回。

MINA是NIO方式的,因此支持異步調(diào)用是毫無懸念的。

EJB

EJB最突出的在于其分布式,EJB采用的是ORMI協(xié)議,和RMI協(xié)議是差不多的,但EJB在分布式通訊的安全控制、transport pool、smart proxy等方面的突出使得其在分布式領(lǐng)域是不可忽視的力量。

  1. 是基于什么協(xié)議實現(xiàn)的?
    基于ORMI協(xié)議。
  2. 怎么發(fā)起請求?
    EJB調(diào)用。
  3. 怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?
    遵循java串行化機制對請求對象進行序列化。
  4. 使用什么傳輸協(xié)議傳輸?
    Socket。
  5. 響應(yīng)端基于什么機制來接收請求?
    監(jiān)聽協(xié)議端口。
  6. 怎么將流還原為傳輸格式的?
    遵循java串行化機制對請求對象進行反序列化。
  7. 處理完畢后怎么回應(yīng)?
    直接返回處理對象即可。

在之前的分布式服務(wù)框架系列的文章中對于jndi有誤導(dǎo)的嫌疑,在這篇blog中也順帶的提下jndi的機制,由于JNDI取決于具體的實現(xiàn),在這里只能是講解下jboss的jndi的實現(xiàn)了。

在將對象實例綁定到j(luò)boss jnp server后,當遠程端采用context.lookup()方式獲取遠程對象實例并開始調(diào)用時,jboss jndi的實現(xiàn)方法是從jnp server上獲取對象實例,將其序列化回本地,然后在本地進行反序列化,之后在本地進行類調(diào)用。
通過這個機制,就可以知道了,本地其實是必須有綁定到j(luò)boss上的對象實例的class的,否則反序列化的時候肯定就失敗了,而遠程通訊需要做到的是在遠程執(zhí)行某動作,并獲取到相應(yīng)的結(jié)果,可見純粹基于JNDI是無法實現(xiàn)遠程通訊的。
但JNDI也是實現(xiàn)分布式服務(wù)框架一個很關(guān)鍵的技術(shù)點,因為可以通過它來實現(xiàn)透明化的遠端和本地調(diào)用,就像ejb,另外它也是個很好的隱藏實際部署機制(就像datasource)等的方案。

總結(jié)

由上一系列的分析可知,在遠程通訊領(lǐng)域中,涉及的知識點還是相當?shù)亩嗟模缬校和ㄐ艆f(xié)議(Socket/tcp/http/udp/rmi/xml-rpc etc.)、消息機制、網(wǎng)絡(luò)IO(BIO/NIO/AIO)、MultiThread、本地調(diào)用與遠程調(diào)用的透明化方案(涉及java classloader、Dynamic Proxy、Unit Test etc.)、異步與同步調(diào)用、網(wǎng)絡(luò)通信處理機制(自動重連、廣播、異常、池處理等等)、Java Serialization (各種協(xié)議的私有序列化機制等)、各種框架的實現(xiàn)原理(傳輸格式、如何將傳輸格式轉(zhuǎn)化為流的、如何將請求信息轉(zhuǎn)化為傳輸格式的、如何接收流的、如何將流還原為傳輸格式的等等),要精通其中的哪些東西,得根據(jù)實際需求來決定了,只有在了解了原理的情況下才能很容易的做出選擇,甚至可以根據(jù)需求做私有的遠程通訊協(xié)議,對于從事分布式服務(wù)平臺或開發(fā)較大型的分布式應(yīng)用的人而言,我覺得至少上面提及的知識點是需要比較了解的。

參考文檔(感謝這些文章)
RMI原理及實現(xiàn)http://www.yesky.com/274/1625274.shtml
Java NIO原理和使用
http://www.jdon.com/concurrent/nio%D4%AD%C0%ED%D3%A6%D3%C3.htm
XML RPC協(xié)議http://hedong.3322.org/archives/000470.html
http://www.mengyan.org/blog/archives/2005/07/12/30.html
Spring技術(shù)應(yīng)用中的遠程服務(wù)詳解http://www.builder.com.cn/2007/1027/583384.shtml
JAVA RPC通信機制之SOAPhttp://www.java114.com/content16/content3826.html
Java Remoting:Protocol BenchMarkshttp://q.sohu.com/forum/5/topic/1148909
Evalution of RMI Alternativehttps://www.jfire.org/modules/phpwiki/index.php/Evaluation%20of%20RMI%20Alternative
Metaprotocol Taxonomyhttp://hessian.caucho.com/doc/metaprotocol-taxonomy.xtp
什么是Webservicehttp://www.vchome.net/dotnet/webservice/webservice15.htm

本文鏈接:http://m.95time.cn/tech/program/2008/5438.asp 

出處:CSDN
責任編輯:bluehearts

上一頁 Java遠程通訊可選技術(shù)及原理 [2] 下一頁

◎進入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
基于flash的360虛擬現(xiàn)實引擎實現(xiàn)
FLASH與ASP通信原理入門
你的編程語言可以這樣做嗎?
flash電子書鼠標拖拽翻頁效果原理
Fireworks通道原理及快捷運用
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標準 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機會
阿里行云
云手機年終巨獻,送禮標配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:3/31個記錄/頁 轉(zhuǎn)到 頁 共3個記錄

藍色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2