標籤:style blog http java 使用 strong
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類(包括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是一種網路間跨平台、跨語言的分布式系統間通訊的標準。傳輸的資料位元XML、json等格式的資料,應用範圍廣。Web Service大體上分為5個層次:
1. Http傳輸通道2. XML的資料格式3. SOAP封裝格式4. WSDL的描述方式5. UDDI UDDI是一種目錄服務,企業可以使用它對Webservices進行註冊和搜尋
它們其實是沒有多大關係的,它們都是java EE的規範,ejb的一種類MDB實現了JMS規範,當然是先JMS規範的不止有ejb的mdb,比如apache ActiveMQ也實現了JMS規範,我們平時用的是實現了JMS的產品,而不是JMS規範。
對這兩個常常有點迷惑人,因為他們都實現了分布式應用調用,雖然他們很相似但是還是有很多區別的,首先通訊協定是不一樣的,ejb採用rmi-iiop協議,Web service利用http協議傳輸資料,優點常識的都知道http協議支援的較廣泛,從這點來看Web Service層次要高一些、俗話說站得高看得遠。Webservice主要關注於解決異構系統、不同語言系統通訊,其關注的是分布式服務開發、著手點要高、站的角度高,而ejb可以看做是分布式編程平台,通過容器和組件,簡化了程式開發、調試和部署等它關注的是分布式組件開發,粒度小。 Web service可以看做是異構系統、異構語言系統間通訊的一個標準,而ejb只屬於J2EE規範的一部分。ejb底層用rmi-iiop協議進行通訊,防火牆會阻止;web service是基於http協議進行通訊,防火牆不會阻止。
SOA是面向服務體系架構,是一種編程思想,SOA不是Web Service,WebService是目前最適合實現SOA的技術。
這些通訊標準或實現各有個的優點和缺點,在實際使用中根據具體情況合理選擇。 原文地址