SOA与EAI的比较
在一家銀行基于ESB產品做企業應用集成項目,自然要言必稱SOA??蛻魧OA也比較感興趣,他們有EAI產品和項目經驗。一日問SOA和EAI到底什么區別,SOA比EAI究竟多了哪些東西。當時就自己的理解和客戶描述了一番,回來總結整理成文。這里不是給客戶做PreSale, 盡可能從本質的層面來分析比較這兩個技術解決方案和思想?;ㄩ_兩朵,各表一支,我們先概括一下EAI和SOA。
1. EAI的概述?
? ? 先來概括一下EAI的解決方案的中心思想。EAI企業應用集成即基于已有系統應用開發新的業務應用系統。面對的現狀是:
?
- 各個系統的不同接口,可能是不同程序語言的API,消息,或者訪問數據庫。
- 不同系統的接口有不同的調用規范,即調用順序,上下文關系,Session等。
- 不同的數據。包含數據類型,數據格式,數據業務語義的不同。
- 新業務流程的編寫。
?
? ? 那么如果自己寫程序開發一個跨多個已有系統的新業務時,需要在新業務實現中調用這些系統的不同接口,需要做這些系統之間的數據轉換。這是一個很大而且煩瑣的工作??赡茉诔绦蛑屑纫{用Java接口,又要調用C++接口;可能要在這些系統兩兩之間做數據轉換,需要做C2n=n(n-1)/2次轉換。顯然這不是一個好的方式。?
? ? 為了簡化這些工作,EAI平臺的解決方法是:
?
- 定義了中間層數據類型,數據格式,接口規范,接口通信方式和通信協議。
- 平臺去做已有系統和中間層之間的數據格式轉換。
- 對已有系統接口的封裝,提供統一的接口。
- 使用圖形工具進行流程編排,編寫數據轉換和映射規則。由EAI平臺引擎來執行。
?
? ? EAI中心的解決方案和思想是制定統一的數據和接口定義,使EAI應用的開發者能夠使用一種數據和接口定義來實現新的業務,由平臺來做統一的數據和接口與已有系統各種不同的數據和接口之間的適配。一般EAI軟件平臺都包含兩類產品:流程編排和驅動工具+適配器。
?
- 適配器的主要功能是做已有系統和中間層之間的數據轉換;已有系統接口調用的封裝,統一接口和已有系統接口的適配。
- 流程工具的主要功能是基于調用適配器功能操作,編排自動的操作流程,編寫各個操作之間的數據計算和映射,引擎來執行這些流程。?
?
? ? 例如TIBCO的EAI平臺包含兩個產品流程工具Business Works, 適配器Adapter。簡單的適配器包含在Business Works中,提供一些簡單操作的封裝,如文件操作,JMS消息收發等;復雜適配器封裝復雜的技術,軟件或者系統,如CORBA,MQ , SAP等,復雜適配器有獨立于Business Works的引擎,兩者通過消息中間件交互。Business Works提供這些操作的流程編排,操作之間基于XSLT的數據映射。
TIBCO EAI平臺結構圖?
2. SOA概述
? ? SOA不是一個產品,而是一個構建企業應用和集成企業已有系統的指導方法和思想。它將企業應用系統看作一個分布式系統,由很多獨立的,提供一定業務功能的服務組成。服務彼此通過標準的接口協議相互調用,可以方便地將多個服務編排組成一個新的業務流程。當出現新的業務需求時, 不需要從零開始實現, 只需將已有的服務進行編排裝配來實現新業務??旖莸貙崿F新業務需求是企業保持競爭力,在未來高度競爭,服務專業化,定制化的環境下生存發展的關鍵所在。在設計上,SOA需要一個方法論來指導如何把一個系統劃分為粒度合適,高可復用性的服務集合;在技術上,SOA同樣要解決異構服務接口之間的互聯互通問題,連兼容各種已有的數據和接口標準,來連接各種已有軟件和系統。為此SOA需要做的工作有:
- 定義統一的服務接口描述,接口規范,接口訪問策略。?
- 支持多種服務接口通信方式和通信協議。?
- 支持多種服務流程邏輯實現方式 ,BPEL , java, C++ 。?
- 支持多種已有組件技術,Web Service, EJB, COM,CORBA等??梢酝ㄟ^服務接口調? 用組件功能,也可以通過組件接口調用服務功能。?
- 定義統一的數據類型和數據格式。定義數據對象模型。?
- 提供統一的數據訪問接口,支持多種類型的數據,關系數據庫記錄,EJB Entity Bean ??梢允褂脴藴史战涌谠L問不同類型的數據。?
- 提供業務建模工具,定義企業資源,組織結構,業務流程。
? ? SOA技術提倡開放性的規范和標準,一系列屬于SOA范疇的規范和標準完成了以上所列的工作。
- 服務組件架構規范-------SCA(Service Component Architecture) 定義了服務的元數據描述語法,包括服務接口(Interface),服務屬性(Property),服務實現方式(Implementation),服務訪問策略(Policy),服務通信方式和通信協議(Binding),服務之間的調用和被調用關系(Service and Reference)等。?
- 服務數據訪問對象規范---SDO (Service Data Object)定義了統一的數據類型,數據格式,統一的數據訪問接口支持多種已有類型的數據,如關系數據庫記錄,EJB Entity Bean等。?
- 服務流程編排運行規范---BPEL(Business Prosess Execution Language)定義了基于已有服務編排實現邏輯流程的語法。?
- 服務實現規范-----------JBI (Java Business Integration) JBI是JAVA服務運行平臺實現的設計規范,定義了一組平臺提供商需要遵循的服務提供方接口。?
- Web服務接口定義規范----WSDL(Web Service Definition Language)服務接口定義規范,描述了接口的輸入,正常輸出,異常輸出。?
? ? SOA平臺的主要組成是BPM+ESB。BPM,業務流程管理(Business Process Management )。業務流程對應于企業真正的業務實現,滿足一定的業務需求。業務流程層面, 有以下的一些概念: 組織機構 (Organization), 業務角色(Role), 業務事件(Business Event),自動業務和人工業務,工作列表,執行規則等。 業務流程是由服務編排組合實現而成,服務提供確定的功能,不限制實現方式和接口訪問方式。服務可以用來實現一定的業務功能,也可以封裝已有系統的接口,調用已有系統的功能;企業服務總線(Enterprise Service Bus)是服務的開發,運行管理平臺。支持服務的創建,注冊,部署運行,監控治理。目前多數的BPM提供BPEL引擎,ESB支持SCA和SDO規范。?
? ? 對比EAI平臺可以看到,ESB做了標準數據和接口到各個技術和系統的數據和接口,兩者之間的適配工作,BPM提供了基于基本操作或者服務的流程編排和驅動。SOA和EAI從技術角度來看,層次結構相同,解決方式一致。?
? ? 例如TIBCO的SOA平臺包括最新的ESB產品Active Matrix, 和BPM產品iProcess。Active Matrix支持SCA規范,同時和已有的Business Works 和Adapter產品兼容。Adapter可以封裝為服務運行在Matrix,作為連接已有系統的基礎服務;Business Works 支持BPEL,可以將運行在Matrix上的多個服務編排出新的流程,同時這個流程可以作為更高一級的組件服務或者業務服務運行在Matrix上。
TIBCO的SOA平臺結構圖?
3. SOA和EAI的相同點
- 在技術層面有統一的數據和接口定義,可以方便連接各個異構系統。?
- 都兼容各組件技術(CORBA,COM,EJB),遠程調用技術(RMI)。?
- 提供將簡單服務或者操作編排組織成更復雜的服務或者操作。
? ? 從技術角度上講,兩者是很類似的。?
4. SOA和EAI的區別
- SOA提供了開放的規范和標準:數據定義SDO,接口定義SCA,服務編排BPEL; EAI的規范和標準都是各個EAI平臺廠商私有的。?
- SOA服務調用時可以動態綁定服務。對于EAI來說,調用是設計時靜態綁定的。?
- SOA提供的服務接口是開放的,可以在SOA平臺外以異構的接口調用SOA平臺上的服務,如可以使用EJB接口調用SOA平臺上的服務。EAI的接口是私有的,只能在EAI平臺內部調用,EAI提供只一種標準的接口來調用異構系統的功能。?
- 從設計思想角度,SOA旨在基于分布式的高可復用性服務集合來構建企業應用系統;EAI只提供連接手段,流程編排手段,在設計思想方式上不做任何限制。?
- SOA的服務分業務服務,基礎服務多個層次;EAI中的適配器相當于封裝已有系統的基礎服務。?
? ? EAI平臺互聯不同的組件技術和產品,它使用與SOA類似的技術方式實現,即制定統一的數據和接口定義;SOA提供了一種開放的標準的異構接口互聯互通技術,應用這種技術,SOA平臺可以提供連接已有組件技術和軟件產品的適配性基礎服務。
?
? ? SOA強調服務的復用性,實現異構服務接口的互聯互通。EAI強調集成異構系統,把各個已有系統的異構接口封裝為統一的接口。EAI不強調服務復用,但也可以用SOA的思想配以EAI平臺來設計開發企業應用。相當于用C語言也可以寫面向對象的程序,雖然不如直接使用Java方便。
? ? 在設計層面,SOA將應用系統劃分為高可復用的服務組成的集合。服務分業務服務,組件服務和基礎服務幾個層次。設計思路更強調從上到下,即從業務到技術;EAI提供接口封裝技術,自動流程的編排。適配器相當于基礎服務。設計思路一般是從下而上,即從技術到業務。技術層面,SOA是舊的組件技術和EAI技術的組合和升級。
? ? 所以實施SOA項目,最主要的還是在設計層面上如何把業務系統劃分為粒度合適,高聚合低耦合,復用性好又兼顧性能的服務集合;于技術層面,SOA提供了開放的數據接口標準,方便異構系統的互通互連,和EAI功能相同,但更開放更靈活。
最后給SOA起一個技術層面的新名字“企業組件接口集成”。SOA=ECII (Enterprise Component Interface Integration) 。
總結
以上是生活随笔為你收集整理的SOA与EAI的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP连接外部ORACLE数据库
- 下一篇: SAP运维和SAP实施有什么区别