秦 偉
(長治職業(yè)技術學院,山西 長治 046000)
在全球范圍內,面向服務的架構(SOA)正成為未來企業(yè)軟件架構的趨勢。在國內,雖然近幾年來關于SOA的報道經常見諸各種媒體,但對SOA的研究還處于起步階段。
《信息周刊》和埃森哲公司通過對中國上千家企業(yè)機構的問卷調查,了解在商業(yè)科技推動企業(yè)競爭力及商業(yè)創(chuàng)新的背景下,中國企業(yè)部署SOA的現(xiàn)狀和未來的趨勢。調查的結果顯示[1]:擁有SOA應用的企業(yè)占8.8%,在大中型企業(yè)中,這個比例是10%,四分之三的被調查企業(yè)未對SOA采取任何行動。然而在較早開始SOA部署的企業(yè)中,60%的大中型企業(yè)和超過一半的小型企業(yè)都表示他們將增加在SOA上的投入。數(shù)據表明,SOA在中國尚處于應用啟蒙階,但企業(yè)在SOA上的投入卻在快速增加。
面向服務構架(Service-Oriented Architecture,SOA)是一種設計思想,它指導業(yè)務服務(business ser?vices)的創(chuàng)建和使用的各個方面,同時也定義和提供了一種具有一定特征的IT基礎設施。面向服務(SOA)與其說是一種技術,倒不如說是一種思維方式,它是一項大膽的基礎架構變革,通過技術和協(xié)同工作實現(xiàn)了文化變遷。如今,很多CIO都感受到了SOA的熱度,福布斯500強中的大部分企業(yè)也都在考慮實施SOA方案。
Web Services是SOA思想在改進DCOM和CORBA缺點上的努力。今天應用Web Services的面向服務架構與過去不同的特點就在于它們是基于標準以及松散耦合的。廣泛接受的標準(如XML和SOAP)提供了在各不同廠商解決方案之間的交互性;而松散耦合將分布計算中的參與者隔離開來,交互兩邊某一方的改動并不會影響到另一方。
SOA的強大和靈活性將給企業(yè)帶來巨大的好處。如果某組織將其IT架構抽象出來,將其功能以粗粒度的服務形式表示出來,每種服務都清晰地表示其業(yè)務價值,那么,這些服務的顧客(可能在公司內部,也可能是公司的某個業(yè)務伙伴)就可以得到這些服務,而不必考慮其后臺實現(xiàn)的具體技術。更進一步,如果顧客能夠發(fā)現(xiàn)并綁定可用的服務,那么在這些服務背后的IT系統(tǒng)能夠提供更大的靈活性。
集成所要解決的是不同系統(tǒng)在業(yè)務與集成需求上多個方面的差異,而且這些系統(tǒng)一般是由不同開發(fā)團隊、采用不同技術、為解決不同業(yè)務問題而開發(fā)的。
2.1.1 導致集成問題的業(yè)務驅動
我們先來看一些常見的、導致集成問題的業(yè)務驅動,以及機構為什么要在SOA與Web服務上進行投入[2]:
1)兼并與收購。兼并與收購(Merger and Acquisi?tion,簡稱M&A)活動常常造成“有多個IT系統(tǒng)可以處理相似事務”的局面,而要體現(xiàn)M&A的商業(yè)價值,就必須對這些IT系統(tǒng)加以合并。
2)內部重組。盡管內部重組所產生的影響不如兼并與收購(M&A)那樣巨大,但也造成了許多相同的問題,而且出現(xiàn)頻率更高。
3)應用/系統(tǒng)合并。如果相視的事務可被多個IT系統(tǒng)處理,那么需要通過合并或替換,以節(jié)省資金、減少人數(shù),使業(yè)務操作運行更加流暢。
4)不一致/重復/零散的數(shù)據。有時,重要的業(yè)務數(shù)據被分布于多個系統(tǒng)上,必須將它們加以合并和過濾才能有助于決策。
5)新業(yè)務戰(zhàn)略。創(chuàng)新型公司經營要根據變化的業(yè)務環(huán)境貫徹新的業(yè)務戰(zhàn)略,這就要求各個IT系統(tǒng)更高以嶄新的方式一同工作。最終,同行業(yè)的其他公司也必須做出同樣的改變才能保持競爭力。
6)使業(yè)務流程流暢。在過去的業(yè)務流程中,數(shù)據常常是手工錄入到不同系統(tǒng)中的。如今,這些系統(tǒng)往往都需要被新的支持“不需人工干預便可進行多系統(tǒng)間事務處理”的系統(tǒng)所替代。
2.1.2 集成面臨的技術挑戰(zhàn)
下面列出了進行集成時將面臨的部分難題[3]:協(xié)調由不同系統(tǒng)實現(xiàn)的、不兼容的業(yè)務流程;協(xié)調不同系統(tǒng)所使用的數(shù)據的差別(既包括數(shù)據語法,也包括信息語義);協(xié)調用以實現(xiàn)不同系統(tǒng)的、不兼容的技術;協(xié)調不同系統(tǒng)所采用的事務處理的時間粒度(周期);協(xié)調不同系統(tǒng)所使用的交互模式(例如同步通信、異步通信、事件驅動的處理等)。
2.1.3 “理想的”集成方案應滿足的要求
除上述技術挑戰(zhàn)以外,“理想”的集成方案還必須滿足下列要求:低成本、具有較快的投資回報(ROI);易于掌握和管理;不會影響現(xiàn)有系統(tǒng);具有可伸縮性、可靠性、高可用率、容錯性及安全性等等;靈活的易于對各項目的具體需求進行定制。
在進行項目集成的時候,有時戰(zhàn)術性與機會性的方法較好,有時戰(zhàn)略性與系統(tǒng)性方法更合適——這完全依賴于具體的業(yè)務需求。下面分別針對戰(zhàn)略性方法和戰(zhàn)術性方法列出了一些具體的業(yè)務目標,如表1所示。
表1 戰(zhàn)略性方法與戰(zhàn)術性方法的比較
業(yè)務人員與技術人員常常會奇怪,哪一種集成方法更好?是戰(zhàn)略性方法還是戰(zhàn)術性方法?這沒有嚴格的規(guī)律。不過,在眾多專用的戰(zhàn)術集成上花去的成本,很快就會超過一個更具戰(zhàn)略性的方法的成本。
2.1.4 集成可在不同技術層次上進行
集成可在許多不同的IT技術層次上進行[4]。
1)數(shù)據集成。關注數(shù)據級的集成,常常通過同步各種不同數(shù)據庫中的內容來實現(xiàn)的。存在的關鍵涉及協(xié)調不同數(shù)據庫的數(shù)據模式、協(xié)調數(shù)據元素的含義等。
2)消息集成。關注于通過“在應用間交換消息”來構建集成,這些消息通常代表了一個在應用中發(fā)生的事務,需要將它們可靠的傳遞到其他應用。存在的關鍵問題涉及在應用數(shù)據和消息間做相互轉換,轉換不同應用所采用的不同消息格式。
3)組件集成。關注于用組件技術(如DCOM、CORBA、.NET或J2EE等)來包裝傳統(tǒng)系統(tǒng),以及用它們的組件接口來連接組件。存在的關鍵問題是組件模型之間的集成(比如集成CORBA與DCOM、或J2EE與.NET將是一個難題)。
4)應用集成。關注利用各種應用發(fā)布的APIS、對象模型、消息格式、數(shù)據庫模式等來集成。存在的關鍵問題涉及協(xié)調不同應用的數(shù)據模型,以及解決“目前大多數(shù)套裝應用僅提供了初步的集成設施”的問題。這種形式的集成,一般都是指集成套裝應用系統(tǒng)。
5)服務集成。關注于創(chuàng)建抽象的,不與某一數(shù)據庫、組件模型或套裝應用相關的服務,并在集成系統(tǒng)時將這些服務作為構建。存在的關鍵問題是通常需要一種成熟的集成構架(即一種面向服務的架構),以實現(xiàn)服務接口與下層實現(xiàn)的明確分離。
6)流程集成。關注于通過集成現(xiàn)成的IT資產(比如數(shù)據、組件、應用和服務等)來創(chuàng)建新的業(yè)務流程。這種形式的集成,將業(yè)務流程的定義和管理,顯示的與特定的應用分離開。存在的關鍵問題是通常需要各個機構在業(yè)務流程上達成一致,而且需要一個成熟的集成基礎設施,以便對現(xiàn)有IT資產進行良好的集成。
7)用戶界面集成。通常指在桌面或表示層進行集成(例如portal產品)。關鍵問題是Portals僅解決了集成難題中與用戶互動的部分。
8)B2B集成。關注于多個機構間的關鍵業(yè)務流程與關鍵服務的自動化。如果只涉及兩個機構間的集成,那么只需要將兩個系統(tǒng)用VPN和文件傳輸對接起來即可。如果很多機構都想基于Internet將供應鏈上的各個流程自動化,那么復雜性將呈指數(shù)增長。
目前,用XML和Web服務進行集成與互操作有兩種方法[5-8]:
1)Web服務集成(Web Services Integration,WSI):戰(zhàn)術性與機會性的“應用Web服務來解決集成與互操作問題”的方法。
2)面向服務的集成(Service-Oriented Integration,SOI)。在SOA的環(huán)境下用Web服務進行集成,即一種戰(zhàn)略性的系統(tǒng)的“應用Web服務來解決集成與互操作問題”的方法。
這兩種方法都是以XML、SOAP和WSDL為基礎的,它們都使用由Web服務平臺定義的相同技術,但只有SOI基于SOA的原則(包括定義一個SOA治理框架、定義各種SOA流程以及最佳實現(xiàn)方式等),以戰(zhàn)略的和系統(tǒng)的方式來應用這些技術。而WSI是讓各個集成團隊在UDDI注冊庫中分別編制目錄,沒有或者很少關注各個項目間的一致性。
實際上,這兩種方法,不存在哪個更好,雖然它們會導致不同結果,但是哪個更好取決于項目的目標。下面分別詳述WSI和SOI。
2.2.1 Web服務集成(WSI)
如果只追求立即見效與短期投資回報而不考慮長期成本的話,用Web服務集成(WSI)開展戰(zhàn)術性與機會性的集成項目是比較湊效的。
通常,一個WSI項目要涉及許多(2個~4個)需要彼此交換數(shù)據的系統(tǒng)。項目團隊將根據下列信息來定義SOAP消息:要在各系統(tǒng)間交換的數(shù)據;各系統(tǒng)已經能夠理解的各種傳統(tǒng)消息格式;可用于訪問各系統(tǒng)的傳統(tǒng)API或方法。然后,項目團隊將定義WSDL契約(包括接口、操作、消息交換模式)。企業(yè)級服務質量(比如安全性、可靠的消息傳遞、事務管理、故障轉移等)是根據實際需要實現(xiàn)的,可以用相應的策略信息定義它在完成一系列WSI項目之后,機構實際上已經創(chuàng)建了一系列點對點集成。當然,這里所謂的點對點集成不是老式的點對點(比如一個使用文件傳輸(FTP),另一個使用TCP/IP,還有一個使用數(shù)據庫同步)。這里的點對點指的是它們不必使用相同的數(shù)據模型,不必使用相同的安全架構,也不需支持相同程度的可重用性。
2.2.2 面向服務的集成(SOI)
SOI是在SOA的環(huán)境下用Web服務進行的集成。SOI是戰(zhàn)略性的、系統(tǒng)的應用Web服務來解決集成與互操作問題。如果希望在某一集成架構上作巨大投入,并獲得最佳的長期效果,那么SOI將是不錯的選擇[9,10]。
與WSI不同的是,實現(xiàn)SOI應從第一個集成項目之前開始,在啟動SOI階段應完成如下工作:
1)定義SOA治理框架、過程、準則、模型和工具等。
2)對服務領域進行形式化建模。
3)定義一個服務分類層次,以便各個集成項目可對服務進行一致的分類與編目,以促進將來重用。
4)如果Web服務平臺為完成相似任務提供了多種選擇,應選擇一種一致的方法應用于各個項目。
圖1顯示了一個SOI如何隨著時間而逐步發(fā)展。用建模工具創(chuàng)建服務領域的初始數(shù)據、服務與流程模型,然后將它們保存在一個元數(shù)據倉庫中。各個集成項目都是從使用和改進同樣的模型開始,因此在該服務領域內的系統(tǒng)間交換信息時,使用的“客戶”與“賬戶”的定義是一致的(盡管它們在各個傳統(tǒng)系統(tǒng)內部的表示可能會有所不同)。IT系統(tǒng)在運行時通過服務注冊庫(比如UDDI)查找服務,然后直接調用服務。
這種既集中有分散的SOI架構,使各個集成團隊可以獨立實現(xiàn)和注冊各自的服務提供者(或者編寫一個全新的服務,或者用SOI對傳統(tǒng)系統(tǒng)進行包裝),同時可以確保各個集成團隊所完成的服務可以相互訪問和使用。
[1] 中國科永聯(lián)高級技術培訓中心.軟件體系結構[DB/oL].http://www.itisedu.com/phrase/[2006-03-31]-358465.html.
[2]Sommerville.軟件工程[M].程成,陳霞,譯.北京:機械工業(yè)出版社,2007.
[3] 毛新生.SOA原理、方法、實踐[M].北京:電子工業(yè)出版社,2007.
[4] 國家SOA應用中心.中國SOA應用調查[EB/oL].http://se.csai.cn/Monograph/20061116-0855151952.htm.
[5] 國家SOA應用中心.中國SOA應用現(xiàn)狀分析報告[EB/oL].http://news.csdn.net/n/2007-0313/101948.html.
[6] 郭海林.淺談:SOA實施現(xiàn)狀及面臨的挑戰(zhàn)[EB/oL].http://www.enet.com.cn/article/2007/0315/A20070315485059.shtml.
[7] Eric NewComer Greg Lomow.Understanding SOA with Web Services[M].徐涵,譯.北京:電子工業(yè)出版社,2006.
[8] 崔曉波.SOA概述[EB/oL].http://se.csai.cn2006-11-14./Monograph/200611141-116331889.htm.
[9] Jeff Hanson Event-driven services in SOA[EB/oL].[2005-01-31]http://www.javaworld.com/javaworld/jw-01-2005/jw-0131-soa.html 2005-1.
[10]亦海義.面向服務的體系結構SOA簡介[EB/oL].[2006-01-16].http://tech.51cto.com/art/200601/16185.htm.