張 乾
摘 要:系統(tǒng)集成是Web Service和SOA的主要應用領(lǐng)域,集成技術(shù)主要用于解決數(shù)據(jù)庫爆炸和信息孤島問題。集成通過自適應技術(shù)來整合IT信息資源,發(fā)揮IT的整體作用,集成技術(shù)包括了連接、管理、規(guī)范和整合企業(yè)內(nèi)外的信息。隨著Web Service和SOA的不斷成熟,一種基于SOA的集成框架ESB也日趨完善。ESB融合了EAI和B2B的優(yōu)點,采用ESB可以使系統(tǒng)集成更方便、更經(jīng)濟。
關(guān)鍵詞:SOA 系統(tǒng)集成 Web Service ESB
中圖分類號:TP303文獻標識碼:A 文章編號:1673-8454(2009)17-0081-04
一、概念
系統(tǒng)集成泛指連接、管理和組合各種企業(yè)內(nèi)和企業(yè)間的系統(tǒng),使集成后的系統(tǒng)能以統(tǒng)一的方式互聯(lián)互操作以支持業(yè)務過程的自動化技術(shù)。將兩個或者兩個以上的系統(tǒng)進行集成時主要涉及組織、角色、任務和過程的定義和管理。系統(tǒng)集成的主要工作有集成方案的確定,集成功能范圍的劃分,工作流系統(tǒng)的創(chuàng)建改造,數(shù)據(jù)格式的規(guī)范,組織模型的統(tǒng)一等。
SOA(Service-Oriented Architecture),一般翻譯為“面向服務的體系結(jié)構(gòu)”,它是一種良好分布式軟件架構(gòu)模型,它將不同的功能單元(服務)通過單元之間的接口和契約聯(lián)系起來。接口采用中立的方式進行定義,獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言,使得構(gòu)建的服務可以以一種統(tǒng)一和通用的方式進行交互。所以,SOA是將軟件組織在一起的抽象概念。
二、系統(tǒng)集成
系統(tǒng)集成是一種新興的服務方式,指在企業(yè)范圍內(nèi)外,將多個應用系統(tǒng)的過程、軟件、標準、數(shù)據(jù)庫和硬件集成在一起,使集成后的系統(tǒng)成為一個無縫運作的系統(tǒng)。系統(tǒng)集成的本質(zhì)就是最優(yōu)化的綜合統(tǒng)籌設計,對一個大型的綜合計算機網(wǎng)絡系統(tǒng),系統(tǒng)集成所要達到的目標——整體性能最優(yōu),即所有部件和成分合在一起后不但能工作,而且全系統(tǒng)是低成本的、高效率的、性能勻稱的、可擴充的和可維護的系統(tǒng)。一般的系統(tǒng)集成包括業(yè)務過程集成、應用集成、數(shù)據(jù)集成和功能集成。通過集成可以增進與客戶的關(guān)系,增強供應鏈間的聯(lián)系,改善內(nèi)部流程,減少市場周期等。我們經(jīng)常把系統(tǒng)集成分為:表示集成、數(shù)據(jù)集成和功能集成(如圖1所示),另外API集成是所有集成的基礎(chǔ)。系統(tǒng)集成實現(xiàn)的關(guān)鍵在于解決系統(tǒng)之間的互聯(lián)和互操作性問題,它是一個多廠商、多協(xié)議和面向各種應用的體系結(jié)構(gòu)。這就需要解決各類設備、子系統(tǒng)間的接口、協(xié)議、系統(tǒng)平臺、應用軟件等與子系統(tǒng)、建筑環(huán)境、施工配合、組織管理和人員配備相關(guān)的一切面向集成的問題。
目前系統(tǒng)集成的領(lǐng)頭公司主要有:IBM、EBA、Microsoft、Sybase等,它們都很好地實現(xiàn)自己的系統(tǒng)集成的解決放方案。
三、SOA的關(guān)鍵技術(shù)
與SOA相關(guān)的技術(shù)很多,主要有XML、Web Service、CORBA(DOM、EJB)、ESB、SOAD、BPM(EAI、B2Bi)等。
1.SOA
SOA是目前IT領(lǐng)域的熱點,它是具有分布、協(xié)作、共享特征軟件的首選體系結(jié)構(gòu)。
SOA的關(guān)鍵是“服務”的概念,W3C將服務定義為:“服務提供者完成一組工作,為服務使用者交付所需的最終結(jié)果。最終結(jié)果通常會使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化?!?/p>
Service-architecture.com將SOA定義為:“本質(zhì)上是服務的集合。服務間彼此通信,這種通信可能是簡單的數(shù)據(jù)傳送,也可能是兩個或更多的服務協(xié)調(diào)進行某些活動。服務間需要某些方法進行連接。所謂服務就是精確定義、封裝完善、獨立于其他服務所處環(huán)境和狀態(tài)的函數(shù)。”
Looselycoupled.com將SOA定義為:“按需連接資源的系統(tǒng)。在SOA中,資源被作為可通過標準方式訪問的獨立服務,提供給網(wǎng)絡中的其他成員。與傳統(tǒng)的系統(tǒng)結(jié)構(gòu)相比,SOA規(guī)定了資源間更為靈活的松散耦合關(guān)系?!?它是一種架構(gòu)模型,可以根據(jù)需求通過網(wǎng)絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。
Gartner則將SOA描述為:“客戶端/服務器的軟件設計方法,一項應用由軟件服務和軟件服務使用者組成……SOA與大多數(shù)通用的客戶端/服務器模型的不同之處,在于它著重強調(diào)軟件組件的松散耦合,并使用獨立的標準接口。”
SOA支持將業(yè)務功能單元作為連接服務或可重復進行集成,在需要時可通過網(wǎng)絡訪問這些服務或任務。SOA是一種松散耦合和粗粒度的服務結(jié)構(gòu),它將服務組合成各種應用程序,提高了代碼的重用率、方便地復用各種應用資源,使業(yè)務更加靈活和便利,增加功能的同時減輕了工作量。SOA原型的一個典型例子就是CORBA(公共對象請求代理體系),隨著Web Service技術(shù)的成熟,SOA也有了進步,主要體現(xiàn)在以XML為基礎(chǔ)的技術(shù)上。在Web Service中通過WSDL來描述接口,這樣系統(tǒng)的動態(tài)性、靈活性、自治性就會有很大的提高。
SOA的主要組件結(jié)構(gòu)如圖2所示。SOA是通過http傳遞的SOAP消息。SOAP(簡單對象訪問協(xié)議)是一種基于XML文本的通信協(xié)議,它是一種輕型的分布式計算協(xié)議,在分布式環(huán)境中交換信息。Http允許SOAP利用Web服務器、代理服務器和防火墻等進行投資,達到簡單、可擴展的目的。
2.XML
XML(Extensible Markup Language)可擴展標記語言,是一套定義語義標記的規(guī)則,也是元標記語言,用于定義其他與特定領(lǐng)域有關(guān)系的、語義的、結(jié)構(gòu)化的標記語言的句法語言。XML具有簡明有效、易學易用、開放、國際化、標準高效、可擴展等特點。它是一種簡單、靈活的標準格式,為基于Web的應用提供了一個描述數(shù)據(jù)和交換數(shù)據(jù)的有效手段。使用XML有以下好處:使搜索更有意義,開發(fā)靈活的Web應用軟件更簡單,可實現(xiàn)不同的數(shù)據(jù)集成,適用于多種應用環(huán)境,方便客戶端的數(shù)據(jù)處理和計算,數(shù)據(jù)標準滿足個性化要求,局部數(shù)據(jù)可隨時更新,與現(xiàn)有的Web發(fā)布機兼容,可擴展性高和有良好的壓縮性能。
3.Web Service
Web Service是由URI標識的軟件應用,其接口和綁定可以用XML來定義和描述并且可以被發(fā)現(xiàn),與其他軟件通過基于Internet的協(xié)議以XML消息交換方式直接交互。Web Service是實現(xiàn)SOA的具體方式之一,它是架構(gòu)在XML和Internet之上的分布式計算技術(shù)。Web Service是系統(tǒng)集成中用來解決應用程序之間相互通信的技術(shù),同時也是描述一系列操作的接口。在Web Service中需要一系列標準的支持,例如WSDL、UDDI、SOAP等,這些標準在角色、操作和構(gòu)件三者之間起連接作用,如圖3所示。
(1)WSDL(Web Service Description Language)包含文檔或面向過程消息的端點操作信息的XML格式網(wǎng)絡服務描述,可以綁定描述與SOAP、HTTP GET/POST和MIME技術(shù)。
(2)UDDI(Universal Description,Discovery and Integr-ation,統(tǒng)一描述、發(fā)現(xiàn)和集成)是一個規(guī)范,可以用于以Web Service為基礎(chǔ)的信息注冊,是一個公用的可接入集合,以登記的形式將信息登記出來以便可以發(fā)現(xiàn)這些服務。
(3)SOAP(Simple Object Access Protocol)是一種輕量級的編程,常用于沒有控制中心、分布式的環(huán)境中交換信息,它以XML為基礎(chǔ),一般由信封、編碼規(guī)則、遠程過程調(diào)用和應答規(guī)則、捆綁方式組成。
4.CORBA、DOM、EJB
CORBA是Common Object Request Broker Architecture的縮寫,簡稱公共對象請求代理體系,它由國際對象,管理組織OMG指定。在該環(huán)境下開發(fā)的軟件既可面向?qū)ο笥志哂锌芍赜眯?、可移植性及可操作性等特點。CORBA是一種分布式計算標準,其主要分三層:對象請求代理、公共對象服務和公共設施。CORBA是一種應用于開發(fā)和配置分布式應用的服務器端中間件模型規(guī)范,包括:抽象構(gòu)件模型、構(gòu)件容器結(jié)構(gòu)和構(gòu)件的配置以及打包規(guī)范。
5.ESB
ESB(Enterprise Service Bus)采用SOA原則,在大粒度服務級別通過事件驅(qū)動和基于XML的消息引擎,以與實現(xiàn)無關(guān)的方式集成企業(yè)應用的新型標準。它使用許多可能的傳遞消息協(xié)議來負責適當?shù)目刂屏魃踔吝€可能是服務之間所有消息的傳輸,相當于計算機的系統(tǒng)總線。模塊(服務)都以松耦合連接到BUS上,以此方式來提高服務效率,ESB主要有智能路由(Routing)、傳輸(Transformation)和事件(Event)組成,如圖4所示。
6.SOAD
SOAD(Service-Oriented Analysis and Design,面向服務的分析與設計),是專門為面向服務的體系結(jié)構(gòu)范型設計的軟件建模和開發(fā)方法,它建立在早期包括面向?qū)ο蟮姆治龊驮O計以及業(yè)務過程管理在內(nèi)的過程開發(fā)基礎(chǔ)之上。所有的設計方法都提倡信息隱藏、抽象和關(guān)注點分離。但是SOAD加入了對服務倉庫、服務編排和企業(yè)服務總線的設計方法。SOAD是以架構(gòu)為中心,以用例和業(yè)務過程驅(qū)動,迭代式開發(fā)方法。
四、基于J2EE的系統(tǒng)集成解決方案
不管是C/S還是B/S結(jié)構(gòu)的系統(tǒng)軟件,最終的目的只有一個——對各種服務的集成。軟件技術(shù)發(fā)展到今天,EIS的集成出現(xiàn)了兩大主流,即SUN的J2EE方案和MS的.NET方案,他們要做的都是將不同的服務進行集成后統(tǒng)一接口暴露給客戶端。J2EE并非一個產(chǎn)品,而是一系列的標準。J2EE(Java 2 Enterprise Edition)技術(shù)的基礎(chǔ)是Java 2平臺,它提供了對EJB、Servlet、JSP、XML等技術(shù)的全面支持,其最終目標是成為一個支持企業(yè)級應用開發(fā)的體系結(jié)構(gòu),簡化企業(yè)解決方案的開發(fā)、部署和管理等復雜問題。事實上,J2EE已經(jīng)成為企業(yè)級開發(fā)的工業(yè)標準和首選平臺。J2EE為搭建具有可伸縮性、靈活性、易維護性的商務系統(tǒng)提供了良好的機制。
J2EE平臺通過新的JAX-RPC1.1 API提供完整的Web服務支持,這種API很好地支持基于Servlet和企業(yè)Bean的服務端點。JAX-RPC1.1基于WSDL和SOAP協(xié)議提供了與Web服務的互操作性。J2EE平臺也支持Web Services for J2EE規(guī)范(JSR 921),它定義了Web服務部署需求并利用了JAX-RPC編程模型。J2EE1.4平臺有以下優(yōu)點:提供了一個多層應用程序模型,這意味著應用程序的不同部分可以運行在不同的設備上。J2EE結(jié)構(gòu)定義了一個客房機層,一個中間層(由一個或多個子層組成),以及一個EIS層。基于容器的組件管理,J2EE基于組件開發(fā)模型的中樞容器(Container)概念,容器提供了組件服務的運行時(Runtime)環(huán)境,組件可以期望它們的服務在任何J2EE平臺上都有效。所有的EJB容器提供對EJB組件的事務和生命周期管理的自動支持,并支持對EJB的查找或其他的服務。容器還提供對企業(yè)信息系統(tǒng)的標準化訪問。J2EE1.4平臺升級新增加的技術(shù)大部分和Web服務相關(guān)。在J2EE1.4平臺下,開發(fā)、部署、發(fā)現(xiàn)Web服務變得非常方便。J2EE1.4提供了Web服務總框架,如圖5所示,主要包括了:Web Services for J2EE、JAX-RPC、SAAJ、JAXR、Connector Architecture1.5等,其中JAX-RPC是J2EE1.4平臺中Web服務的核心技術(shù)。除此之外,J2EE還聲稱支持WS-I Basic Profile1.0。
在J2EE平臺下,Web服務器通過兩種方式訪問J2EE應用程序,一種是攜帶一組類型參數(shù)(最初的Web服務版本)的RPC風格調(diào)用(同步和異步),這種類型的服務調(diào)用非常類似傳統(tǒng)的方法調(diào)用,使用在分布式對象和RPC實現(xiàn)中;另外一種則是消息傳遞風格調(diào)用(同步和異步),這種類型的服務調(diào)用類似傳統(tǒng)的消息系統(tǒng)。客戶在訪問JAX-RPC API創(chuàng)建的Web服務,JAX-RPC就使用Servlet來實現(xiàn)相應的Web服務。Web服務的客戶也可以通過Bean的服務端點接口訪問無狀態(tài)會話Bean。如果不采取消息的同一規(guī)范,則Web服務的客戶不能訪問其他類型企業(yè)的Bean。
五、總結(jié)
SOA將應用程序不同的功能單元,通過組件(服務)之間接口和契約聯(lián)系起來,甚至將不同的應用系統(tǒng)整合成一個功能強大、服務性能強的系統(tǒng)。其接口采用中立的方式進行定義,我們一般稱之為松耦合。松耦合的系統(tǒng)有很好的靈活性,當整個應用程序的每個組件的內(nèi)部結(jié)構(gòu)和實現(xiàn)逐個發(fā)生改變時,它能繼續(xù)存在。接口獨立于硬件、操作系統(tǒng)和編程語言,使得系統(tǒng)中的服務可以統(tǒng)一和通用的方式進行消息傳遞和交互。通過使用基于XML的語言WSDL來描述接口,相應的服務已經(jīng)轉(zhuǎn)到更動態(tài)且靈活的接口系統(tǒng)。以SOA為基礎(chǔ)的系統(tǒng)集成很好地解決了信息孤島的問題。
參考文獻:
[1]全國計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試辦公室,2006年下半年試題分析與解答.北京:清華大學出版社,2007.
[2]張友生.系統(tǒng)分析師技術(shù)指南[M].北京:清華大學出版社,2007.
[3](美)科拉夫茲格,(美)本克,(美)斯拉姆著,韓宏志譯. Enterprise SOA中文版——面向服務架構(gòu)的最佳實戰(zhàn)[M].北京:清華大學出版社,2006.
[4]梁愛虎.SOA思想、技術(shù)與系統(tǒng)集成應用詳解[M].北京:電子工業(yè)出版社,2007.
[5]毛新生.SOA 原理·方法·實踐[M].北京:電子工業(yè)出版社,2007.
[6]Stephen R.Schach.面向?qū)ο笈c傳統(tǒng)軟件工程[M].北京:機械工業(yè)出版社,2006.
[7]史濟民等.軟件工程——原理、方法與應用[M].北京:高等教育出版社,2002.
[8]喻堅,韓燕波.面向服務的計算:原理和應用[M].北京:清華大學出版社,2006.
[9]吳維元等.Web服務數(shù)據(jù)傳輸通道的安全性分析[M].北京:網(wǎng)絡安全技術(shù)與應用,2008.2.