回覆列表
  • 1 # 使用者4562432417627

    * RPC(remote produce calL)

    RPC是遠端過程呼叫協議,它是基於C/S模型呼叫的機制,客戶機向伺服器端發 送呼叫請求等待伺服器應答,是一種典型的請求應答機制,大致過程可以理解為本地分散式物件向本機發請求,不用自己編寫底層通訊本機會透過網路向伺服器傳送 請求,伺服器物件接受引數後,經過處理再把處理後的結果傳送回客戶端。

    它是早期的支援分散式一些,缺點rpc是面向過程的遠端呼叫,不支援面向物件,所以現在用的人就少了。

    不支援非同步呼叫

    * RMI(remote method invocation)

    rmi也是遠端方法呼叫,似乎和RPC一樣都是呼叫遠端的方法,我們可以把RMI看作是用java語言實現了RPC協議,由於RPC不支援物件通訊,這也是RMI比RPC的優越之處,支援物件傳輸。

    它遵循的不是SOAP協議,而是JRMP(java remote message protocol)轉為java物件所制定的一個協議,可以執行在任何用java語言寫的系統上,具有跨平臺特性,它不能跨語言。

    既然用只支援java那麼它也有了java物件的很多特性,如果垃圾回收、面向物件等。

    RMI 採用stubs (客戶機)和 skeletons (框架)來進行遠端物件(remote object)的通訊。stub 充當遠端物件的客戶端代理,有著和遠端物件相同的遠端介面,遠端物件的呼叫實際是透過呼叫該物件的客戶端代理物件stub來完成的,效果和呼叫本地物件一 樣。

    傳輸的資料一般是java物件,而不是XML格式的資料。

    優點:支援分散式物件、跨平臺,stubs/skeletons機制;缺點:不能跨語言。

    * JMS(java remote service)

    jms是在各個java類(包括ejb類)之間傳遞訊息的中介軟體,好比給我們送信的郵遞員,在各個人之間收發信件。

    支援兩種訊息模型P2P和pub/stub,即點對點和釋出訂閱模型。

    傳輸的是一種訊息移植機制,將訊息從一個客戶機移動到另一個終端。

    優點:支援非同步通訊、訊息produce和recept松耦合。

    * EJB(enterprise java bean)

    ejb是java EE 中的一個規範,該規範描述了分散式應用程式需要解決的問題,例如事務處理、安全、日誌、分散式等,而同時呢,sun公司也實現了自己定義的這一個標準,相當於自己頒佈一個標準然後,又給出了實現供別人使用,實現以很多API的方式提供給用的人。

    ejb是按照java伺服器介面定義的java類,可以理解為一個特殊的 java類,放在容器裡容器可以幫助該類管理事務、分散式、安全等,一般小的程式不會用到,只有大型分散式系統才會用到ejb,既然ejb是一個java 類或是一個元件,顆粒較小,這也是與Webservice的區別之一,下面會說到,它就可以被其它一個或多個模組呼叫。

    包含了三種類型的Bean,可以透過註釋JPA一個規範來標記,其中有一種Bean,叫MDB訊息驅動bean,它的通訊機制涉及到了JMS協議。

    ejb可以進行遠端呼叫,但是不能夠跨語言,ejb是同步呼叫,而平時我們說的的ejb非同步呼叫指的是ejb的MDB非同步通訊。

    * Web Service

    Web service是一種網路間跨平臺、跨語言的分散式系統間通訊的標準。傳輸的資料位XML、json等格式的資料,應用範圍廣。

    Web Service大體上分為5個層次:

    1\. Http傳輸通道

    2\. XML的資料格式

    3\. SOAP封裝格式

    4\. WSDL的描述方式

    5\. UDDI UDDI是一種目錄服務,企業可以使用它對Webservices進行註冊和搜尋

    * EJB與JMS的關係

    它們其實是沒有多大關係的,它們都是java EE的規範,ejb的一種類MDB實現了JMS規範,當然是先JMS規範的不止有ejb的mdb,比如apache ActiveMQ也實現了JMS規範,我們平時用的是實現了JMS的產品,而不是JMS規範。

    * Web service與EJB

    對這兩個常常有點迷惑人,因為他們都實現了分散式應用呼叫,雖然他們很相似但是 還是有很多區別的,首先通訊協議是不一樣的,ejb採用rmi-iiop協議,Web service利用http協議傳輸資料,優點常識的都知道http協議支援的較廣泛,從這點來看Web Service層次要高一些、俗話說站得高看得遠。

    Webservice主要關注於解決異構系統、不同語言系統通訊,其關注的是分散式服務開發、著手點要高、站的角度高,而ejb可以看做是分散式程式設計平臺,透過容器和元件,簡化了程式開發、除錯和部署等它關注的是分散式元件開發,粒度小。

    Web service可以看做是異構系統、異構語言系統間通訊的一個標準,而ejb只屬於J2EE規範的一部分。

    ejb底層用rmi-iiop協議進行通訊,防火牆會阻止;web service是基於http協議進行通訊,防火牆不會阻止。

    * SOA與Web Service

    SOA是面向服務體系架構,是一種程式設計思想,SOA不是Web Service,WebService是目前最適合實現SOA的技術。

    * 小結

    這些通訊標準或實現各有個的優點和缺點,在實際使用中根據具體情況合理選擇。

  • 中秋節和大豐收的關聯?
  • 結婚不同的年頭都叫什麼婚?