先介紹分布式通信的幾種基本方式。
- RPC
遠(yuǎn)程過程調(diào)用協(xié)議(Remote Procedure Call Protocol, RPC)是一種通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開發(fā)分布式應(yīng)用更加容易。RPC采用C/S架構(gòu)。請求程序就是一個(gè)Client,而服務(wù)提供程序就是一個(gè)Server。首先,Client調(diào)用進(jìn)程發(fā)送一個(gè)有進(jìn)程參數(shù)的調(diào)用信息到Service進(jìn)程,然后等待應(yīng)答信息。在Server端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。當(dāng)一個(gè)調(diào)用信息到達(dá)時(shí),Server獲得進(jìn)程參數(shù),計(jì)算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個(gè)調(diào)用信息,最后,Client調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行。
- RMI
遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RMI)是Java的一組擁護(hù)開發(fā)分布式應(yīng)用程序的API。RMI使用Java語言接口定義了遠(yuǎn)程對象,它集合了Java序列化和Java遠(yuǎn)程方法協(xié)議(Java Remote Method Protocol)。簡單地說,這樣使原先的程序在同一操作系統(tǒng)的方法調(diào)用,變成了不同操作系統(tǒng)之間程序的方法調(diào)用。由于J2EE是分布式程序平臺(tái),它以RMI機(jī)制實(shí)現(xiàn)程序組件在不同操作系統(tǒng)之間的通信。比如,一個(gè)EJB可以通過RMI調(diào)用Web上另一臺(tái)機(jī)器上的EJB遠(yuǎn)程方法。RMI可以被看作是RPC的Java版本,但是傳統(tǒng)RPC并不能很好地應(yīng)用于分布式對象系統(tǒng)。Java RMI則支持存儲(chǔ)于不同地址空間的程序級(jí)對象之間彼此進(jìn)行通信,實(shí)現(xiàn)遠(yuǎn)程對象之間的無縫遠(yuǎn)程調(diào)用。
- JMS
Java消息服務(wù)(Java Message Service, JMS)是一個(gè)與具體平臺(tái)無關(guān)的API,用來訪問消息收發(fā)。JMS使用戶能夠通過消息收發(fā)服務(wù)(有時(shí)稱為消息中介程序或路由器)從一個(gè)JMS客戶機(jī)向另一個(gè)JMS客戶機(jī)發(fā)送消息。消息是JMS中的一種類型對象,由兩部分組成:報(bào)頭和消息主體。報(bào)頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成。消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負(fù)載。JMS定義了5種消息正文格式,以及調(diào)用的消息類型,允許發(fā)送并接收以一些不同形式的數(shù)據(jù),提供現(xiàn)有消息格式的一些級(jí)別的兼容性。
? StreamMessage:Java原始值的數(shù)據(jù)流。
? MapMessage:一套名稱-值對。
? TextMessage:一個(gè)字符串對象。
? ObjectMessage:一個(gè)序列化的Java對象。
? BytesMessage:一個(gè)未解釋字節(jié)的數(shù)據(jù)流。
- EJB
JavaEE服務(wù)器端組件模型(Enterprise JavaBean, EJB)的設(shè)計(jì)目標(biāo)是部署分布式應(yīng)用程序。簡單來說就是把已經(jīng)編寫好的程序打包放在服務(wù)器上執(zhí)行。EJB定義了一個(gè)用于開發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。EJB的核心是會(huì)話Bean(Session Bean)、實(shí)體Bean(Entity Bean)和消息驅(qū)動(dòng)Bean(Message Driven Bean)。
- Web Service
Web Service是一個(gè)平臺(tái)獨(dú)立的、低耦合的、自包含的、基于可編程的Web應(yīng)用程序??梢允褂瞄_放的XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)子集)標(biāo)準(zhǔn)來描述、發(fā)布、發(fā)現(xiàn)、協(xié)調(diào)和配置這些應(yīng)用程序,用于開發(fā)分布式的應(yīng)用程序。Web Service技術(shù)能使得運(yùn)行在不同機(jī)器上的不同應(yīng)用無須借助第三方軟硬件,就可相互交換數(shù)據(jù)或集成。Web Service減少了應(yīng)用接口的花費(fèi)。Web Service為整個(gè)企業(yè)甚至多個(gè)組織之間的業(yè)務(wù)流程的集成提供了一個(gè)通用機(jī)制。