軟件架構(gòu)設(shè)計之構(gòu)件與中間件技術(shù)
中間件的定義
其實中間件是屬于構(gòu)件的一種。是一種獨立的系統(tǒng)軟件或服務(wù)程序,可以幫助分布式應(yīng)用軟件在不同技術(shù)之間共享資源。
我們把它定性為一類系統(tǒng)軟件,比如我們常說的消息中間件,數(shù)據(jù)庫中間件等等都是中間件的一種體現(xiàn)。一般情況都是給應(yīng)用系統(tǒng)提供服務(wù),而不是直接面向客戶。
中間件有哪些特性呢
- 負責(zé)客戶機與服務(wù)器之間的連接和通信,以及客戶機與應(yīng)用層之間的高效率通信機制。
- 提供應(yīng)用層不同服務(wù)之間的互操作機制,以及應(yīng)用層與數(shù)據(jù)庫之間的連接和控制機制。
- 提供多層架構(gòu)的應(yīng)用開發(fā)和運行的平臺,以及應(yīng)用開發(fā)框架,支持模塊化的應(yīng)用開發(fā)。
- 屏蔽硬件,操作系統(tǒng),網(wǎng)絡(luò)和數(shù)據(jù)庫的差異
- 提供應(yīng)用的負載均衡和高可用性,安全機制與管理功能,以及交易管理機制,保證交易的一致性。
- 提供一組通用的服務(wù)去執(zhí)行不同的功能,避免重復(fù)的工作, 并且使得應(yīng)用之間可以相互協(xié)作。
中間件有哪些優(yōu)點呢
- 面向需求
即設(shè)計師集中精力于業(yè)務(wù)邏輯本身
因為你去做的那些對接的工作,就可以交給中間件去實現(xiàn)了,從而讓您有更多的時間專注于業(yè)務(wù)邏輯
比如系統(tǒng)之間遠程通信時,使用消息中間件進行中轉(zhuǎn)時,我不用去考慮到底如何通信,底層怎么去走一些邏輯,協(xié)議怎么去開發(fā),安全性怎么去保證,都不用我們?nèi)ス堋?/span>
- 業(yè)務(wù)的分隔與包容性
- 應(yīng)用開發(fā)人員可以按照不同的業(yè)務(wù)進行功能的劃分,體現(xiàn)為不同的接口或交互服務(wù)
- 設(shè)計與實現(xiàn)隔離
- 構(gòu)件對外發(fā)生作用或構(gòu)件的交互,都是通過接口進行的,構(gòu)件使用者只需要知道構(gòu)件的接口,而不需要關(guān)心其內(nèi)部實現(xiàn)。這就是設(shè)計與實現(xiàn)分離的關(guān)鍵。
- 隔離復(fù)雜的系統(tǒng)資源
- 架構(gòu)很重要的一個功能就是將系統(tǒng)資源與應(yīng)用構(gòu)件隔離,這保證了構(gòu)件可復(fù)用性,甚至是“即插即用”這樣的基礎(chǔ),與中間件的意圖也是一致的。
- 符合標(biāo)準的交互模型
- 中間件實現(xiàn)了架構(gòu)的模型,實現(xiàn)標(biāo)準的協(xié)議
- 軟件復(fù)用
- 中間件提供了構(gòu)件封裝,交互規(guī)則,與環(huán)境的隔離等機制,這些都為軟件復(fù)用提供了方便的解決方案。
- 提供對應(yīng)用構(gòu)件的管理
- 基于中間件的的軟件可以方便進行管理,因為構(gòu)件總可以通過標(biāo)識機制進行劃分
Corba(公共對象請求代理體系結(jié)構(gòu))
Corba是一種遠程調(diào)用機制,稱之為公共對象代理請求的一種機制。這種機制的基本思想如下圖所示:
比如我們常常有這種需求,就是整個結(jié)構(gòu)當(dāng)中有客戶端,服務(wù)端。有些功能塊其實是在服務(wù)端實現(xiàn)的,但是客戶端要實現(xiàn)這個功能,你直接去調(diào)用遠程的功能塊時,會面臨比如說網(wǎng)絡(luò)問題,調(diào)用時怎么具體操作,等等一系列問題。就應(yīng)運而誕生了中間件技術(shù)這樣的技術(shù),它在客戶端構(gòu)建起了服務(wù)端的一個代理對象,從而調(diào)用調(diào)用本地代理對象實現(xiàn)調(diào)用遠程服務(wù)端。
代理機制的基本思想是,在客戶端會有服務(wù)端的對象的引用(也就是一個代理)。假設(shè)服務(wù)端有一個對象A存在,那么在客戶端就有一個對象代理,代理的就是服務(wù)端的對象A。有了A的代理到本地,就不用去考慮遠程調(diào)用問題,直接在本地調(diào)用A的代理對象。
并且客戶端把請求通過本地的轉(zhuǎn)換機制,然后傳遞到遠程服務(wù)端,通過一系列的解析解讀之后,連接到服務(wù)端這一邊來,然后服務(wù)端完成執(zhí)行,再返回回去,最終返回給客戶端。
這個跟RMI一樣的原理,不錯,就是一樣的原理。而在Corba中還會涉及到一些對象,這些對象的含義解釋如下:
- 伺服對象(Servant):Corba對象的真正實現(xiàn),負責(zé)完成客戶端請求。也就是真正的業(yè)務(wù)邏輯板塊
- 對象適配器(Object Adapter, POA):用于屏蔽ORB內(nèi)核的實現(xiàn)細節(jié),為服務(wù)器對象的實現(xiàn)者提供抽象接口,以便它們使用ORB內(nèi)部的某些功能。把請求傳遞過來,進行接口轉(zhuǎn)換的工作。
- 對象請求代理(Object Request Broker,ORB): 解釋調(diào)用并負責(zé)查找實現(xiàn)該請求的對象,將參數(shù)傳給找到的對象,并調(diào)用方法返回結(jié)果??蛻舴讲恍枰私夥?wù)對象的位置,通信方式,實現(xiàn),激活或存儲機制。
從另外一個角度來看,中間的ORB的作用是銜接各方,類似于一個總線對象。
- 對象請求代理(Object Request Broker, ORB)
負責(zé)對象在分布環(huán)境中透明收發(fā)請求和響應(yīng),它是構(gòu)建分布對象應(yīng)用、在異構(gòu)或同構(gòu)環(huán)境下實現(xiàn)應(yīng)用間互操作的基礎(chǔ)
- 對象服務(wù)(Obejct Services)
- 為使用和實現(xiàn)而提供的基本對象集合,這些服務(wù)應(yīng)獨立于應(yīng)用領(lǐng)域
- 公共設(shè)施(Common Facilities)
- 向終端用戶提供一組共享服務(wù)接口,例如系統(tǒng)管理,組合文檔和電子郵件等
- 應(yīng)用接口(Application Interfaces)
- 由銷售商提供的可控制其接口的產(chǎn)品,相應(yīng)于傳統(tǒng)的應(yīng)用層標(biāo)識,處于參考模型的最高層。
- 領(lǐng)域接口(Domain Interfaces)
- 為應(yīng)用領(lǐng)域服務(wù)而提供的接口,如OMG組織為PDM系統(tǒng)定制的規(guī)范。
小結(jié)
其實我們主要了解的是中間件的概念,以及中間件的思想原理是使用代理對象去訪問服務(wù)端的對象。像調(diào)用本地一樣調(diào)用遠程,也就是我們減少和很多對接的工作,因為中間件幫我們做了。但是學(xué)習(xí)這件事情,還是得我們親歷親為,學(xué)無止境,繼續(xù)加油!