SOA體系架構(gòu)下的企業(yè)系統(tǒng)集成
SOA不同于現(xiàn)有的分布式技術(shù)之處在于大多數(shù)軟件商接受它并有可以實(shí)現(xiàn)SOA的平臺(tái)或應(yīng)用程序。它伴隨著無處不在的標(biāo)準(zhǔn),為企業(yè)的現(xiàn)有資產(chǎn)或投資帶來了更好的重用性。它以借助現(xiàn)有的應(yīng)用來組合產(chǎn)生新服務(wù)的敏捷方式,提供給企業(yè)更好的靈活性來構(gòu)建應(yīng)用程序和業(yè)務(wù)流程,對(duì)現(xiàn)代企業(yè)的系統(tǒng)集成和整合起到了非常重要的作用。
1、系統(tǒng)的物理部署結(jié)構(gòu)
1.1 硬件體系結(jié)構(gòu)
硬件體系結(jié)構(gòu)主要來配合應(yīng)用總體規(guī)則及軟件體系結(jié)構(gòu)的需要。多層體系結(jié)構(gòu)根據(jù)實(shí)際情況可以有不同的主機(jī)系統(tǒng)部署方案。根據(jù)前面的論述,我們清楚了多層體系結(jié)構(gòu)有著良好的伸縮性。下面我們重點(diǎn)提出基于硬件的可伸縮性的方案建議:
主機(jī)系統(tǒng)部署方案的各個(gè)階段,隨著應(yīng)用業(yè)務(wù)的不斷擴(kuò)展,系統(tǒng)可以通過增加數(shù)據(jù)庫服務(wù)器和Web/應(yīng)用服務(wù)器的數(shù)量,而不需要重新修改程序,就可以適應(yīng)這種變化。根據(jù)目前的情況,我們認(rèn)為采用圖中的第二階段的主機(jī)系統(tǒng)部署方案可以滿足應(yīng)用系統(tǒng)對(duì)用戶訪問量、業(yè)務(wù)處理能力和數(shù)據(jù)存儲(chǔ)的要求。第二階段的主機(jī)系統(tǒng)部署方案要求服務(wù)器分為數(shù)據(jù)庫服務(wù)器和應(yīng)用服務(wù)器,應(yīng)用服務(wù)器專門負(fù)責(zé)業(yè)務(wù)處理和Web訪問,通過DDN專線連接到Internet(根據(jù)用戶對(duì)安全性的要求,系統(tǒng)也可以不作任何修改的運(yùn)行在企業(yè)內(nèi)部的Intranet上),并和數(shù)據(jù)庫服務(wù)器組成一個(gè)很小的局域網(wǎng)?蛻魴C(jī)可以直接通過因特網(wǎng)訪問應(yīng)用系統(tǒng)但不能直接訪問數(shù)據(jù)庫。
1.2 系統(tǒng)的'技術(shù)體系結(jié)構(gòu)
SOA架構(gòu)具有一些典型特性,主要包括松耦合性,位置透明性以及協(xié)議無關(guān)性。松耦合性要求SOA架構(gòu)中的不同服務(wù)之間應(yīng)該保持一種松耦合的關(guān)系,也就是應(yīng)該保持一種相對(duì)獨(dú)立無依賴的關(guān)系;位置透明性要求SOA系統(tǒng)中的所有服務(wù)對(duì)于他們的調(diào)用者來說都是位置透明的,也就是說每個(gè)服務(wù)的調(diào)用者只需要知道他們調(diào)用的是哪一個(gè)服務(wù),但并不需要知道所調(diào)用服務(wù)的物理位置在哪里;而協(xié)議無關(guān)性要求每一個(gè)服務(wù)都可以通過不同的協(xié)議來調(diào)用。通過這些SOA架構(gòu)所具有的特性我們可以看到,SOA架構(gòu)的出現(xiàn)為企業(yè)系統(tǒng)架構(gòu)提供了更加靈活的構(gòu)建方式,如果企業(yè)架構(gòu)設(shè)計(jì)師基于SOA來構(gòu)建系統(tǒng)架構(gòu),就可以從底層架構(gòu)的級(jí)別來保證整個(gè)系統(tǒng)的松耦合性以及靈活性,這都為未來企業(yè)業(yè)務(wù)邏輯的擴(kuò)展打好了基礎(chǔ)。
2、SOA分層模型
SOA中的服務(wù)可以被映射成具體系統(tǒng)中的任何功能模塊,但是從功能性方面可以大致劃分為以下三種類型:
2.1商業(yè)服務(wù):這一類的服務(wù)是一個(gè)企業(yè)可以暴露給外部用戶或者合作伙伴使用的服務(wù)。比如說提交貸款申請(qǐng),用戶信用檢查,貸款信用查詢。
2.2商業(yè)功能服務(wù):這類服務(wù)會(huì)完成一些具體的商業(yè)操作,也會(huì)被更上層的商業(yè)服務(wù)調(diào)用,不過大多數(shù)情況下這類服務(wù)不會(huì)暴露給外部用戶直接調(diào)用,比如說檢索用戶帳戶信息,存儲(chǔ)用戶信息等。
2.3技術(shù)功能服務(wù):這類服務(wù)主要完成一些底層的技術(shù)功能,比如說日志服務(wù)以及安全服務(wù)等。
3、SOA與企業(yè)服務(wù)總線(ESB)
為了將SOA變成現(xiàn)實(shí),需要一個(gè)智能化的服務(wù)基礎(chǔ)架構(gòu),以降低服務(wù)重用的復(fù)雜性,并可靠地集成IT環(huán)境的各種技術(shù)、協(xié)議和應(yīng)用。為此,IT組織創(chuàng)建了一個(gè)以“服務(wù)”為中心的抽象層,以隱藏各種應(yīng)用和技術(shù)帶來的底層復(fù)雜性,并提供一個(gè)定制企業(yè)應(yīng)用的平臺(tái)。這個(gè)服務(wù)或集成層稱為ESB(Enterprise Service Bus,企業(yè)服務(wù)總線)。
3.1 SOA架構(gòu)范例
SOA的部分范例轉(zhuǎn)移是一個(gè)從應(yīng)用基礎(chǔ)架構(gòu)(Application Infrastructure)遷移到服務(wù)基礎(chǔ)架構(gòu)(Service Infrastructure)的過程。在SOA之前,各種應(yīng)用程序用點(diǎn)對(duì)點(diǎn)的連接方式孤立地組織在一起。除了利用一個(gè)聚合的服務(wù)基礎(chǔ)架構(gòu)層(Service Infrastructure Layer)之外,SOA使用同樣的后端應(yīng)用引擎和中間件。
3.2 SOA/WEB服務(wù)的實(shí)現(xiàn)
J2EE平臺(tái)通過JAXRPC1.1API提供了完整的Web服務(wù)支持,這種API支持基于Servlet和企業(yè)Bean的服務(wù)端點(diǎn)。JAXRPC1.1基于WSDL和SOAP協(xié)議提供了與Web服務(wù)的互操作性。J2EE平臺(tái)也支持WebServicesforJ2EE規(guī)范(JSR921),后者定義了Web服務(wù)的部署需求并利用了JAXRPC編程模型,還提供了跨平臺(tái)的交互操作性。
Web服務(wù)客戶可以通過兩種方式訪問Java EE應(yīng)用程序。客戶可以訪問用JAXRPCAPI創(chuàng)建的Web服務(wù);在幕后JAXRPC使用Servlet來實(shí)現(xiàn)Web服務(wù)。公開無狀態(tài)的EJB作為Web服務(wù);Web服務(wù)客戶也可以通過Bean的服務(wù)端點(diǎn)接口訪問無狀態(tài)會(huì)話Bean。在項(xiàng)目中,現(xiàn)有的業(yè)務(wù)邏輯大多已經(jīng)使用EJB組件編寫,通過Web服務(wù)公開它可能是實(shí)現(xiàn)從外界訪問這些服務(wù)的最佳選擇。
3.3 兩種粒度實(shí)現(xiàn)SOA服務(wù)
在SOA中服務(wù)粒度有兩種相關(guān)的意思,即服務(wù)是如何實(shí)現(xiàn)的,服務(wù)使用和返回了多少數(shù)據(jù)或多少消息。細(xì)粒度服務(wù)執(zhí)行了最小的功能,發(fā)送和接收少量的數(shù)據(jù)。粗粒度服務(wù)執(zhí)行了較大的業(yè)務(wù)功能,并交換了更多的數(shù)據(jù)。
細(xì)粒度服務(wù)是供粗粒度服務(wù)或組合服務(wù)使用的,而不是由終端應(yīng)用直接使用的。如果應(yīng)用是使用細(xì)粒度服務(wù)建立的,則應(yīng)用將不得不調(diào)用網(wǎng)絡(luò)上多個(gè)服務(wù),并且發(fā)生在每個(gè)服務(wù)上的數(shù)據(jù)量較少,因而會(huì)對(duì)對(duì)系統(tǒng)整體性帶來影響。所以,粗粒度服務(wù)的用戶不能直接調(diào)用它所使用的細(xì)粒度服務(wù),安全和訪問控制必須在細(xì)粒度服務(wù)中實(shí)現(xiàn)。
組合服務(wù)可以使用粗粒度服務(wù)和細(xì)粒度服務(wù)進(jìn)行組裝。數(shù)據(jù)數(shù)量不是粗粒度服務(wù)和組合服務(wù)之間的區(qū)別。粗粒度服務(wù),如創(chuàng)建新用戶,在這一過程的操作是:需要通過一些外部服務(wù)驗(yàn)證對(duì)客戶進(jìn)行驗(yàn)證,并在資源庫應(yīng)用系統(tǒng)中創(chuàng)建用戶記錄。
【SOA體系架構(gòu)下的企業(yè)系統(tǒng)集成】相關(guān)文章: