一、 總體介紹
隨著互連網、電子商務的風起雲湧,外部世界的快捷變化要求企業能夠快速反應,而要做出快速反應,離不開企業內部資訊流的暢通無阻。在企業的資訊化過程中,針對不同部門不同的應用需求,開發出了各種各樣的應用軟體。這些軟體基本滿足了企業的應用需要,但從企業整體角度出發,要達到內部資訊流的暢通無阻,就必須對不同的應用軟體進行整合才能實現。
本文將對現有最為常見的兩種企業整合方案:EAI(Enterprise Application Integration,公司專屬應用程式整合)與SOA(service-oriented architecture,服務導向架構)進行探討與比較。
二、 EAI(Enterprise Application Integration,公司專屬應用程式整合)
EAI是將基於異構平台下的業務應用系統整合在一起的一種技術。EAI通過中介軟體作為粘合劑來串連企業內外各種業務相關的異構系統、應用以及資料來源,從而滿足企業內部應用系統之間資訊共用的需要。 EAI可從以下的幾個層面來實施:
● 使用者介面整合:這個層面是一個面向使用者的整合,強調的是要將來自多個資訊源的資訊以一種可以定製的、個人化的介面展現給使用者。
● 應用整合:應用整合是以應用系統為基本整合單位,通過中介軟體,為兩個應用系統提供業務整合。
● Data Integration:Data Integration是應用整合的基礎。在實施整合之前,必須首先對資料進行標識並編成目錄,另外還要確定中繼資料模型。這三步完成以後,資料才可以在多個資料庫系統之間進行分布和共用。
EAI的結構一般可以分為以下兩種形式:
1. Hub/spoke (集線器架構)
Hub/Spoke架構是星型拓撲結構,由處於系統中央的一個Hub和串連在Hub及應用系統的多個適配器(adapter)組成。適配器在Hub和應用系統之間,進行資料格式的轉換與傳輸。適配器將應用系統的資料資訊轉化為Hub可以識別的格式並傳遞給Hub, Hub通過訊息代理管理訊息路由,並將這些來自應用系統的資料訊息按其要求的路由規則傳遞給目標應用系統的適配器。
這種架構中的Hub使得系統易於管理,但是不易擴充。在需求突增時,只能通過硬體的升級才能增加系統容量。然而,這種升級方式的改進是有限的,不足以應付越來越多的整合需求,因此出現了聯邦Hub/spoke架構的概念,在這種架構下,出現了多個Hub,每一個Hub擁有本地中繼資料,並且同全域中繼資料進行同步。對於全域規則和中繼資料的改變將自動傳播到其他的Hub上。
圖2.1 EAI之hub/spoke結構
2. BUS(匯流排架構)
EAI的匯流排架構可以看作是Hub/Spoke星型結構描述的一種變形。將星型中心點Hub的傳輸訊息的功能提煉成一條訊息傳遞匯流排,而將適配器、整合引擎綁在了應用系統所在的平台。應用程式使用適配器轉換訊息格式,並將訊息發送到匯流排上。這些訊息通過訊息匯流排流動到預訂的應用系統的適配器中。該適配器再將訊息翻譯成符合其應用系統要求的格式。
由於將適配器和整合引擎捆綁在了應用程式的平台上,bus架構在獲得比hub/spoke布局更好的擴充性的同時提升了整合的複雜性。但兩種架構本質上都是應用系統之間點到點的整合模式。
圖2.2 EAI之bus匯流排結構
三、 SOA(service-oriented architecture,服務導向架構)
SOA(服務導向架構)將企業中各個系統應用程式的不同功能單元抽象為服務,通過這些服務之間定義良好的介面和契約聯絡起來。介面是採用中立的方式進行定義的,它獨立於實現服務的硬體平台、作業系統和程式設計語言。這使得構建在各種各樣的系統中的服務能夠通過統一和通用的方式進行互動。
SOA架構由服務匯流排、服務類別目錄、門戶、流程管理等幾個核心組件構成的。這些核心組件協同工作共同支撐服務的部署、運行與管理監控。
l 服務匯流排
SOA整合平台通過企業服務匯流排(ESB)完成業務應用系統和其他系統的功能調用的統一接入,業務應用系統和公用功能作為標準服務在匯流排上公開,隔離服務消費者和服務提供者的技術實現細節,實現松耦合。
所有的服務調用均通過服務匯流排進行。但服務匯流排不儲存服務資訊,在運行時,它動態地會通過服務類別目錄的查詢介面,查詢服務的路由資訊、服務的存取權限、服務的優先順序、服務的版本資訊等,從而決定如何進行服務調用。
l 服務類別目錄
服務類別目錄主要用於儲存運行時進行服務調用所需的必要資訊,它要求能實現快速的服務定址。服務類別目錄儲存的資訊包括:服務的路由資訊、服務的存取權限、服務的優先順序、服務的版本資訊等。
l 流程管理
商務程序通過流程設計工具,對服務進行編排,實現企業商務程序,產生可執行檔商務程序服務,在商務程序引擎中部署執行。商務程序管理同時提供業務的管理和監控工具,進行商務程序的監控管理。
l 門戶
門戶作為SOA架構中展示層。門戶可以對服務、流程、應用模組等進行組合,形成複合應用。門戶同時也是展示服務(Portlets)的運行環境。
門戶對服務的使用和流程(以流程服務的形式)的整合也通過服務匯流排進行。
四、 EAI與SOA的比較
我們從以下的幾個方面對EAI與SOA進行比較:
1. 整合的本質
EAI的整合方式從本質而言是基於訊息的整合,因此EAI的各組成組件,如適配器與hub,都帶有訊息轉換與訊息路由的功能,在EAI的運作過程中,單個應用系統只關心其與EAI串連部分訊息的輸入與輸出,不關心具體的業務處理,業務處理都是在應用系統內部完成的。
SOA的整合方式,其本質是對業務功能服務化後根據商務程序進行編排,是真正意義上的基於功能服務的整合。當然在基於SOA的整合中同樣包含了基於訊息整合的功能。
因此基於SOA的整合方式比EAI的整合方式適用範圍更廣。
2. 整合對象的顆粒度
SOA和EAI從不同的視角切入去看待企業已有的資訊資源,並基於此對企業已有的資源進行梳理、分類和整合。
EAI從應用系統的層面去看待企業已有資訊資源,企業的每一個應用系統被看作一個整合單元,EAI工作的目標就是,通過為這些已有的應用系統提供一種中間溝通方式,讓這些應用軟體之間可以進行資料的共用與交換,從而盤活這一個個獨立的“資訊孤島”。
SOA從提供服務、使用服務的角度去看待企業已有的資訊資源。在這種方式下,同樣的一種資源既可能是服務提供者,也同樣可以是服務使用者; 在這種方式下,一個應用模組可能只提供一種服務,因此被封裝成一個服務,也可能由於提供了多種服務,而需要進一步劃分。
顯然,SOA方式整合處理的顆粒度比EAI要小,因此SOA方式比EAI方式更具有靈活性。
3. 標準化
SOA在實現公司資訊化整合的同時,也將實現企業級服務的高度可重用作為目標,因此,在SOA架構中任何一種介面、通訊、協議都是遵循相應的國際標準,如:標準描述語言(WSDL)、發現協議(UDDI)和訊息協議(SOAP)等。
EAI則大多使用基於具體實施EAI企業中制定的私人標準。基於私人標準的優點是可以在一定程度上減輕EAI中介層對應用系統訊息翻譯轉換的壓力,在應用系統較少的情況下可以提高EAI的整體效能,但私人標準同時也對企業整合的靈活可擴充性上帶來損失,當企業引入新的應用系統,或當某個應用系統需要做比較大的改動時,整個EAI匯流排的適應性將變得十分脆弱。
在系統較少的情況下或是系統整合的早期階段,採用私人標準的EAI會體現出效能高,實現難度低等優點,但在企業規模不斷增長的過程中,新引入系統的整合難度將因為標準的不統一而呈指數級上升。
4. 靈活可擴充性
由於對標準的良好支援,使得SOA具有可靈活擴充的特性,而EAI要達到同樣的擴充效果,其代價將遠遠高於SOA。例如,現在有甲、乙兩個系統需要整合。假設它們通過SOA完成整合形成A方案,使用EAI完成整合形成B方案。當整合需求發生變化後,甲乙兩個系統需要以另外一種商務邏輯進行整合。對於A方案而言,所需要做的工作比較簡單,只需將之前的商務邏輯開啟,重新組合一下商務邏輯就可以實現。而對於B方案而言,過程就會麻煩的多,需要根據新的商務邏輯,重新設計開發滿足新商務邏輯需要的適配器和中介層的訊息處理邏輯。
5. 重用性
公司資訊化建設的投資可以分為兩個部分:現有應用系統的維護與新系統的開發費用。在SOA架構下,各個服務是以完全獨立的方式通過服務類別目錄暴露在SOA整合平台上的,當新整合進來的應用系統需要使用現有的某個服務時,可以直接使用,無需再次開發,即服務是可重用的,只需用開發目前還沒有的業務功能服務,這樣可以充分利用現有的資源,降低成本。
通過EAI方式實現公司專屬應用程式整合,其開發的適配器、中介層訊息轉換規則和訊息路由都是緊耦合的,當新系統要在EAI中進行整合,便需要對現有的部分適配器、中介層訊息轉換規則與訊息路由進行改造,無法重用。
因此,使用SOA比使用EAI更經濟,尤其在多個應用系統相互整合的複雜情境下,SOA的優點將更加突出。
6. SOA企業服務匯流排與EAI匯流排的比較
ESB(Enterprise Service Bus企業服務匯流排)是一種用於推動SOA的基礎設施,從技術上而言,企業服務匯流排是一種訊息傳遞的主幹線,它用於提供協議轉換,訊息格式的轉換,地址路由,接收並分發從各個串連到ESB的服務要求與系統傳遞來的訊息。
在EAI的匯流排架構中,EAI為訊息傳播提供了一個中央訊息主幹線---Bus。應用程式使用適配器將訊息發布到匯流排,訊息通過匯流排流動到預訂的應用程式中。匯流排是訊息流程動的通道,捆綁在應用軟體端的適配器負責將訊息在應用程式端的格式與符合匯流排標準的格式之間轉換。因此,對於每一個應用程式,都需要單獨為其開發符合應用程式自身要求的適配器,而由於沒有遵循統一的標準,這些適配器是無法通用的。當某個應用系統進行比較大的改動時,則有可能存在對適配器的改造已經不能滿足系統變更需求的情況,此時甚至有可能會牽涉到對BUS匯流排的修改,給公司資訊架構帶來很大的風險。
從ESB和EAI的匯流排工作過程上的區別可以看出ESB承擔了更多的責任,做了更多的事情,為整合後的系統提供了完善、堅固的底層支援。而EAI的匯流排,只是一個訊息的分發器。功能上的差別導致了系統整合到匯流排上的代價的巨大差異。
7. 系統整合的代價
SOA架構中的企業服務匯流排與EAI中私人形式BUS儘管結構較為相似,但是在系統整合中卻導致整合的成本代價卻有很大的差別。這種在代價上的差異主要由兩個方面的因素造成的,一是私人形式的匯流排提供很多產品套件式的內建函數功能,這些函數功能需要根據業務需求進行開發;二是很多的私人形式的匯流排採用專有的訊息格式來提高效能,但卻增加了系統開發代價。企業服務匯流排都是基於標準的。企業服務匯流排主要的優點就是相比集線器架構和基於產品套件的匯流排架構的支出要低,而且它是完全基於業界標準化。
另一個關鍵的不同是:ESB具有分散的和分布式體繫結構,更加輕型的安裝,而EAI遵從HUB-SPOKE體繫結構,因而企業中進行多個大型應用系統之間的整合時,硬體成本高,擴充性也會相對比較薄弱。.
五、 總結
到目前為止,傳統的編程技術所形成的軟體系統都是剛性的。也就是說,一旦開發完成並投入運行,就是固定不變的,不能在使用過程中進行調整和改變。在商務程序中,軟體系統嚴格按照預先設定的目標,各功能模組按照確定的順序執行。如果資料結構或者商務邏輯發生改變,就必須對所有相關的軟體模組、資料來源和訊息逐個進行修改。就算是有了EAI中介軟體,這種情況也並沒有得到根本性的改變。
今天,SOA改變了這種現狀。SOA採用服務要求(Service Request)的方式,使軟體系統向“柔性化”邁進了一大步。與傳統的軟體系統不同,SOA只限定服務所需的資訊並提出服務要求,但是不限定提供服務的模組。SOA架構替代EAI實現公司專屬應用程式整合是必然的趨勢,只有通過SOA架構來進行公司專屬應用程式整合,才能使公司資訊化快速、穩定發展。