遠程調用的幾種方式


         在分布式服務框架中。最基礎的問題就是遠程服務是怎么通訊的。首先來看看計算機系統網絡通信的基本原理。網絡通信須要做的就是將流從一台計算機傳輸到另外一台計算 機,基於傳輸協議和網絡IO來實現。當中傳輸協議有 tcpudp等等,tcpudp都是在基於Socket概念上為某類應用場景而擴展出的傳輸協議。網絡IO。主要有bio nioaio三種方式,全部的分布式應用通訊都基於這個原理而實現,僅僅是為了應用的易用。各種語言通常都會提供一些更為貼近應用易用的應用層協議。在java領域中知名的有:RMIXML-RPCBinary-RPCSOAPCORBAJMS等。

Java領域中有非常多可實現遠程通訊的技術。比如:RMIMINAESB BurlapHessianSOAPEJBJMS 等,這些技術都是在協議基礎上實現的。那么我們主要討論一下各個協議。


RMI

     RMI是個典型的為java定制的遠程通信協議, 我們都知道,在single vm中,我們能夠通過直接調用java object instance來實現通信,那么在遠程通信時,假設也能依照這樣的方式當然是最好了。這樣的遠程通信的機制成為RPCRemoteProcedure Call),RMI正是朝着這個目標而誕生的。

     傳輸的標准格式是Java Object Stream;基於Java串行化機制將請求的Java Object信息轉化為流。傳輸協議是Socket

 

XML-RPC

      XML-RPC也是一種和RMI類似的遠程調用的協議,它和RMI的不同之處在於它以標准的xml格式來定義請求的信息(請求的對象、方法、參數 ),這種優點是在跨語言通訊的時候也能夠使用。所以RMIRPC的差別之中的一個是RPC是跨語言的

      傳輸的標准格式是XML。將XML轉化為流。傳輸協議是HTTP

Binary-RPC

       Binary-RPCXML-RPC是差點兒相同,不同之處僅在於傳輸的標准格式由XML轉為了二進制的格式。

       傳輸的標准格式是二進制文件。將二進制文件轉化為傳輸的流。傳輸協議是HTTP

 

SOAP

        SOAPSimpleObject Access Protocol),是一個用於分布式環境的、輕量級的、基於XML進行信息交換的通信協議,能夠覺得SOAPXML RPC的高級版。兩者的原理全然同樣。都是http+XML,不同的僅在於兩者定義的XML規范不同。SOAP也是Webservice採用的服務調用協 議標准。

 

CORBA

      Common Object Request BrokerArchitecture(公用對象請求代理[調度]程序體系結構),是一組用來定義“分布式對象系統”的標准,由OMG(Object Menagement Group)作為發起和標准制定單位。CORBA的目的是定義一套協議,符合這個協議的對象能夠互相交互,不論它們是用什么樣的語言寫的。不論它們執行於 什么樣的機器和操作系統。CORBA是個類似於SOA的體系架構。涵蓋可選的遠程通信協議,但其本身不能列入通信協議。

 

JMS

      JMS。是實現java領域遠程通信的一種手段和方法。基於JMS實現遠程通信時和RPC是不同的。盡管能夠做到RPC的效果,但由於不是從協議 級別定義的。因此我們不覺得JMS是個RPC協議,但它確實是個遠程通信協議,在其它的語言體系中也存在着類似JMS的東西,能夠統一的將這類機制稱為消 息機制。而消息機制呢,一般是高並發、分布式領域推薦的一種通信機制,這里的主要一個問題是容錯。JMS注重的是消息交換,RMI注重的是對象方法調用,所以目的不同。JMS大多時候是異步的松耦合,RMI大多時候是同步的緊耦合。

      JMS規定的傳輸格式是Message,將參數信息放入Message中,傳輸協議不限。基於JMS也是經常使用的實現遠程異步調用的方法之中的一個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM