【正文】
18 / 18。Rick 是 IBM 的一位值得信賴的 IT 架構(gòu)設(shè)計專業(yè)人員。他是 EMEA WebSphere Lab Services 的 Architecture Services group 的一位成員,他從 1999 年 WebSphere 軟件平臺首次發(fā)布時就開始關(guān)注它。 在Developer Bookstore購買關(guān)于各種各樣的技術(shù)主題的打折圖書。 在 developerWorks的 SOA and Web services 技術(shù)專區(qū)查找其他 SOA 和 Web 服務(wù)技術(shù)資源。 本文所用的資料來自 forthing 紅皮書Patterns: Implementing an SOA using an Enterprise Service Bus,SG24634600,草案,作者 Martin Keen 等。 訪問 IBM 的按需商務(wù)(on demand business)以獲得更多關(guān)于按需操作環(huán)境的詳細(xì)信息。 研究IBM Patterns for ebusiness網(wǎng)站。 最初定義企業(yè)服務(wù)總線(Enterprise Service Bus)的文章Gartner需要訂閱,不過,也可以通過搜索它們的站點進(jìn)行查找,該文章的標(biāo)題為Predicts 2003: Enterprise Service Buses Emerge,2002 年 12 月 9 日發(fā)布,作者 Roy W. Schulte。 (Enterprise Service Bus)鏈接列表。 閱讀“遷移到面向服務(wù)的體系結(jié)構(gòu),第 1 部分”(developerWorks,2003 年 12 月)和“遷移到面向服務(wù)的體系結(jié)構(gòu),第 2 部分”(developerWorks,2003 年 12 月)。 Patterns: Serviceoriented Architecture and Web Services紅皮書,SG24630300,2004 年 4 月,作者 Endrei M. 等。 在 CBDI 論壇查閱由 Lawrence Wilkes 撰寫的文章SOA Save Our Assets(需要訂閱)。 要了解 Web 服務(wù)技術(shù)如何為實現(xiàn)面向服務(wù)的體系結(jié)構(gòu)提供必要的基礎(chǔ),請閱讀 Annrai OToole 撰寫的 Web ServiceOriented Architecture The Best Solution to Business Integration 。 參考資料 在這個系列的下一個部分中,我將討論一些通用的場景,以及與這些場景相關(guān)的解決方案模式,同時指出影響這些場景最一般的問題。 建模 消息處理 安全 集成 通信 Business Service Choreographer 從 ESB 調(diào)用服務(wù),然后通過 ESB 把這些流程作為新的服務(wù)公開。這些功能都是通過 ESB 實現(xiàn)的。 回頁首結(jié)束語在本文中,我討論了大多數(shù)通用的 SOA 原則,以及它們與 Web 服務(wù)技術(shù)的關(guān)聯(lián)。然而,相比之下,這些安全標(biāo)準(zhǔn)也是最近才提出的,而且對它們的產(chǎn)品支持仍在發(fā)展的過程中,而不是已經(jīng)確定了,這里尤其需要特別考慮的就是它們的互操作性。更有可能的情況是,如果需要一些安全級別,則評估什么形式的安全是可以接受的就非常重要。 回頁首影響 ESB 的安全問題我不想在這里直接提出安全需求,不過它們對選擇 ESB 的實現(xiàn)技術(shù)非常重要。 特別地,不管是現(xiàn)在還是以后,下面的需求類型可能會導(dǎo)致更復(fù)雜高級的技術(shù)的使用:如果想要用另一個服務(wù)實現(xiàn)來替代原來的服務(wù)實現(xiàn),就需要修改應(yīng)用程序代碼并重新部署這些代碼。 目前還沒有用于控制服務(wù)尋址和命名的管理功能。 SOAP 和 WSDL 是開放、與實現(xiàn)無關(guān)的服務(wù)通信和連接模型。 HTTP 傳輸協(xié)議被廣泛地使用。 SOAP/HTTP 支持請求響應(yīng)(RequestResponse)通信規(guī)范。 URL 尋址和現(xiàn)有的 HTTP 和 DNS 基礎(chǔ)架構(gòu)提供了一個具有路由服務(wù)和位置透明性的“總線(bus)”。這些技術(shù)的使用非常接近也非常符合需求,但是不必強(qiáng)制要求使用它們。 支持服務(wù)提供的多種集成方式,比如 Java 2 連接器、Web 服務(wù)、異步通信、適配器等等 服務(wù)交互 一個開放且與實現(xiàn)無關(guān)的服務(wù)消息傳遞與接口模型,它應(yīng)該將應(yīng)用程序代碼從路由服務(wù)和傳輸協(xié)議中分離出來,并允許替代服務(wù)的實現(xiàn)。 至少一種形式的消息傳遞范型(例如,請求/響應(yīng)、發(fā)布/訂閱等等) 提供位置透明性的路由和尋址服務(wù) ESB 提供了管理服務(wù)基礎(chǔ)架構(gòu)的方法和在分布式異構(gòu)環(huán)境中進(jìn)行操作的功能。 ESB 可以作為分布式的異構(gòu)基礎(chǔ)架構(gòu)進(jìn)行實現(xiàn)。 SOA 原則需要使用與實現(xiàn)無關(guān)的的接口、強(qiáng)調(diào)位置透明性和可互操作性的通信協(xié)議、相對粗粒度和封裝可重用功能的服務(wù)定義。 ESB 是一種邏輯體系結(jié)構(gòu)組件,它提供與 SOA 的原則保持一致的集成基礎(chǔ)架構(gòu)。特別是在下一部分,我們將討論 ESB 為支持 SOA 所需的最低功能由什么構(gòu)成。在本系列文章中,我們不打算詳細(xì)討論上面的每一個功能類別。然而,使用不同的技術(shù)來實現(xiàn) ESB 可能會使它們的性能、可伸縮性和可靠性這些特性顯著不同,同時 ESB 功能和所支持的開放標(biāo)準(zhǔn)也會有所不同。 策略驅(qū)動的行為,特別是對于服務(wù)級別、服務(wù)功能的安全和質(zhì)量(例如 Web 服務(wù)策略(WSPolicy)) 開發(fā)和部署工具 數(shù)據(jù)格式庫 對象建模 系統(tǒng)管理和管理工具的集成 記錄、測量和監(jiān)控 數(shù)據(jù)壓縮 中介 消息和數(shù)據(jù)轉(zhuǎn)換 編碼的邏輯 可用性 性能 機(jī)密性 授權(quán) 各種確定的傳遞范例(例如 Web 服務(wù)可靠消息傳遞(WSReliableMessaging)或?qū)?EAI 中間件的支持) 安全性 服務(wù)級別 服務(wù)調(diào)用的語言接口(例如 Java 和 C/C++/C) 協(xié)議轉(zhuǎn)換 EAI 中間件的連接性 服務(wù)聚合 服務(wù)目錄和發(fā)現(xiàn) 集成 服務(wù)質(zhì)量 支持替代服務(wù)實現(xiàn) 同步和異步消息傳遞 響應(yīng)/請求 MQ、HTTP 和 HTTPS) 通信技術(shù)、協(xié)議和標(biāo)準(zhǔn)(例如 IBM174。 路由 ESB 實現(xiàn)所需的最低功能將在下面支持 SOA 的最低功能的 ESB 實現(xiàn)部分中進(jìn)行探討。雖然有一些功能非?;A(chǔ),但是其他的功能(如自動化功能或智能化功能)代表著向按需操作環(huán)境轉(zhuǎn)變的重要步驟。事實上,這種用途可能需要附加的功能(如合作伙伴關(guān)系管理),這些功能不是 ESB 的一部分,并且不一定受到 ESB 技術(shù)的支持。這有助于查看這些連接到 ESB 的組件,但它們并不是 ESB 的一部分。然而,Business Service Choreographer 在編排業(yè)務(wù)流程和服務(wù)中所扮演的角色確定了這種業(yè)務(wù)工作流技術(shù)是一種與基礎(chǔ)架構(gòu)技術(shù) ESB 分離的技術(shù)。這樣的目錄可以視為 ESB 的一部分;然而,在這樣的解決方案變得普遍之前,業(yè)務(wù)服務(wù)目錄可能與 ESB 是分離的。然而,SOA 可能還有單獨的業(yè)務(wù)服務(wù)目錄(business service directory),其最基本的形式可能是設(shè)計時服務(wù)目錄,用于在組織的整個開發(fā)活動中實現(xiàn)服務(wù)的重用。圖 3展示的 SOA 說明了這些組件之間的關(guān)系。圖 2: 分布式 ESB 基礎(chǔ)架構(gòu)的集中控制我還應(yīng)該定位在 SOA 基礎(chǔ)架構(gòu)中 ESB 與其他組件之間的關(guān)系,特別是與 Service Directory、Business Service Choreography、以及 BusinesstoBusiness (B2B) Gateway 這些組件之間的關(guān)系。使物理分布需求與候選技術(shù)的功能相匹配是 ESB 設(shè)計的一個重要方面。圖 2展示了這一點。ESB 和中心輻射型(hubandspoke)解決方案都集中控制配置,比如服務(wù)交互的路由、服務(wù)命名等等。然而,這并不是真正的差別。本文剩余部分將討論 ESB 在 SOA 中的角色,包括它提供的除了基本的路由和傳輸以外的功能,如下面的ESB 功能模型部分中所述。因此,它將當(dāng)今正在使用的主要企業(yè)集成模式組合成一個實體。這樣的服務(wù)路由和替代是 ESB 的許多功能中的一部分。然而,基礎(chǔ)架構(gòu)支持在不影響服務(wù)的客戶端的情況下由另一個服務(wù)實現(xiàn)替代原有的服務(wù)實現(xiàn)也是至關(guān)重要的。啟用 SOA 應(yīng)用程序涉及到創(chuàng)建服務(wù)接口,服務(wù)接口可以直接也可以間接地通過使用適配器用于現(xiàn)有的或新的功能。注意,雖然 Web 服務(wù)技術(shù)非常符合這些原則,但它并不是唯一符合這些原則的技術(shù)。 封裝可重用業(yè)務(wù)功能的服務(wù)的定義。 利用強(qiáng)調(diào)位置透明性和可互操作性的通信協(xié)議。 利用顯式的與實現(xiàn)無關(guān)的接口來定義服務(wù)。因此,在本系列的最后一篇文章中,我將考慮 SOA 和 ESB 的發(fā)展路線,以指導(dǎo) ESB 功能和技術(shù)的最初應(yīng)用,并且闡述如何選擇循序漸進(jìn)的方法。隨著 ESB 解決方案的發(fā)展和成熟,它所需要的功能也在不斷地發(fā)展。在接下來的文章中,我將在 SOA 中定義一組 ESB 場景,以定義 ESB 或 SOA 實現(xiàn)的共同起點。通過確定這些最低功能,您可以確定利用何種現(xiàn)有技術(shù)來實現(xiàn)支持 SOA 的 ESB。然而,并不是 ESB 能夠傳遞值的每一種情形都需要所有的功能。ESB 支持異構(gòu)環(huán)境中的服務(wù)、消息,以及基于事件的交互,并且具有適當(dāng)?shù)姆?wù)級別和可管理性。然而,有必要闡明 ESB 究竟是一個產(chǎn)品、技術(shù)、標(biāo)準(zhǔn),還是別的什么。引言最新的 IT 集成是使用 Web 服務(wù)技術(shù)實現(xiàn)面向服務(wù)的體系結(jié)構(gòu)(SOA),有許多優(yōu)秀的文章講述了該技術(shù)的好處和相關(guān)的實踐(請參見參考資料)。通過確定這些最低功能,您可以確定利用何種現(xiàn)有技術(shù)來實現(xiàn)支持 SOA 的 ESB。它的出現(xiàn)將極大地方便 SOA 系統(tǒng)架構(gòu)師、設(shè)計人員、開發(fā)人員快速地開發(fā)基于SOA的應(yīng)用項目。與此同時,我們還是 IBM 開發(fā) SOA 的軟件平臺 SOA Integration Framework 的主力軍。我們正在實施的 SOA 項目涵蓋了很多的重要行業(yè),包括零售業(yè)、航運(yùn)業(yè)、電力、銀行、保險等等。 Enterprise service bus making SOA real作者 Beth Hutchison, Peter Lambros, Rob Phippen, MarcThoms Schimdt 關(guān)于作者IBM中國軟件開發(fā)實驗室SOA設(shè)計中心 是IBM全球四個SOA設(shè)計中心中最大的一個,成立一年多來,已經(jīng)取得了可喜的成就。 Patterns: Implementing an SOA using an