posts - 495,  comments - 11,  trackbacks - 0

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

          ??? 當(dāng)然,在上面的原理中并沒有介紹到所有的java領(lǐng)域可選的遠(yuǎn)程通信協(xié)議了,例如還有EJB采用的ORMI、Spring自己定義的一個(gè)簡單的Http Invoker等等。

          ??? 看完原理后我們再來看看目前java領(lǐng)域可用于實(shí)現(xiàn)遠(yuǎn)程通訊的框架或library,知名的有:JBoss-Remoting、Spring-Remoting、Hessian、Burlap、XFire(Axis)、ActiveMQ、Mina、Mule、EJB3等等,來對每種做個(gè)簡單的介紹和評價(jià),其實(shí)呢,要做分布式服務(wù)框架,這些東西都是要有非常深刻的了解的,因?yàn)榉植际椒?wù)框架其實(shí)是包含了解決分布式領(lǐng)域以及應(yīng)用層面領(lǐng)域兩方面問題的。

          ??? 當(dāng)然,你也可以自己根據(jù)遠(yuǎn)程網(wǎng)絡(luò)通信原理(transport protocol+Net IO)去實(shí)現(xiàn)自己的通訊框架或library.

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

          ??? 1、是基于什么協(xié)議實(shí)現(xiàn)的?

          ??? 2、怎么發(fā)起請求?

          ??? 3、怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?

          ??? 4、使用什么傳輸協(xié)議傳輸?

          ??? 5、響應(yīng)端基于什么機(jī)制來接收請求?

          ??? 6、怎么將流還原為傳輸格式的?

          ??? 7、處理完畢后怎么回應(yīng)?

          ??? JBoss-Remoting

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

          ??? 直接來回答問題:

          ??? 1、是基于什么協(xié)議實(shí)現(xiàn)的?

          ??? JBoss-Remoting是個(gè)通訊框架,因此它支持多種協(xié)議方式的通信,例如tcp/ip+io方式、rmi方式、http+io方式等。

          ??? 2、怎么發(fā)起請求?

          ??? 在JBoss-Remoting中,只需將需要發(fā)起的請求參數(shù)對象傳入jboss-remoting的InvocationRequest對象即可,也可根據(jù)協(xié)議基于InvocationRequest封裝符合需求的InvocationRequest對象。

          ??? 3、怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?

          ??? JBoss-Remoting基于Java串行化機(jī)制或JBoss自己的串行化實(shí)現(xiàn)來將請求轉(zhuǎn)化為對象字節(jié)流。

          ??? 4、使用什么傳輸協(xié)議傳輸?

          ??? 支持多種傳輸協(xié)議,例如tcp/ip、http等。

          ??? 5、響應(yīng)端基于什么機(jī)制來接收請求?

          ??? 響應(yīng)端只需將自己的處理對象注冊到JBoss-Remoting提供的server端的Connector對象中即可。

          ??? 6、怎么將流還原為傳輸格式的?

          ??? JBoss-Remoting基于java串行化機(jī)制或jboss自己的串行化實(shí)現(xiàn)來將請求信息還原為java對象。

          ??? 7、處理完畢后怎么回應(yīng)?

          ??? 處理完畢后將結(jié)果對象直接返回即可,jboss-remoting會(huì)將此對象按照協(xié)議進(jìn)行序列化,返回至調(diào)用端。

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

           ---------------------------------------------------------------------------------------------------------------------------

          ??? Spring-Remoting

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

            1、是基于什么協(xié)議實(shí)現(xiàn)的?

            和JBoss-Remoting一樣,作為一個(gè)遠(yuǎn)程通訊的框架,Spring通過集成多種遠(yuǎn)程通訊的library,從而實(shí)現(xiàn)了對多種協(xié)議的支持,例如rmi、http+io、xml-rpc、binary-rpc等。

            2、怎么發(fā)起請求?

            在Spring中,由于其對于遠(yuǎn)程調(diào)用的bean采用的是proxy實(shí)現(xiàn),發(fā)起請求完全是通過服務(wù)接口調(diào)用的方式。

            3、怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?

            Spring按照協(xié)議方式將請求的對象信息轉(zhuǎn)化為流,例如Spring Http Invoker是基于Spring自己定義的一個(gè)協(xié)議來實(shí)現(xiàn)的,傳輸協(xié)議上采用的為http,請求信息是基于java串行化機(jī)制轉(zhuǎn)化為流進(jìn)行傳輸。

            4、使用什么傳輸協(xié)議傳輸?

            支持多種傳輸協(xié)議,例如rmi、http等等。

            5、響應(yīng)端基于什么機(jī)制來接收請求?

            響應(yīng)端遵循協(xié)議方式來接收請求,對于使用者而言,則只需通過spring的配置方式將普通的spring bean配置為響應(yīng)端或者說提供服務(wù)端。

            6、怎么將流還原為傳輸格式的?

            按照協(xié)議方式來進(jìn)行還原。

            7、處理完畢后怎么回應(yīng)?

            處理完畢后直接返回即可,spring-remoting將根據(jù)協(xié)議方式來做相應(yīng)的序列化。

            -----------------------------------------------------------------------------------------------------------------------------

            Hessian

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

            1、是基于什么協(xié)議實(shí)現(xiàn)的?

            基于Binary-RPC協(xié)議實(shí)現(xiàn)。

            2、怎么發(fā)起請求?

            需通過Hessian本身提供的API來發(fā)起請求。

            3、怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?

            Hessian通過其自定義的串行化機(jī)制將請求信息進(jìn)行序列化,產(chǎn)生二進(jìn)制流。

          ??? Hessian基于Http協(xié)議進(jìn)行傳輸。

          ??? 5、響應(yīng)端基于什么機(jī)制來接收請求?

          ??? 響應(yīng)端根據(jù)Hessian提供的API來接收請求。

          ??? 6、怎么將流還原為傳輸格式的?

          ??? Hessian根據(jù)其私有的串行化機(jī)制來將請求信息進(jìn)行反序列化,傳遞給使用者時(shí)已是相應(yīng)的請求信息對象了。

          ??? 7、處理完畢后怎么回應(yīng)?

          ??? 處理完畢后直接返回,hessian將結(jié)果對象進(jìn)行序列化,傳輸至調(diào)用端。

           -------------------------------------------------------------------------------------------------------------------------------

          ??? Burlap

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

          ??? 1、是基于什么協(xié)議實(shí)現(xiàn)的?

          ??? 基于XML-RPC協(xié)議實(shí)現(xiàn)。

          ??? 2、怎么發(fā)起請求?

          ??? 根據(jù)Burlap提供的API.

          ??? 3、怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?

          ??? 將請求信息轉(zhuǎn)化為符合協(xié)議的XML格式,轉(zhuǎn)化為流進(jìn)行傳輸。

          ??? 4、使用什么傳輸協(xié)議傳輸?

          ??? Http協(xié)議。

          ??? 5、響應(yīng)端基于什么機(jī)制來接收請求?

          ??? 監(jiān)聽Http請求。

          ??? 6、怎么將流還原為傳輸格式的?

          ??? 根據(jù)XML-RPC協(xié)議進(jìn)行還原。

          ??? 7、處理完畢后怎么回應(yīng)?

          ??? 返回結(jié)果寫入XML中,由Burlap返回至調(diào)用端。

           -----------------------------------------------------------------------------------------------------------------------------

          posted on 2009-08-15 15:08 jadmin 閱讀(90) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 丹凤县| 织金县| 唐海县| 汉源县| 康平县| 西畴县| 禹城市| 澎湖县| 马鞍山市| 赤城县| 塔河县| 孟州市| 福海县| 泗水县| 乐安县| 罗源县| 萝北县| 仪征市| 海盐县| 米脂县| 达尔| 开远市| 屏东县| 大渡口区| 扶绥县| 紫金县| 太康县| 澳门| 金塔县| 芮城县| 长治县| 班戈县| 社旗县| 奎屯市| 黑水县| 扶风县| 张北县| 平陆县| 工布江达县| 策勒县| 呼和浩特市|