基于MVC設(shè)計(jì)模式的企業(yè)服務(wù)總線依賴注入

摘 要:在本文論述了基于任務(wù)管理模型的電子學(xué)習(xí)計(jì)算系統(tǒng)的設(shè)計(jì)問題。電子學(xué)習(xí)計(jì)算云的主要組成部分之一是控制器作為企業(yè)服務(wù)總線(ESB)充當(dāng)外部參考的絕對(duì)模型抽象。 同時(shí),View與Model完全分離,最終實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)對(duì)象的隱私和安全。支持依賴注入模式的ESB增強(qiáng)了協(xié)議和消息轉(zhuǎn)換,服務(wù)松耦合,全球服務(wù)契約,服務(wù)實(shí)現(xiàn)自主性,服務(wù)可重用性,服務(wù)模塊化,無狀態(tài)和動(dòng)態(tài)可發(fā)現(xiàn)性服務(wù)等。ESB使用服務(wù)虛擬化將服務(wù)歸檔為一個(gè)單獨(dú)的可部署單元,由Orchestration Engine作為中央控制臺(tái)進(jìn)行管理。這使用戶可以通過采購各種電子學(xué)習(xí)的服務(wù)來定制私有的電子學(xué)習(xí)平臺(tái)。
關(guān)鍵詞:云計(jì)算;分布式系統(tǒng);面向服務(wù)的體系結(jié)構(gòu);企業(yè)服務(wù)總線;依賴注入;電子學(xué)習(xí);Web Services.

緒論

眾所周知,近幾年來各種技術(shù)在中飛速的進(jìn)步著;根據(jù)思科的一項(xiàng)研究,預(yù)測(cè)2013年全球IP流量將是2008年的五倍,年均增長(zhǎng)率達(dá)到40%。這項(xiàng)研究還強(qiáng)調(diào):移動(dòng)數(shù)據(jù)流量將以每年翻一倍的趨勢(shì)在2013年達(dá)到131%的增長(zhǎng)率[1]。這種增長(zhǎng)趨勢(shì)的主要原因有:(1)高速寬帶的日益普及。(2)數(shù)字屏幕的表面積越來越大,分辨率越來越高。(3)網(wǎng)絡(luò)設(shè)備的普及。(4)設(shè)備的計(jì)算能力和速度在增加。這些因素正在影響Web應(yīng)用程序的角色,并將之前原始的基礎(chǔ)架構(gòu)轉(zhuǎn)化到下一個(gè)新架構(gòu)中。云計(jì)算由此而生,它被設(shè)想為按需自助服務(wù),更廣泛的網(wǎng)絡(luò)訪問,資源共享,快速彈性,測(cè)量服務(wù)等等的處理方法。

各種學(xué)習(xí)技術(shù)正在急劇發(fā)展,利用互聯(lián)網(wǎng)提供的資源來替代傳統(tǒng)的學(xué)習(xí)方式的已經(jīng)變?yōu)楝F(xiàn)實(shí)。在文獻(xiàn)4中,Dagger和O'Connor已經(jīng)提出將電子學(xué)習(xí)系統(tǒng)的演變分為兩代。在第一代中,學(xué)習(xí)平臺(tái)被開發(fā)為特定領(lǐng)域的通用解決方案,但在支持架構(gòu)靈活性方面面臨巨大挑戰(zhàn)。在此期間出現(xiàn)了幾個(gè)標(biāo)準(zhǔn),用于在內(nèi)容級(jí)別提供不同系統(tǒng)之間的互操作性[2]。當(dāng)前(第二代)包含基于模塊化和面向服務(wù)架構(gòu)(SOA)的設(shè)計(jì)范例。設(shè)計(jì)重點(diǎn)從內(nèi)容共享擴(kuò)展到學(xué)習(xí)對(duì)象,工作流程序列,學(xué)習(xí)者信息的交換,以及識(shí)別語義交換和平臺(tái)獨(dú)立性的需求。為了支持內(nèi)容元數(shù)據(jù)的共享,建立了重要的標(biāo)準(zhǔn),例如可共享內(nèi)容對(duì)象參考模型(SCORM)。文獻(xiàn)1提出了一個(gè)通過采用SCORM標(biāo)準(zhǔn)來支持互操作性的框架。新一代學(xué)習(xí)管理系統(tǒng)(LMS)支持交換工具,功能,語義和學(xué)習(xí)工作流程等功能。用戶將能夠通過定制各種電子學(xué)習(xí)服務(wù)來定制電子學(xué)習(xí)平臺(tái)。新平臺(tái)的構(gòu)建是當(dāng)前研究的主要目的。

電子學(xué)習(xí)應(yīng)用程序和其子服務(wù)在發(fā)展中的技術(shù)和平臺(tái)方面之間的差異性正在擴(kuò)大。因此,為了減少這種差異,完全需要一個(gè)中間件來集成不同的電子學(xué)習(xí)應(yīng)用程序和眾多服務(wù)異構(gòu)性。上述提到系統(tǒng)的靈活性和互通性可以歸檔為Web Services(WS)的一種形式[3]。為了實(shí)現(xiàn)這一點(diǎn),現(xiàn)有的LMS應(yīng)用程序可以通過接口進(jìn)行封裝,以便與新興服務(wù)集成,從而使系統(tǒng)能夠根據(jù)用戶需求發(fā)展為復(fù)雜性和功能性。在文獻(xiàn)13中,提出了一個(gè)提供定制功能的框架,以便通過將學(xué)習(xí)服務(wù)組裝成建設(shè)性模塊來設(shè)計(jì)LMS。

我們的研究致力于設(shè)計(jì)一個(gè)基于任務(wù)管理模型的電子學(xué)習(xí)計(jì)算系統(tǒng)[16]。云計(jì)算的吸引人的眾多特性促使我們?cè)O(shè)計(jì)符合云計(jì)算的電子學(xué)習(xí)計(jì)算體系結(jié)構(gòu)。它基于模型 - 視圖 - 控制器(MVC)設(shè)計(jì)模式[6]進(jìn)行了規(guī)范化,將表示層與實(shí)際業(yè)務(wù)處理分離。

WS(WebService)支持的SOA是云計(jì)算的流行實(shí)現(xiàn)技術(shù)。在本文中,我們將企業(yè)服務(wù)總線(ESB)作為依賴于注入(DI)設(shè)計(jì)模式的溝通交流中間件進(jìn)行介紹。

通常,ESB是一個(gè)靈活的連接基礎(chǔ)設(shè)施,用于集成利用WS,消息傳遞中間件,智能路由,轉(zhuǎn)換和編排的服務(wù)。它由幾個(gè)應(yīng)用程序或模塊組成。每個(gè)應(yīng)用程序都集中在一個(gè)特定的功能中,如監(jiān)視,安全和服務(wù)編排?;贓SB概念,本文提出的目標(biāo)是設(shè)計(jì)一種方法,以減小接口的大小和復(fù)雜性,提供高度分布但可集中管理的服務(wù)托管和基礎(chǔ)架構(gòu)管理。它還通過服務(wù)虛擬化提供可靠的消息路由。依賴注入模式在服務(wù)調(diào)用中引入了解耦性優(yōu)勢(shì),其中高級(jí)模塊和低級(jí)模塊相互獨(dú)立,但兩者都應(yīng)依賴于抽象。

本文的其余部分安排如下。 第二節(jié)描述了一種消息轉(zhuǎn)換和View和Model之間的解耦方法[7]。在第三部分介紹了電子學(xué)習(xí)計(jì)算云架構(gòu)的主要元素。第四部分介紹了企業(yè)服務(wù)總線和依賴注入。第五節(jié)中進(jìn)行討論和總結(jié)。

2 視圖與模型之間消息轉(zhuǎn)換的解耦

MVC設(shè)計(jì)模式的實(shí)質(zhì)就是通過接口集成層(Controller)來劃分表示(View)和業(yè)務(wù)邏輯(Model)[7]。然而,在傳統(tǒng)的MVC設(shè)計(jì)模式中,View和Model之間存在關(guān)聯(lián)。 對(duì)這種關(guān)聯(lián)的影響讓數(shù)據(jù)模型的隱私和視圖和模型之間不能完全解耦。因此,為了實(shí)現(xiàn)兩者之間的解耦和數(shù)據(jù)模型層的數(shù)據(jù)隱私性,我們通過應(yīng)用DI模式來模擬控制器中的控制反轉(zhuǎn),該模式確保了是在模型層上的抽象包裝。View和Model都與Controller層聯(lián)系[8],而不是直接相互通信。圖1顯示了消息轉(zhuǎn)換引擎的一部分,它也展示了當(dāng)view層請(qǐng)求模型層服務(wù)時(shí),如何從模型層中解耦。

image.png

由于Model是業(yè)務(wù)處理層,因此它是劃分了業(yè)務(wù)對(duì)象池和用于定義服務(wù)模式的數(shù)據(jù)模型的服務(wù)模型。服務(wù)模型使用數(shù)據(jù)模型作為本地?cái)?shù)據(jù)庫來處理給定請(qǐng)求[8]。在Controller端,定義了可擴(kuò)展樣式表語言轉(zhuǎn)換(XSLT),用于將服務(wù)求映射到服務(wù)模型中部署的服務(wù)接口。控制器XSLT包含部分服務(wù)元數(shù)據(jù)描述包括服務(wù)合約,服務(wù)端點(diǎn),接口,端點(diǎn)數(shù)據(jù)和端點(diǎn)功能。映射的數(shù)據(jù)是字符串格式,需要填充到服務(wù)模型的數(shù)據(jù)傳輸對(duì)象(DTO)中。然后Controller將一系列字節(jié)反序列化或解碼成DTO對(duì)象。在服務(wù)請(qǐng)求執(zhí)行完成后,Model會(huì)編組服務(wù)對(duì)象以可擴(kuò)展標(biāo)記語言(XML)的形式呈現(xiàn)響應(yīng)消息,該消息通過Controller傳遞給View[9]。采用這種方式,從Model或View進(jìn)行的更改只需要在Controller的一個(gè)位置進(jìn)行修改。控制器充當(dāng)了一個(gè)閥門,指引輸入信息在模型和視圖之間切換。

該模型的隱私只暴露給服務(wù)控制器,并保持遠(yuǎn)程引用或訪問的保護(hù)。此外,控制器完全將視圖與模型分離,并充當(dāng)數(shù)據(jù)通信的主要容器。視圖和模型之間的一般關(guān)聯(lián)是通過將控制器依賴注入成視圖和模型之間的抽層關(guān)聯(lián),從而實(shí)現(xiàn)控制反轉(zhuǎn)。因此,我們以ESB的形式設(shè)計(jì)了控制器,為構(gòu)建SOA應(yīng)用程序提供了基礎(chǔ)架構(gòu)。

3 電子學(xué)習(xí)計(jì)算云的體系結(jié)構(gòu)

遵循MVC的設(shè)計(jì)模式的設(shè)計(jì)思路,Controller可以看成一個(gè)ESB容器[10]。當(dāng)前系統(tǒng),我們使用SUN的J2EE框架開發(fā)一個(gè)電子學(xué)習(xí)計(jì)算云(eLC 2)。由于ESB的一個(gè)實(shí)質(zhì)是SOA實(shí)現(xiàn)和靈活集成,所以讓ESB作為SOA架構(gòu)的云架構(gòu)的骨干。

如圖2所示的eLC 2具有企業(yè)對(duì)客戶(B2C)和企業(yè)對(duì)企業(yè)(B2B)通信模式。 eLC 2包含建立在虛擬機(jī)群集(VM群集)上的控制器和模型。由于View與Model脫耦,eLC 2外包了View部分,并只呈現(xiàn)XML對(duì)Internet上的查看協(xié)議(如簡(jiǎn)單對(duì)象訪問協(xié)議(SOAP))的響應(yīng)[10]。B2C探索外部計(jì)算云,探索B2B交易的內(nèi)部控制器云。這兩個(gè)云通過使用代理端點(diǎn)Enterprise Java Beans(EJB)作為WS接口對(duì)外公開。在圖2中,服務(wù)池(Service Pool),公式引擎(Formula engine),評(píng)分引擎(Grading engine),自然語言引擎(Human language engine),和警示引擎(Alert engine)是服務(wù)和數(shù)據(jù)模型的一部分,而其他組件是控制器的一部分。


image.png

計(jì)算云和控制器云都使用通用骨干網(wǎng)絡(luò)的公共控制器服務(wù)總線(CSB)。控制器云使用內(nèi)部專有的插件服務(wù)總線(PSB)[11],可將可重用應(yīng)用程序作為服務(wù)無縫擴(kuò)展和集成到服務(wù)模型中。CSB是與控制器組件通信的通用平臺(tái),例如會(huì)話控制器用于關(guān)聯(lián)(或會(huì)話)ID生成,分配和驗(yàn)證。這個(gè)相關(guān)ID與相應(yīng)的服務(wù)對(duì)象一起存儲(chǔ)在數(shù)據(jù)模型中,以保持給定連接上后續(xù)事務(wù)的狀態(tài)。當(dāng)相應(yīng)的關(guān)聯(lián)或會(huì)話ID處于活動(dòng)狀態(tài)時(shí),該對(duì)象序列化用于將服務(wù)請(qǐng)求消息保存到數(shù)據(jù)模型中;因此,服務(wù)請(qǐng)求/響應(yīng)流量和跨信道消息的開銷被最小化,從而可以使用無狀態(tài)消息交換模式和無狀態(tài)協(xié)議來獲得更好的性能。視圖模型服務(wù)請(qǐng)求綁定(VMSRB) 用于View和Model之間的消息轉(zhuǎn)換,如圖1所示。對(duì)象序列化/反序列化通過編碼和解碼務(wù)模型的DTO進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換。VMSRB通過使用Internet Inter-ORB協(xié)議(IIOP)調(diào)用Controller Java云端點(diǎn)EJB(基于Java遠(yuǎn)程方法調(diào)用(RMI))來訪問控制云服務(wù)[13]。

服務(wù)驗(yàn)證和認(rèn)證授權(quán)引擎扮演安全角色并保護(hù)模型。服務(wù)事件控制器和業(yè)務(wù)委托是協(xié)調(diào)引擎的一部分,并遵循調(diào)解模式。協(xié)調(diào)引擎是eLC 2的核心組件。通過使用編排引擎,工作流程邏輯被抽象并易于維護(hù),而不是嵌入單個(gè)解決方案組件中。由業(yè)務(wù)流程封裝的工作流程邏輯可以在中央位置進(jìn)行修改或擴(kuò)展。協(xié)調(diào)通過標(biāo)準(zhǔn)化的服務(wù)模式建立了一種集中和控制大量?jī)?nèi)部和內(nèi)部應(yīng)用邏輯的方法。事務(wù)控制器管理跨分布式系統(tǒng)的事務(wù),包括數(shù)據(jù)庫,消息隊(duì)列,外部云等,用于兩階段原子事物提交和并發(fā)控制。CSB是計(jì)算云與外部世界的單一接觸點(diǎn)[12]。

我們正在擴(kuò)展CSB以形成ESB,以進(jìn)一步增強(qiáng)協(xié)議轉(zhuǎn)換的CSB,包括同步和異步通信模式,復(fù)雜事件處理,消息路由和轉(zhuǎn)換以及服務(wù)虛擬化。所有與CSB通信的組件都與其他ESB組件一起嵌入到ESB中。對(duì)于強(qiáng)大的通信,智能路由,復(fù)雜的翻譯和服務(wù)轉(zhuǎn)換,ESB是必不可少的。ESB中服務(wù)的可組合性處理組件的相互關(guān)系。ESB用于控制反轉(zhuǎn)的DI模式。 組件可以獨(dú)立更換和部署。

4 企業(yè)服務(wù)總線和依賴注入

依賴注入(DI)模式由Martin Fowler于1996年發(fā)起,并于2004年進(jìn)一步擴(kuò)展。Martin Fowler把這個(gè)想法追溯到Johnson和Foote's關(guān)于控制反轉(zhuǎn)的提議。DI模式的關(guān)鍵在于高級(jí)模塊不應(yīng)該依賴于低級(jí)模塊,并且兩者都應(yīng)該依賴于抽象。DI是服務(wù)定位非常很好的替代方案[13]。即使在傳統(tǒng)的面向?qū)ο蟮睦又?,如果在許多不同的類對(duì)象中存在一系列依賴,那么每個(gè)對(duì)象都應(yīng)該都直接依賴序列中下一個(gè)對(duì)象的引用。這種協(xié)作導(dǎo)致對(duì)象之間的緊密耦合,并且序列修改需要對(duì)所有對(duì)象進(jìn)行翻新。

因此,我們?cè)诜?wù)調(diào)解和觀察者模式之上引入了DI。DI的主要好處是它可以消除具體實(shí)現(xiàn)中的依賴關(guān)系。通過在控制反轉(zhuǎn)中引入DI,管理對(duì)象與其合作者的任何硬編碼依賴關(guān)系(包括昂貴的初始化邏輯)解耦[14],從而可以輕松地單獨(dú)測(cè)試對(duì)象。由于受管理對(duì)象與協(xié)作者查找的開銷分離,所以對(duì)象不必?fù)?dān)心被調(diào)用者引用的問題。我們正在使用Java實(shí)現(xiàn)來進(jìn)行依賴關(guān)系外部化[16]。
正如第三部分所討論的那樣,CSB已經(jīng)擴(kuò)展到ESB的設(shè)備。在ESB中引入DI模式以形成處理引擎的連接通道,該引擎編排松散耦合服務(wù)之間的活動(dòng)流。各種處理引擎例如 服務(wù)中介,存儲(chǔ)庫和注冊(cè)中心,事件控制器,服務(wù)編排,協(xié)議轉(zhuǎn)換和消息轉(zhuǎn)換引擎負(fù)責(zé)確保相應(yīng)的服務(wù)功能按正確的順序進(jìn)行調(diào)度和協(xié)調(diào)。DI使ESB能夠根據(jù)網(wǎng)絡(luò)所支持的網(wǎng)絡(luò)和工作負(fù)載的需求進(jìn)行增長(zhǎng)或縮減。ESB以第三節(jié)討論的協(xié)調(diào)引擎的形式持有DI[15]。編排引擎主要使用中介,代理和觀察者模式在服務(wù)請(qǐng)求者和服務(wù)響應(yīng)者之間形成抽象層。服務(wù)虛擬化是編排引擎的主要功能。

圖3顯示了ESB構(gòu)建塊的各自功能。 ESB充當(dāng)實(shí)例化對(duì)象的容器,并保持這些對(duì)象在服務(wù)池中的引用以及注入依賴關(guān)系。客戶聲明它對(duì)服務(wù)的依賴性的描述。符合ESB的外部代碼在客戶端連接。每當(dāng)需要客戶端的動(dòng)態(tài)服務(wù)的引用時(shí),它就會(huì)提供。 該消息事件和所需服務(wù)的ESB響應(yīng)從存儲(chǔ)庫和注冊(cè)標(biāo)識(shí)。


image.png

在控制層中,在將請(qǐng)求移交給服務(wù)模型(即實(shí)現(xiàn)實(shí)際業(yè)務(wù)處理邏輯的對(duì)象池)以執(zhí)行任務(wù)特定處理之前,需要執(zhí)行某些操作。這個(gè)操作要按順序的方式執(zhí)行,如對(duì)象編組/解組,服務(wù)驗(yàn)證,事務(wù)上下文管理等。因此,每個(gè)相應(yīng)的組件都依次依賴于其他組件。這種類型的一對(duì)一依賴關(guān)系需要在開發(fā)和調(diào)試時(shí)進(jìn)行返工,只要在序列中引入一個(gè)新組件。 因此,所提出的服務(wù)總線將一對(duì)一調(diào)用控制反轉(zhuǎn)為多對(duì)一,其中來自控制器的所有組件都只知道服務(wù)總線,并且服務(wù)總線知道所有注冊(cè)的組件。

如圖3所示,ESB具有一個(gè)內(nèi)部消息總線,它是跨分布式系統(tǒng)的事件驅(qū)動(dòng)消息傳遞的專有標(biāo)準(zhǔn)。 所有ESB組件都使用此通道在集群網(wǎng)絡(luò)上進(jìn)行信息交換。正如第三節(jié)所討論的,控制器云的插件服務(wù)總線是ESB的內(nèi)部消息總線的一部分。內(nèi)部消息總線具有內(nèi)置的消息隊(duì)列數(shù)據(jù)結(jié)構(gòu)來保存消息,如果有任何事情無法實(shí)現(xiàn)可靠性。這種面向消息的中間件(MOM)定義在ESB的核心[16],以確保消息傳遞。由于MOM,異步通信模式也被使用,因?yàn)橹挥型较到y(tǒng)嚴(yán)重抵制高度的可擴(kuò)展性。

服務(wù)虛擬化是一種服務(wù)管道,使開發(fā)人員能夠?qū)W⒂跇?gòu)建新功能,而不必?fù)?dān)心功能如何被暴露,消耗或管理。像版本控制,協(xié)議映射,監(jiān)控,路由和運(yùn)行時(shí)策略執(zhí)行等低級(jí)別服務(wù)約束都是抽象的。虛擬服務(wù)由服務(wù)庫和注冊(cè)表中的主要服務(wù)元數(shù)據(jù)之上的模型表示。這些模型由服務(wù)中介引擎轉(zhuǎn)換為ESB編排引擎解釋的服務(wù)行為,以執(zhí)行該服務(wù),而無需更改服務(wù)代碼。因此,協(xié)調(diào)引擎通過使用服務(wù)調(diào)解以及存儲(chǔ)庫和注冊(cè)表來標(biāo)準(zhǔn)化消息。服務(wù)虛擬化提供了透明的服務(wù)查找。 它將服務(wù)調(diào)用從實(shí)現(xiàn)中分離出來,而不管程序設(shè)計(jì)語言如何,也沒有代理方法的性能影響。這利用了動(dòng)態(tài)服務(wù)配置。

如圖3所示,ESB向業(yè)務(wù)流程管理(BPM)層提供B2B和B2C通信模式,這是MVC設(shè)計(jì)模式中的一種視圖。ESB通信的第一步是協(xié)議和消息的轉(zhuǎn)換。協(xié)議轉(zhuǎn)換引擎為通過超文本傳輸協(xié)議(HTTP),SOAP,文件傳輸協(xié)議(FTP),Java消息服務(wù)(JMS)等提供調(diào)用服務(wù)的傳輸綁定。消息轉(zhuǎn)換引擎充當(dāng)解釋器來將請(qǐng)求參數(shù)與服務(wù)模型的相應(yīng)DTO進(jìn)行映射。正如第二部分所討論的那樣,我們采用了基于XSLT的消息轉(zhuǎn)換,將View與Model分離開來[17]。 ESB使用XML標(biāo)準(zhǔn)交換消息。

我們使用消息路由來動(dòng)態(tài)地調(diào)用服務(wù),而不是基于名稱空間的服務(wù)查找。它提供了消息和事件鏈接,以抽象消息流的形式引入工作流。有兩種類型的消息路由,即基于內(nèi)容的路由和基于行程的路由;ESB使用基于行程的消息路由,該路由基于預(yù)定義的活動(dòng)序列。

基于行程的消息通過編排引擎路由到期望的服務(wù);通過使用事件控制器和服務(wù)中介引擎,服務(wù)協(xié)調(diào)引擎可以綁定服務(wù)的WSDL接口。服務(wù)模型維護(hù)由ESB容器調(diào)用的端點(diǎn)服務(wù)對(duì)象池。在接口綁定之后,事務(wù)控制器為ESB容器與參與(端點(diǎn))服務(wù)及其合作伙伴服務(wù)之間的協(xié)調(diào)生成事務(wù)上下文。因此,如圖3所示,事務(wù)控制器,服務(wù)中介,存儲(chǔ)庫/注冊(cè)表和服務(wù)模型是服務(wù)虛擬化方法的主要組成部分。

ESB的解耦直接遠(yuǎn)程調(diào)用模式,因此,ESB適用于潛在的安全底層模型。控制云的驗(yàn)證和認(rèn)證/授權(quán)引擎在ESB中封裝為安全引擎[18]。ESB還提供數(shù)據(jù)完整性和消息加密。 通過這種方式,ESB從遠(yuǎn)程訪問保護(hù)數(shù)據(jù)模型和業(yè)務(wù)服務(wù)模型,并提供可配置的互操作性和安全的代理功能。安全引擎功能進(jìn)一步分為以下三種類型:(1)傳輸級(jí)安全性:通過配置安全套接字層(SSL)來確保在傳輸過程中交換的消息的機(jī)密性和完整性。(2)消息級(jí)安全性:通過定義保護(hù)消息負(fù)載的策略來消除傳輸層上的開銷。(3)自定義級(jí)別的安全性: 能夠根據(jù)服務(wù)使用者和提供者的優(yōu)先級(jí)來啟動(dòng)臨時(shí)安全性度量標(biāo)準(zhǔn)。

服務(wù)存儲(chǔ)庫和注冊(cè)管理機(jī)構(gòu)根據(jù)服務(wù)水平協(xié)議(SLA)等管理元數(shù)據(jù),包括服務(wù)合約,XML模式定義(XSD),接口描述,端點(diǎn)地址和策略。服務(wù)存儲(chǔ)庫形成一個(gè)所謂的服務(wù)庫存,其中包含獨(dú)立標(biāo)準(zhǔn)化和管理服務(wù)的集合。實(shí)時(shí)服務(wù)實(shí)施在模型的外圍執(zhí)行, 此類服務(wù)的注冊(cè)表在維修庫存形成服務(wù)組成內(nèi)維護(hù)。 服務(wù)注冊(cè)表是服務(wù)虛擬化的主要組成部分。

審計(jì)和記錄引擎以及Monitor引擎通過監(jiān)視ESB容器的健康狀況來執(zhí)行報(bào)告以跟蹤數(shù)據(jù)并確保服務(wù)的可用性。審計(jì)跟蹤日志是系統(tǒng)調(diào)試和故障檢測(cè)的重要手段。 在出現(xiàn)故障的情況下,ESB容器還使用日志報(bào)告作為檢查點(diǎn)來執(zhí)行補(bǔ)償和回滾事務(wù)。Monitor會(huì)引發(fā)一個(gè)事件以通知ESB容器的操作事件。監(jiān)控器還會(huì)測(cè)量網(wǎng)絡(luò)的心跳以確定跨渠道服務(wù)的可用性。

服務(wù)模型使用數(shù)據(jù)模型來定義服務(wù)處理的配置模式。因此,對(duì)服務(wù)行為的任何修改都只需要在存儲(chǔ)在數(shù)據(jù)模型中的服務(wù)配置中進(jìn)行更改。服務(wù)處理的配置模式包括服務(wù)定義,事務(wù)定義,服務(wù)會(huì)話(或相關(guān))定義,服務(wù)驗(yàn)證和授權(quán)/認(rèn)證定義等。

圖4顯示了與ESB相關(guān)的各種服務(wù)的協(xié)作。DI模式在Service Orchestration Engine中引發(fā),該引擎也充當(dāng)內(nèi)部消息總線。視圖云(View Cloud)和外部系統(tǒng)可以通過B2C和B2B界面來調(diào)用服務(wù)。這個(gè)調(diào)用是通過SOAP服務(wù)的XML消息通過Web服務(wù)接口進(jìn)行的。根據(jù)請(qǐng)求消息,ESB實(shí)現(xiàn)基于行程的消息路由,從而調(diào)用適當(dāng)?shù)姆?wù)組件,包括協(xié)議和消息轉(zhuǎn)換,Ad-hoc服務(wù)棧等。


image.png

Ad-hoc服務(wù)棧是非強(qiáng)制性的輔助服務(wù)池。然而,這些服務(wù)可以被用來進(jìn)一步豐富和篩選定制需求的服務(wù)請(qǐng)求。服務(wù)虛擬化調(diào)解服務(wù)請(qǐng)求以調(diào)用和執(zhí)行模型中的所需服務(wù)。通過這種方式,集成邏輯與模型端部署的電子學(xué)習(xí)服務(wù)的業(yè)務(wù)邏輯分離開來。因此,各種各樣的電子學(xué)習(xí)應(yīng)用程序或客戶端可以通過ESB設(shè)計(jì)模式訪問電子學(xué)習(xí)服務(wù),而不考慮平臺(tái)或框架的異構(gòu)性。

5 總結(jié)

支持DI模式的ESB增強(qiáng)了服務(wù)的松散耦合,全局服務(wù)契約,服務(wù)實(shí)現(xiàn)自治,服務(wù)可重用性,服務(wù)模塊化,無狀態(tài)和動(dòng)態(tài)可發(fā)現(xiàn)性等特性。ESB將業(yè)務(wù)邏輯從集成邏輯和流程路由邏輯中分離出來,因此應(yīng)用程序和服務(wù)彼此分離,并可通過總線連接在一起作為事件驅(qū)動(dòng)型服務(wù)。

服務(wù)詳細(xì)信息(如服務(wù)注冊(cè)中心管理的元數(shù)據(jù))允許集成專家和管理員創(chuàng)建和管理面向服務(wù)的解決方案。服務(wù)虛擬化具有抽象的對(duì)等服務(wù),用于透明的服務(wù)查找。事件驅(qū)動(dòng)的服務(wù)調(diào)用啟用了可進(jìn)一步擴(kuò)展高度服務(wù)可靠性和可用性的異步通信。因此,ESB可以作為高度分布式系統(tǒng)中標(biāo)準(zhǔn)化的服務(wù)集成方式。因此,ESB可以作為高度分布式系統(tǒng)中標(biāo)準(zhǔn)化的服務(wù)集成方式。安全性嵌入ESB中,包含敏感的數(shù)據(jù)模型,從而為數(shù)據(jù)隱私提供更好的解決方案,這是適應(yīng)云計(jì)算驅(qū)動(dòng)應(yīng)用程序的一個(gè)重要障礙。

同時(shí)自定義級(jí)別的安全選項(xiàng)使服務(wù)客戶端能夠根據(jù)客戶端的優(yōu)先級(jí)來定義所需的安全級(jí)別,并且服務(wù)提供商通過協(xié)商某些性能吞吐量來實(shí)現(xiàn)這些安全級(jí)別。因此,與安全相關(guān)的風(fēng)險(xiǎn)現(xiàn)在由服務(wù)提供商和服務(wù)消費(fèi)者共同承擔(dān),這種安全性定制引起了對(duì)采用云驅(qū)動(dòng)型經(jīng)濟(jì)的高度重視。
跨Web服務(wù)的數(shù)據(jù)交換發(fā)生在開放標(biāo)準(zhǔn)上。 因此,ESB可以連接到任何BPM,包括電子學(xué)習(xí),電子商務(wù),電子政務(wù),它可以保護(hù)通信流量。ESB還無縫集成了不同的服務(wù),并確保這些服務(wù)的可靠性,重用性和可用性。 簡(jiǎn)而言之,SOA承諾的敏捷性可以通過使用ESB來實(shí)現(xiàn)。

參考文獻(xiàn)
[1] C.P. Chu, C.P. Chang, C.W. Yeh, and Y.F. Yeh, "A Web-Service Oriented Framework for building SCORM Compatible Learning Management Systems," International Conference on Information Technology: Coding and Computing (ITCC'04), vol. 1, pp.156–161,2004.
[2] Cisco, “Hyperconnectivity and the Approaching Zettabyte Era”, White paper, June 2009. URL:http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/VNI_Hyperconnectivity_WP.html
[3] D. Chappell, "Theory In Practice Enterprise Service Bus", California,US, O'Reilly Media Inc., June 2004 pp 2–98.
[4] D. Dagger, A. O’Connor, S. Lawless, E. Walsh, and V.P. Wade,“Service-Oriented E-Learning Platforms from Monolithic to Flexible Services”, IEEE Internet Computing, vol. 11, no. 3, pp. 28–35,May/June 2007.
[5] D. Nene, “A beginners guide to Dependency Injection”, July 2005,URL: http://www.theserverside.com/news/1321158/A-beginners-guide-to-Dependency-Injection.
[6] E. Gamma, R. Helm, R. Johnson, and John Vlissides, “Desing Patterns Elements of Reusable Object Oriented Software”, Addison-Wesley,New York, 1994, pp. 4–9, 273–303.
[7] F. Cohen, and B. Bartel, “Service Governance and Virtualization For SOA”, PushToTest, November 2006, URL:http://www.tibco.com/multimedia/wp-pushtotest_tcm8-709.pdf
[8] H.Y. Yang, E.Tempero, H. Melton, “An Empirical study into use of Dependency Injection in Java”, 19th Australian Conference on Software Engineering, ASWEC 2008. , pp.239–247, 26–28 March 2008.
[9] J. Yin, H. Chen, S. Deng, Z. Wu, and C. Pu “A dependable ESB Framework for Service Integration”, IEEE Internet Computing, vol. 12,no. 2, pp. 26–34, 2009.
[10] K. Doshi, “Enterprise Service Bus”, white paper, Mphasis, February 2009, URL: http://www.mphasis.com/pdfs/EnterpriseServiceBus.pdf
[11] M. Fowler, “Inversion of Control Containers and the Dependency Injection pattern”, January 2004, URL:“http://martinfowler.com/articles/injection.html
[12] M.T. Schmidt, B. Hutchison, P. Lambros, and R. Phippen, "The Enterprise Service Bus: Making Service-Oriented Architecture real,"IBM Systems Journal, vol.44, no.4, pp.781–797, 2005.URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5386706&isnumber=5386693.
[13] M.T. Su, C.S. Wong, C.F. Soo, C.T. Ooi, and S.L. Sow, “Service riented E-Learning System”, Information Technologies and Applications in Education, ISITAE '07, pp. 6–11. Nov 2007.
[14] R. Cortez, S. Rajam, A. Vazhenin, S. Bhalla, “E-Learning Distributed Cloud Build on MVC Design Patterns for Service Task Management”,Euro-American Conference on Telematics and Information Systems,Panama EATIS, in press, 2010.
[15] S. Rajam, R. Cortez, A. Vazhenin, S. Bhalla, "E-Learning Computational Cloud (eLC 2 ): Web Services Platform to Enhance Task Collaboration", 2010 IEEE/WIC/ACM International Conference on Web Intelligence and Intelligent Agent Technology, Toronto, Canada, pp 350–355, 2010.
[16] T. Oka, D. Vazhenin, and A. Vazhenin, “WEB-based Task Management Tools in e-Learning Environment”, In Proceedings of the International Conference on Computational Technologies in Electrical and Electronics Engineering Sibircon, IEEE Region 8, Novosibirsk, Russia, pp. 100–105, July 2008.
[17] T. Erl, “Service-Oriented Architecture Concepts, Technology, and Design”, Indiana, US, Prentice Hall, December 2006 pp 31–180.
[18] T. Erl, "SOA Design Patterns", Indiana, US, Prentice Hall, June 2009 pp 112–189, 531–715.

附:原英文地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,016評(píng)論 2 89
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • 已經(jīng)2017年了,想問你們,還記得去年這時(shí)候的新年規(guī)劃嗎?可能一部分人已經(jīng)在忙忙碌碌抑或悠悠閑閑的日子里一天天...
    90后呆顏仁閱讀 730評(píng)論 8 20
  • 001. 當(dāng)我們不確定答案時(shí),系統(tǒng)一會(huì)依據(jù)過往經(jīng)歷賭一個(gè)答案。 下賭的規(guī)則很明智:最近發(fā)生的事件和目前情景在選擇解...
    燕傳熙閱讀 243評(píng)論 0 0
  • 我寫不出這部小說,我寫不出自己的故事,這已經(jīng)超越了我自己的文學(xué)水平的問題,而是生活,生活本身也有問題。 繼續(xù)嘗試—...
    修一云閱讀 158評(píng)論 0 0