<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java遠程通訊可選技術及原理

    在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基于什么原理實現的呢,了解這些是實現分布式服務框架的基礎知識,而如果在性能上有高的要求的話,那深入了解這些技術背后的機制就是必須的了,在這篇blog中我們將來一探究竟,拋磚引玉,歡迎大家提供更多的實現遠程通訊的技術和原理的介紹。

    基本原理

    要實現網絡機器間的通訊,首先得來看看計算機系統網絡通信的基本原理,在底層層面去看,網絡通信需要做的就是將流從一臺計算機傳輸到另外一臺計算機,基于傳輸協議和網絡IO來實現,其中傳輸協議比較出名的有http、tcp、udp等等,http、tcp、udp都是在為某類應用場景而定義出的傳輸協議,網絡IO,主要有bio、nio、aio三種方式,所有的分布式應用通訊都基于這個原理而實現,只是為了應用的易用,各種語言通常都會提供一些更為貼近應用易用的應用層協議。

    應用級協議

    遠程服務通訊,需要達到的目標是在一臺計算機發起請求,另外一臺機器在接收到請求后進行相應的處理并將結果返回給請求端,這其中又會有諸如one way request、同步請求、異步請求等等請求方式,按照網絡通信原理,需要實現這個需要做的就是將請求轉換成流,通過傳輸協議傳輸至遠端,遠端計算機在接收到請求的流后進行處理,處理完畢后將結果轉化為流,并通過傳輸協議返回給調用端。
    原理是這樣的,但為了應用的方便,業界推出了很多基于此原理之上的應用級的協議,使得大家可以不用去直接操作這么底層的東西,通常應用級的遠程通信協議會提供:
    1、為了避免直接做流操作這么麻煩,提供一種更加易用或貼合語言的標準傳輸格式;
    2、網絡通信機制的實現,就是替你完成了將傳輸格式轉化為流,通過某種傳輸協議傳輸至遠端計算機,遠端計算機在接收到流后轉化為傳輸格式,并進行存儲或以某種方式通知遠端計算機。
    所以在學習應用級的遠程通信協議時,我們可以帶著這幾個問題進行學習:
    1、傳輸的標準格式是什么?
    2、怎么樣將請求轉化為傳輸的流?
    3、怎么接收和處理流?
    4、傳輸協議是?
    不過應用級的遠程通信協議并不會在傳輸協議上做什么多大的改進,主要是在流操作方面,讓應用層生成流和處理流的這個過程更加的貼合所使用的語言或標準,至于傳輸協議則通常都是可選的,在java領域中知名的有:RMI、XML-RPC、Binary-RPC、SOAP、CORBA、JMS,來具體的看看這些遠程通信的應用級協議:
    --------------------------------------------------------------------------------------------------------------------------------------------------
    RMI

    RMI是個典型的為java定制的遠程通信協議,我們都知道,在single vm中,我們可以通過直接調用java object instance來實現通信,那么在遠程通信時,如果也能按照這種方式當然是最好了,這種遠程通信的機制成為RPC(Remote Procedure Call),RMI正是朝著這個目標而誕生的。
    來看下基于RMI的一次完整的遠程通信過程的原理:
    1、客戶端發起請求,請求轉交至RMI客戶端的stub類;
    2、stub類將請求的接口、方法、參數等信息進行序列化;
    3、基于tcp/ip將序列化后的流傳輸至服務器端;
    4、服務器端接收到流后轉發至相應的skelton類;
    5、skelton類將請求的信息反序列化后調用實際的處理類;
    6、處理類處理完畢后將結果返回給skelton類;
    7、Skelton類將結果序列化,通過tcp/ip將流傳送給客戶端的stub;
    8、stub在接收到流后反序列化,將反序列化后的Java Object返回給調用者。
    來看jboss-remoting對于此過程的一個更好的圖示:

    根據原理來回答下之前學習應用級協議帶著的幾個問題:
    1、傳輸的標準格式是什么?
          是Java ObjectStream。
    2、怎么樣將請求轉化為傳輸的流?
          基于Java串行化機制將請求的java object信息轉化為流。
    3、怎么接收和處理流?
          根據采用的協議啟動相應的監聽端口,當有流進入后基于Java串行化機制將流進行反序列化,并根據RMI協議獲取到相應的處理對象信息,進行調用并處理,處理完畢后的結果同樣基于java串行化機制進行返回。
    4、傳輸協議是?
          tcp/ip。
    --------------------------------------------------------------------------------------------------------------------------------------------------
    XML-RPC
    XML-RPC也是一種和RMI類似的遠程調用的協議,它和RMI的不同之處在于它以標準的xml格式來定義請求的信息(請求的對象、方法、參數等),這樣的好處是什么呢,就是在跨語言通訊的時候也可以使用。
    來看下XML-RPC協議的一次遠程通信過程:
    1、客戶端發起請求,按照XML-RPC協議將請求信息進行填充;
    2、填充完畢后將xml轉化為流,通過傳輸協議進行傳輸;
    3、接收到在接收到流后轉換為xml,按照XML-RPC協議獲取請求的信息并進行處理;
    4、處理完畢后將結果按照XML-RPC協議寫入xml中并返回。
    圖示以上過程:

    同樣來回答問題:
    1、傳輸的標準格式是?
          標準格式的XML。
    2、怎么樣將請求轉化為傳輸的流?
          將XML轉化為流。
    3、怎么接收和處理流?
          通過監聽的端口獲取到請求的流,轉化為XML,并根據協議獲取請求的信息,進行處理并將結果寫入XML中返回。
    4、傳輸協議是?
          Http。
    --------------------------------------------------------------------------------------------------------------------------------------------------
    Binary-RPC
    Binary-RPC看名字就知道和XML-RPC是差不多的了,不同之處僅在于傳輸的標準格式由XML轉為了二進制的格式。
    同樣來回答問題:
    1、傳輸的標準格式是?
          標準格式的二進制文件。
    2、怎么樣將請求轉化為傳輸的流?
          將二進制格式文件轉化為流。
    3、怎么接收和處理流?
          通過監聽的端口獲取到請求的流,轉化為二進制文件,根據協議獲取請求的信息,進行處理并將結果寫入XML中返回。
    4、傳輸協議是?
          Http。
    --------------------------------------------------------------------------------------------------------------------------------------------------
    SOAP
    SOAP原意為Simple Object Access Protocol,是一個用于分布式環境的、輕量級的、基于XML進行信息交換的通信協議,可以認為SOAP是XML RPC的高級版,兩者的原理完全相同,都是http+XML,不同的僅在于兩者定義的XML規范不同,SOAP也是Webservice采用的服務調用協議標準,因此在此就不多加闡述了。
    --------------------------------------------------------------------------------------------------------------------------------------------------
    CORBA
    Common Object Request Broker Architecture(公用對象請求代理[調度]程序體系結構),是一組用來定義“分布式對象系統”的標準,由OMG(Object Menagement Group)作為發起和標準制定單位。CORBA的目的是定義一套協議,符合這個協議的對象可以互相交互,不論它們是用什么樣的語言寫的,不論它們運行于什么樣的機器和操作系統。
    CORBA在我看來是個類似于SOA的體系架構,涵蓋可選的遠程通信協議,但其本身不能列入通信協議這里來講,而且CORBA基本淘汰,再加上對CORBA也不怎么懂,在此就不進行闡述了。
    --------------------------------------------------------------------------------------------------------------------------------------------------
    JMS
    JMS呢,是實現java領域遠程通信的一種手段和方法,基于JMS實現遠程通信時和RPC是不同的,雖然可以做到RPC的效果,但因為不是從協議級別定義的,因此我們不認為JMS是個RPC協議,但它確實是個遠程通信協議,在其他的語言體系中也存在著類似JMS的東西,可以統一的將這類機制稱為消息機制,而消息機制呢,通常是高并發、分布式領域推薦的一種通信機制,這里的主要一個問題是容錯(詳細見ErLang論文)。
    來看JMS中的一次遠程通信的過程:
    1、客戶端將請求轉化為符合JMS規定的Message;
    2、通過JMS API將Message放入JMS Queue或Topic中;
    3、如為JMS Queue,則發送中相應的目標Queue中,如為Topic,則發送給訂閱了此Topic的JMS Queue。
    4、處理端則通過輪訓JMS Queue,來獲取消息,接收到消息后根據JMS協議來解析Message并處理。
    回答問題:
    1、傳輸的標準格式是?
          JMS規定的Message。
    2、怎么樣將請求轉化為傳輸的流?
          將參數信息放入Message中即可。
    3、怎么接收和處理流?
          輪訓JMS Queue來接收Message,接收到后進行處理,處理完畢后仍然是以Message的方式放入Queue中發送或Multicast。
    4、傳輸協議是?
          不限。
    基于JMS也是常用的實現遠程異步調用的方法之一。

    可選實現技術
    當然,在上面的原理中并沒有介紹到所有的java領域可選的遠程通信協議了,例如還有EJB采用的ORMI、Spring自己定義的一個簡單的Http Invoker等等。
    看完原理后我們再來看看目前java領域可用于實現遠程通訊的框架或library,知名的有:JBoss-Remoting、Spring-Remoting、Hessian、Burlap、XFire(Axis)、ActiveMQ、Mina、Mule、EJB3等等,來對每種做個簡單的介紹和評價,其實呢,要做分布式服務框架,這些東西都是要有非常深刻的了解的,因為分布式服務框架其實是包含了解決分布式領域以及應用層面領域兩方面問題的。
    當然,你也可以自己根據遠程網絡通信原理(transport protocol+Net IO)去實現自己的通訊框架或library。
    那么在了解這些遠程通訊的框架或library時,會帶著什么問題去學習呢?
    1、是基于什么協議實現的?
    2、怎么發起請求?
    3、怎么將請求轉化為符合協議的格式的?
    4、使用什么傳輸協議傳輸?
    5、響應端基于什么機制來接收請求?
    6、怎么將流還原為傳輸格式的?
    7、處理完畢后怎么回應?
    --------------------------------------------------------------------------------------------------------------------------------------------------
    JBoss-Remoting
    Jboss-remoting是由jboss編寫的一個java領域的遠程通訊框架,基于此框架,可以很簡單的實現基于多種傳輸協議的java對象的RPC。
    直接來回答問題:
    1、是基于什么協議實現的?
          JBoss-Remoting是個通訊框架,因此它支持多種協議方式的通信,例如tcp/ip+io方式、rmi方式、http+io方式等。
    2、怎么發起請求?
          在JBoss-Remoting中,只需將需要發起的請求參數對象傳入jboss-remoting的InvocationRequest對象即可,也可根據協議基于InvocationRequest封裝符合需求的InvocationRequest對象。
    3、怎么將請求轉化為符合協議的格式的?
          JBoss-Remoting基于Java串行化機制或JBoss自己的串行化實現來將請求轉化為對象字節流。
    4、使用什么傳輸協議傳輸?
          支持多種傳輸協議,例如tcp/ip、http等。
    5、響應端基于什么機制來接收請求?
          響應端只需將自己的處理對象注冊到JBoss-Remoting提供的server端的Connector對象中即可。
    6、怎么將流還原為傳輸格式的?
          JBoss-Remoting基于java串行化機制或jboss自己的串行化實現來將請求信息還原為java對象。
    7、處理完畢后怎么回應?
          處理完畢后將結果對象直接返回即可,jboss-remoting會將此對象按照協議進行序列化,返回至調用端。
    另外,jboss-remoting支持多種通信方式,例如同步/異步/單向通信等。

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

    --------------------------------------------------------------------------------------------------------------------------------------------------
    Hessian
    Hessian是由caucho提供的一個基于binary-RPC實現的遠程通訊library。
    1、是基于什么協議實現的?
          基于Binary-RPC協議實現。
    2、怎么發起請求?
          需通過Hessian本身提供的API來發起請求。
    3、怎么將請求轉化為符合協議的格式的?
          Hessian通過其自定義的串行化機制將請求信息進行序列化,產生二進制流。
    4、使用什么傳輸協議傳輸?
          Hessian基于Http協議進行傳輸。
    5、響應端基于什么機制來接收請求?
          響應端根據Hessian提供的API來接收請求。
    6、怎么將流還原為傳輸格式的?
          Hessian根據其私有的串行化機制來將請求信息進行反序列化,傳遞給使用者時已是相應的請求信息對象了。
    7、處理完畢后怎么回應?
          處理完畢后直接返回,hessian將結果對象進行序列化,傳輸至調用端。

    --------------------------------------------------------------------------------------------------------------------------------------------------
    Burlap
    Burlap也是有caucho提供,它和hessian的不同在于,它是基于XML-RPC協議的。
    1、是基于什么協議實現的?
          基于XML-RPC協議實現。
    2、怎么發起請求?
          根據Burlap提供的API。
    3、怎么將請求轉化為符合協議的格式的?
          將請求信息轉化為符合協議的XML格式,轉化為流進行傳輸。
    4、使用什么傳輸協議傳輸?
          Http協議。
    5、響應端基于什么機制來接收請求?
          監聽Http請求。
    6、怎么將流還原為傳輸格式的?
          根據XML-RPC協議進行還原。
    7、處理完畢后怎么回應?
          返回結果寫入XML中,由Burlap返回至調用端。

    --------------------------------------------------------------------------------------------------------------------------------------------------
    XFire、Axis
    XFire、Axis是Webservice的實現框架,WebService可算是一個完整的SOA架構實現標準了,因此采用XFire、Axis這些也就意味著是采用webservice方式了。
    1、是基于什么協議實現的?
          基于SOAP協議。
    2、怎么發起請求?
          獲取到遠端service的proxy后直接調用。
    3、怎么將請求轉化為符合協議的格式的?
          將請求信息轉化為遵循SOAP協議的XML格式,由框架轉化為流進行傳輸。
    4、使用什么傳輸協議傳輸?
          Http協議。
    5、響應端基于什么機制來接收請求?
          監聽Http請求。
    6、怎么將流還原為傳輸格式的?
          根據SOAP協議進行還原。
    7、處理完畢后怎么回應?
          返回結果寫入XML中,由框架返回至調用端。

    --------------------------------------------------------------------------------------------------------------------------------------------------
    ActiveMQ
    ActiveMQ是JMS的實現,基于JMS這類消息機制實現遠程通訊是一種不錯的選擇,畢竟消息機制本身的功能使得基于它可以很容易的去實現同步/異步/單向調用等,而且消息機制從容錯角度上來說也是個不錯的選擇,這是Erlang能夠做到容錯的重要基礎。
    1、是基于什么協議實現的?
          基于JMS協議。
    2、怎么發起請求?
          遵循JMS API發起請求。
    3、怎么將請求轉化為符合協議的格式的?
          不太清楚,猜想應該是二進制流。
    4、使用什么傳輸協議傳輸?
          支持多種傳輸協議,例如tcp/ip、udp、http等等。
    5、響應端基于什么機制來接收請求?
          監聽符合協議的端口。
    6、怎么將流還原為傳輸格式的?
          同問題3。
    7、處理完畢后怎么回應?
          遵循JMS API生成消息,并寫入JMS Queue中。
    基于JMS此類機制實現遠程通訊的例子有Spring-Intergration、Mule、Lingo等等。

    --------------------------------------------------------------------------------------------------------------------------------------------------
    Mina
    Mina是Apache提供的通訊框架,在之前一直沒有提到網絡IO這塊,之前提及的框架或library基本都是基于BIO的,而Mina是采用NIO的,NIO在并發量增長時對比BIO而言會有明顯的性能提升,而java性能的提升,與其NIO這塊與OS的緊密結合是有不小的關系的。
    1、是基于什么協議實現的?
          可選的傳輸協議+NIO。
    2、怎么發起請求?
          通過Mina提供的Client API。
    3、怎么將請求轉化為符合協議的格式的?
          Mina遵循java串行化機制對請求對象進行序列化。
    4、使用什么傳輸協議傳輸?
          支持多種傳輸協議,例如tcp/ip、http等等。
    5、響應端基于什么機制來接收請求?
          以NIO的方式監聽協議端口。
    6、怎么將流還原為傳輸格式的?
          遵循java串行化機制對請求對象進行反序列化。
    7、處理完畢后怎么回應?
          遵循Mina API進行返回。
    MINA是NIO方式的,因此支持異步調用是毫無懸念的。

    --------------------------------------------------------------------------------------------------------------------------------------------------
    EJB
    EJB最突出的在于其分布式,EJB采用的是ORMI協議,和RMI協議是差不多的,但EJB在分布式通訊的安全控制、transport pool、smart proxy等方面的突出使得其在分布式領域是不可忽視的力量。
    1、是基于什么協議實現的?
          基于ORMI協議。
    2、怎么發起請求?
          EJB調用。
    3、怎么將請求轉化為符合協議的格式的?
          遵循java串行化機制對請求對象進行序列化。
    4、使用什么傳輸協議傳輸?
          tcp/ip。
    5、響應端基于什么機制來接收請求?
          監聽協議端口。
    6、怎么將流還原為傳輸格式的?
          遵循java串行化機制對請求對象進行反序列化。
    7、處理完畢后怎么回應?
          直接返回處理對象即可。

    在之前的分布式服務框架系列的文章中對于jndi有誤導的嫌疑,在這篇blog中也順帶的提下jndi的機制,由于JNDI取決于具體的實現,在這里只能是講解下jboss的jndi的實現了。
    在將對象實例綁定到jboss jnp server后,當遠程端采用context.lookup()方式獲取遠程對象實例并開始調用時,jboss jndi的實現方法是從jnp server上獲取對象實例,將其序列化回本地,然后在本地進行反序列化,之后在本地進行類調用。
    通過這個機制,就可以知道了,本地其實是必須有綁定到jboss上的對象實例的class的,否則反序列化的時候肯定就失敗了,而遠程通訊需要做到的是在遠程執行某動作,并獲取到相應的結果,可見純粹基于JNDI是無法實現遠程通訊的。
    但JNDI也是實現分布式服務框架一個很關鍵的技術點,因為可以通過它來實現透明化的遠端和本地調用,就像ejb,另外它也是個很好的隱藏實際部署機制(就像datasource)等的方案。

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

    參考文檔(感謝這些文章)
    RMI原理及實現: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協議:http://hedong.3322.org/archives/000470.html
                                 http://www.mengyan.org/blog/archives/2005/07/12/30.html
    Spring技術應用中的遠程服務詳解:http://www.builder.com.cn/2007/1027/583384.shtml
    JAVA RPC通信機制之SOAP:http://www.java114.com/content16/content3826.html
    Java Remoting:Protocol BenchMarks:http://q.sohu.com/forum/5/topic/1148909
    Evalution of RMI Alternative:https://www.jfire.org/modules/phpwiki/index.php/Evaluation%20of%20RMI%20Alternative
    Metaprotocol Taxonomy:http://hessian.caucho.com/doc/metaprotocol-taxonomy.xtp
    什么是Webservice:http://www.vchome.net/dotnet/webservice/webservice15.htm

    posted on 2008-03-04 22:54 BlueDavy 閱讀(13920) 評論(16)  編輯  收藏 所屬分類: OSGi、SOA、SCA

    評論

    # re: Java遠程通訊可選技術及原理 2008-03-05 01:04 lexus

    厲害,可以當百科了  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-05 08:33 岑文初

    寫的不錯哦:),不過有一點要糾正的就是socket不是協議,是對網絡通信協議抽象實現的一種方式,tcp和udp是兩種傳輸協議,而http是標準的應用協議(設計初衷),只是有人將http誤用為傳輸協議(這也就是REST的理念),他們三者和socket完全沒有什么必然的聯系。  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-05 09:22 hehehaha

    tcp/ip協議族下面還有個socket?  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-05 09:30 dennis

    概念混淆,已經有人指出了。參考價值有限,基本是網上資料的羅列。序列化難道就不是二進制協議了?呵呵,協議就兩種:文本或者二進制  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-05 09:49 楊一

    贊一個,一點意見:SOAP似乎只是對傳輸信息的描述,而不是傳輸協議,傳輸的含義在于構建網路上端到端的服務,從這一點上說,網絡傳輸層的協議TCP和UDP或者自己實現的繼承了網絡層的協議才是傳輸協議,此外我想,所有繼承了TCP或UDP的應用層協議,只要可以成為信息的載體,因為已經具備端到端服務的能力,也可以稱之為傳輸協議(比如現在的HTTP)  回復  更多評論   

    # re: Java遠程通訊可選技術及原理[未登錄] 2008-03-05 11:29 paul

    這應該是lz在選型時的一個比較吧!不錯  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-05 11:52 BlueDavy

    @岑文初
    恩,是的,REST讓Http恢復了原有功能。
    和Socket的聯系在于協議級的基礎上或概念上。

    @dennis
    我對通信級的底層協議機制確實不是很懂,獻丑了。
    不過里面很多東西也是經過自己理解的,只是可能有所偏差,最近正準備多多補習這方面的知識。

    @楊一
    恩,同意。
      回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-05 19:37 赫連勃勃

    感動得淚流滿面啊。  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-06 14:51 HiMagic!

    很全面,不錯  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-06 15:30 Speeddemon

    嚴格來說,這些都不應該被稱為"java遠程通訊"技術,這應該是"java分布式對象及遠程調用"的相關技術.
    而且,樓主對TCP/IP的概念一塌糊涂啊~~~
    "基于傳輸協議和網絡IO來實現,其中傳輸協議比較出名的有http、tcp、udp等等,http、tcp、udp都是在基于Socket概念上為某類應用場景而擴展出的傳輸協議"錯到姥姥家去了.  回復  更多評論   

    # re: Java遠程通訊可選技術及原理[未登錄] 2008-03-06 19:16 BlueDavy

    @Speeddemon
    那么你認為的遠程通訊技術有哪些呢,此文本來就是一篇拋磚引玉的文章,我希望能看到真的玉,多謝指點。  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-07 12:27 速度真快

    http://java.csdn.net/page/7d567b85-e02b-4861-be77-a6d498b67dea

    速度真快  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-03-08 19:01 ql116427

    摟住好有才阿!  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-11-12 19:53 changbanpo

    分析的不錯  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2008-11-17 19:48 tangyp

    頂樓主,好文!
    這段時間正好在看ICE,真的是個好咚咚,覺得樓主可以也看下這個咚咚,可以算是對CORBA部分的一點補充;
    ICE可以用來完全替代CORBA,曾經的一位CORBA大師Frank Pilhofer這樣評價過:ICE可以看成是Millennium CORBA,扔掉了在其生命期里累積的包袱,但卻保留了CORBA的全部好特性,增加了一些特性,并以一種更加明晰而整潔的方式設計它們!
    可以參見:http://blog.csdn.net/sfdev/archive/2008/11/16/3311172.aspx  回復  更多評論   

    # re: Java遠程通訊可選技術及原理 2012-12-11 11:25 陳小健

    其中socket作為最底層的傳輸協議,而http、tcp、udp都是在此基礎上為某類應用而擴展出的協議,這句話有問題吧  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2008年3月>
    2425262728291
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本高清免费aaaaa大片视频| 222www免费视频| 亚洲男女内射在线播放| 精品国产亚洲第一区二区三区| 搡女人真爽免费视频大全| 久久国产亚洲精品| 成人在线视频免费| 美景之屋4在线未删减免费 | 亚洲欧美在线x视频| 日韩精品视频免费网址| 亚洲大尺度无码无码专线一区| 午夜免费福利在线观看| 亚洲国产成人久久综合| av无码东京热亚洲男人的天堂| 一区二区三区观看免费中文视频在线播放 | 国产成人免费A在线视频| 粉色视频免费入口| 亚洲国产成人久久综合野外| 国产精品免费视频观看拍拍| 亚洲精品国偷自产在线| 2019中文字幕免费电影在线播放| 亚洲日本国产乱码va在线观看| 好大好硬好爽免费视频| 一个人免费观看www视频| 国产AV无码专区亚洲A∨毛片| 3d成人免费动漫在线观看| 亚洲一卡一卡二新区无人区| 免费一级毛片在播放视频| 久久免费国产精品| 免费看AV毛片一区二区三区| 日本系列1页亚洲系列| 久久精品九九亚洲精品天堂| 男女免费观看在线爽爽爽视频| 亚洲色偷精品一区二区三区| 免费看小12萝裸体视频国产 | 亚洲视频免费在线观看| 亚洲精品123区在线观看| 亚洲成a人无码av波多野按摩| 一级特黄aa毛片免费观看| 亚洲高清毛片一区二区| 亚洲无人区午夜福利码高清完整版 |