* 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的技術。
* 小結
這些通訊標準或實現各有個的優點和缺點,在實際使用中根據具體情況合理選擇。
* 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的技術。
* 小結
這些通訊標準或實現各有個的優點和缺點,在實際使用中根據具體情況合理選擇。