企業(yè)服務(wù)總線(ESB)(6)
2.3借鑒來自 EAI 和 SOA 的最佳實踐
在我們繼續(xù)前進并且犧牲我們的先前努力,丟掉前面的每個技術(shù),并且向失敗舉起我們的雙手之前,還有一條路能夠讓我們能夠利用從學(xué)來的寶貴經(jīng)驗,并且仍然遠離偶然架構(gòu)—那就是采用ESB。 集成的最佳實踐,已經(jīng)經(jīng)過對集成Broker的經(jīng)驗被精煉,如今還可以結(jié)合建立于XML、Web Services、可靠的異步消息、以及分布式的ESB集成組件之上的基于標(biāo)準(zhǔn)的架構(gòu)來一起使用。 他們一起形成一個高度分布的、松散耦合的集成架構(gòu),以提供集成Broker的所有主要功能,卻沒有其所有的障壁。
遠離偶然架構(gòu)并且使用 ESB重構(gòu)到的一個統(tǒng)一的和一致的集成骨干,涉及到下面小結(jié)描述的步驟。
2.3.1 采用XML
雖然ESB 確實能夠傳送許多類型的數(shù)據(jù)格式,但是采用XML作為應(yīng)用間交換數(shù)據(jù)的手段 (圖 2-2),如同已經(jīng)被用在一些傳統(tǒng)的 EAI 方式中一樣,可以由很多好處。我們將會在第 4 章中看到,使用XML可以一勞永逸地隔絕全局的數(shù)據(jù)格式和接口的變更和偶然架構(gòu)本身。ESB可以進一步通過檢查XML消息的內(nèi)容,并且控制其向何處提交,有時候還可以改變提交路徑來包括可能會修改和增加數(shù)據(jù)的附加服務(wù),一次來促進業(yè)務(wù)處理。
圖表 2?2 ESB 使用XML來作為應(yīng)用間共享數(shù)據(jù)的方式
2.3.2 采用Web ervices并實現(xiàn) SOA
以 SOA 的方式來思考和規(guī)劃在向 ESB重構(gòu)的一個基本步驟。如圖 2-3 所示,服務(wù)級接口的引入在提供了一個公共抽象層來創(chuàng)建接口和實現(xiàn)之間的分離。這樣就通過使用一種通用的接口定義機制,比如Web Services描述語言(WSDL),來減輕了由細粒度服務(wù)接口組成的復(fù)合業(yè)務(wù)流程定義的構(gòu)造的難度。
圖表 2?3 Web 服務(wù)和 SOA 提供了一個隔離接口和實現(xiàn)的通用抽象層
雖然服務(wù)級接口的抽象是正確方向上的一步,結(jié)果仍然是一個路由邏輯密合于應(yīng)用之內(nèi)的硬連接 ( 注意在圖 2-3 中,“流程邏輯”仍然黏附于應(yīng)用)。Web Services中的傳統(tǒng)智慧已經(jīng)模仿了客戶/服務(wù)器模式。甚至在一個Web Services分布式網(wǎng)絡(luò)中,一個應(yīng)用總是另一個 “客戶”。范例用法仍然需要抽象層也包括膠水代碼,比如說“調(diào)用服務(wù)X上的方法a,然后調(diào)用服務(wù)Y上的方法 b()….”諸如此類。。
Web Services實現(xiàn)中所確實的東西是將流程路由邏輯從接口定義和應(yīng)用邏輯中分離出來觀念。如圖 2-4所示,ESB 就提供了那種隔離,并且仍然完全利用SOA。
圖表 2?4 ESB 將業(yè)務(wù)流程的路由邏輯從接口定義和應(yīng)用實現(xiàn)中分離出來
通過分離接口定義和流程路由邏輯,我們已經(jīng)開始看到ESB 形式的總線層(圖 2-5)。通過將流程業(yè)務(wù)路由邏輯和接口定義放入總線層之內(nèi),應(yīng)用能夠繼續(xù)自己集中于實現(xiàn)邏輯。 我們在第 1 章中看到過,ESB 被實際上區(qū)分為多個功能層。它為應(yīng)用間的可靠的、異步的、基于消息的通信提供了一種堅固的底板。也是在這里,流程路由通過基于檢查消息中的XML內(nèi)容來附加的條件決策點,從而變得具具智能。這個智能路由是被可管理地定義的、可以被修改、并且可以加上增值服務(wù),比如補充數(shù)據(jù)變換功能。ESB 提供了一個可擴展的集成服務(wù)網(wǎng)絡(luò),并且可以無限伸展,同時仍然可以以逐漸增加的方式進行構(gòu)建
圖表 2?5 ESB 可靠地連接和協(xié)調(diào)SOA 的服務(wù)之間的交互
posted on 2007-08-17 12:19 鐵手 閱讀(1681) 評論(0) 編輯 收藏 所屬分類: 企業(yè)架構(gòu) 、WS/SOA/ESB