SOA作為一種面向服務(wù)的架構(gòu),是一種軟件架構(gòu)設(shè)計的模型和方法論。從業(yè)務(wù)角度來看,一切以最大化“服務(wù)”的價值為出發(fā)點,SOA利用企業(yè)現(xiàn)有的各種軟件體系,重新整合并構(gòu)建起一套新的軟件架構(gòu)。這套軟件架構(gòu)能夠隨著業(yè)務(wù)的變化,隨時靈活地結(jié)合現(xiàn)有服務(wù),組成新軟件,共同服務(wù)于整個企業(yè)的業(yè)務(wù)體系。簡單的理解,我們可以把SOA看作是模塊化的組件,每個模塊都可以實現(xiàn)獨立功能,而不同模塊之間的結(jié)合則可以提供不同的服務(wù),模塊之間的接口遵循統(tǒng)一標準,可以實現(xiàn)低成本的重構(gòu)和重組。在SOA的技術(shù)框架下,可以把雜亂無章的龐大系統(tǒng)整合成一個全面有序的系統(tǒng),從而增加企業(yè)在業(yè)務(wù) 發(fā)展過程中應(yīng)用系統(tǒng)的靈活性,實現(xiàn)最大的IT資產(chǎn)利用率。
一、SOA詳細定義
面向服務(wù)的體系結(jié)構(gòu)(SOA)是一個組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接 口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu) 建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進行交互。
這種具有中立的接口定義(沒有強制綁定到特定的實現(xiàn)上)的特征稱為服務(wù)之間的松耦合。松耦合系統(tǒng)的好處有兩點,一點是它的靈活性,另一點是,當組成整個應(yīng)用程序的每個服務(wù)的內(nèi)部結(jié)構(gòu)和實現(xiàn)逐漸地發(fā)生改變時,它能夠繼續(xù)存在。而另一方 面,緊耦合意味著應(yīng)用程序的不同組件之間的接口與其功能和結(jié)構(gòu)是緊密相連的,因而當需要對部分或整個應(yīng)用程序進行某種 形式的更改時,它們就顯得非常脆弱。
對松耦合系統(tǒng)的需要來源于業(yè)務(wù)應(yīng)用程序需要,根據(jù)業(yè)務(wù)的需要變得更加靈活,以適應(yīng)不斷變化的環(huán)境,比如經(jīng)常改變的政策、業(yè)務(wù)級別、業(yè)務(wù)重點、合作伙伴關(guān)系、行業(yè)地位以及其他與業(yè)務(wù)有關(guān)的因素,這些因素甚至會影響業(yè)務(wù)的性質(zhì)。我們稱能 夠靈活地適應(yīng)環(huán)境變化的業(yè)務(wù)為按需業(yè)務(wù),在按需業(yè)務(wù)中,一旦需要,就可以對完成或執(zhí)行任務(wù)的方式進行必要的更改。
雖然面向服務(wù)的體系結(jié)構(gòu)不是一個新鮮事物,但它卻是更傳統(tǒng)的面向?qū)ο蟮哪P偷奶娲P停嫦驅(qū)ο蟮哪P褪蔷o耦合的,已 經(jīng)存在二十多年了。雖然基于 SOA 的系統(tǒng)并不排除使用面向?qū)ο蟮脑O(shè)計來構(gòu)建單個服務(wù),但是其整體設(shè)計卻是面向服務(wù)的。由于它考慮到了系統(tǒng)內(nèi)的對象,所以雖然 SOA 是基于對象的,但是作為一個整體,它卻不是面向?qū)ο蟮摹2煌幵谟诮涌诒旧怼OA 系統(tǒng)原型的一個典型例子是通用對象請求代理體系結(jié)構(gòu),它已經(jīng)出現(xiàn)很長時間了,其定義的概念與 SOA 相似。然而,現(xiàn)在的 SOA 已經(jīng)有所不同了,因為它依賴于一些更新的進展,這些進展是以可擴展標記語言(eXML)為基礎(chǔ)的。
在SOA架構(gòu)風格中,服務(wù)是最核心的抽象手段,業(yè)務(wù)被劃分(組件化)為一系列粗粒度的業(yè)務(wù)服務(wù)和業(yè)務(wù)流程。業(yè)務(wù)服務(wù)相 對獨立、自包含、可重用,由一個或者多個分布的系統(tǒng)所實現(xiàn),而業(yè)務(wù)流程由服務(wù)組裝而來。一個"服務(wù)"定義了一個與業(yè)務(wù)功 能或業(yè)務(wù)數(shù)據(jù)相關(guān)的接口,以及約束這個接口的契約,如服務(wù)質(zhì)量要求、業(yè)務(wù)規(guī)則、安全性要求、法律法規(guī)的遵循、關(guān)鍵業(yè)績指標(Key Performance Indicator,KPI)等。接口和契約采用中立、基于標準的方式進行定義,它獨立于實現(xiàn)服務(wù)的硬件平 臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在不同系統(tǒng)中的服務(wù)可以以一種統(tǒng)一的和通用的方式進行交互、相互理解。除了這種不 依賴于特定技術(shù)的中立特性,通過服務(wù)注冊庫(Service Registry)加上企業(yè)服務(wù)總線(Enterprise Service Bus)來支持動態(tài) 查詢、定位、路由和中介(Mediation)的能力,使得服務(wù)之間的交互是動態(tài)的,位置是透明的。技術(shù)和位置的透明性,使得 服務(wù)的請求者和提供者之間高度解耦。這種松耦合系統(tǒng)的好處有兩點:一點是它適應(yīng)變化的靈活性;另一點是當某個服務(wù)的內(nèi) 部結(jié)構(gòu)和實現(xiàn)逐漸發(fā)生改變時,不影響其他服務(wù)。而緊耦合則是指應(yīng)用程序的不同組件之間的接口與其功能和結(jié)構(gòu)是緊密相連 的,因而當發(fā)生變化時,某一部分的調(diào)整會隨著各種緊耦合的關(guān)系引起其他部分甚至整個應(yīng)用程序的更改,這樣的系統(tǒng)架構(gòu)就 很脆弱了。
二、SOA架構(gòu)的優(yōu)點
SOA的主要優(yōu)點概括為:IT能夠更好更快地提供業(yè)務(wù)價值(Business Centric)、快速應(yīng)變能力(Flexibility)、重用 (Reusability)
也可以細分為以下幾個方面:
①服務(wù)之間通過簡單、精確定義的接口進行通信,不涉及底層編程接口和通信模型。
②粗粒度性:粗粒度服務(wù)提供一項特定的業(yè)務(wù)功能,采用粗粒度服務(wù)接口的優(yōu)點在于使用者和服務(wù)層之間不必再進行多次的往復(fù),一次往復(fù)就足夠了。
③松耦合性:松耦合性要求SOA架構(gòu)中的不同服務(wù)之間應(yīng)該保持一種松耦合 的關(guān)系,也就是應(yīng)該保持一種相對獨立無依賴的 關(guān)系。這樣的好處有兩點,首先是具有靈活性,其次當組成整個應(yīng)用程序的服務(wù)內(nèi)部結(jié)構(gòu)和實現(xiàn)逐步地發(fā)生變化時, 系統(tǒng)可以繼續(xù)地獨立存在。而緊耦合意味著應(yīng)用程序的不同組件之間的接口與其功能和結(jié)構(gòu)是緊密相連的,因而當需要對部分或整個 應(yīng)用程序進行某種形式的更改時 這種結(jié)構(gòu)就顯得非常脆弱。
④位置透明性:位置透明性要求SOA系統(tǒng)中的所有服務(wù)對于其調(diào)用者來說都是位置透明的,也就是說,每個服務(wù)的調(diào)用者只需 要知道想要調(diào)用的是哪一個服務(wù),但并不需要知道所調(diào)用服務(wù)的物理位置在哪。
⑤協(xié)議無關(guān)性:協(xié)議無關(guān)性要求每一個服務(wù)都可以通過不同的協(xié)議來調(diào)用。
另外,在許多傳統(tǒng)的IT系統(tǒng)的內(nèi)在部分采用的是硬連接,這種結(jié)構(gòu)很難讓企 業(yè)快速響應(yīng)市場的變化,而SOA能夠重復(fù)利用企 業(yè)現(xiàn)有的資源,可以減輕企業(yè)運營成本,提升資源的使用效率,并且減輕企業(yè)維護人員的工作量,減少潛在的風險 以及管理 費用。在業(yè)務(wù)方面和IT方面帶來許多優(yōu)勢:
①服務(wù)給精確的業(yè)務(wù)流程帶來靈活性;
②使用服務(wù)來改善客戶服務(wù),而不必擔心底層復(fù)雜的IT基礎(chǔ)架構(gòu);
③可以迅速創(chuàng)建新的業(yè)務(wù)流程和復(fù)雜的應(yīng)用程序,以適應(yīng)市場變化;
④借助安全、易管理的集成環(huán)境,成為響應(yīng)能力更強的IT組織;
⑤通過使用預(yù)裝的、可重復(fù)使用的服務(wù)構(gòu)建模塊,縮短開發(fā)和部署周期;
⑥通過使用服務(wù)來降低復(fù)雜性和維護成本;
⑦是增強而不是替換現(xiàn)有的IT系統(tǒng)。
三,SOA架構(gòu)詳解
3.1. 如何形象理解SOA
事實上,SOA的思想我國很早就有了,印刷術(shù)的發(fā)展過程其思想就完整體現(xiàn)了SOA的核心含義。
印刷的內(nèi)容――文字,在秦始皇統(tǒng)一六國之前,各國的文字是不統(tǒng)一的,據(jù)說許多常用的文字有十幾種寫法和讀音,妨礙了各 國之間的文化交流,就象SOA之前,各種軟件平臺、各種開發(fā)工具和各種接口的組件之間,沒有統(tǒng)一的標準,對軟件系統(tǒng)之 間的整合造成巨大的困難。
因此,偉大的始皇帝統(tǒng)一了六國文字,“書同文、車同軌”就是通過標準解決“復(fù)用”和“互操作”等問題。這也為大規(guī)模的印刷和文 明發(fā)展提供了一個良好的基礎(chǔ),這種“統(tǒng)一封裝”的文字,對文化交流起到了一個“互操作”的標準作用。
SOA的形象解析
在沒有印刷術(shù)之前,書籍要依賴于手工抄寫,這樣效率當然是非常低下,而且質(zhì)量也不能獲得一致性的保證,也就是書籍還 無法“復(fù)用”。中國人首先發(fā)明了刻版印刷 術(shù),就是將書籍刻成一塊一塊的凸字版,然后就可以大規(guī)模進行印刷了,當印刷出來 的書籍脫銷時,下次還可以繼續(xù)使用,大大提高了效率,這就是“復(fù)用”,軟件 通過組件的封裝,也可以達到重復(fù)和在不同場合 多次使用的“復(fù)用”效果。
刻版印刷術(shù)有個很大的問題就是文字之間是緊耦合的,同樣一個字,在另一部書之中是不能“復(fù)用”的,必須重新雕刻,也就是 說刻版印刷是沒有“編排”特性的。就如軟件技術(shù)中微軟VB開發(fā)的Com+組件就只能在Windows環(huán)境之中使用,它不能與Java開 發(fā)的EJB組件進行復(fù)用和編排,因為他們與開發(fā)環(huán)境和運行環(huán)境是緊耦合的,要在UNIX環(huán) 境下使用,必須重新開發(fā)(相當于 重新“刻版”)。活字印刷就是通過文字與版面之間的松耦合,通過“排版”來實現(xiàn)一部書的印刷版面的,這種松耦合就大大提高 了文字的字模之間的復(fù)用和編排效率。我們標準封裝的“服務(wù)”就類似一個一個的字模,通過服務(wù)編排(“排版”)來實現(xiàn)業(yè)務(wù)流程。
統(tǒng)一文字和活字印刷促進了人類文明進步,而SOA促進全球IT架構(gòu)和應(yīng)用的革命。
3.2. SOA的核心要素
要準確全面理解SOA,首先必須理解SOA的核心要素:
SOA的核心要素
SOA的目標就是實現(xiàn)靈活可變的IT系統(tǒng)。要達到靈活性,通過三個途徑來解決:標準化封裝、復(fù)用、松耦合可編排。
互操作(標準化封裝)、復(fù)用、松耦合等SOA技術(shù)的內(nèi)在機制,也是中間件技術(shù)和產(chǎn)品的本質(zhì)特征。
標準化封裝(互操作性)
傳統(tǒng)軟件架構(gòu),因為封裝的技術(shù)和平臺依賴性,一直沒有徹底解決互操作問題。互聯(lián)網(wǎng)前所未有的開放性意味著各節(jié)點可能 采用不同的組件、平臺技術(shù),對技術(shù)細節(jié)進 行了私有化的約束,構(gòu)件模型和架構(gòu)沒有統(tǒng)一標準,從而導(dǎo)致架構(gòu)平臺自身在組件描述、發(fā)布、發(fā)現(xiàn)、調(diào)用、互操作協(xié)議及數(shù)據(jù)傳輸?shù)确矫娉尸F(xiàn)出巨大的異構(gòu)性。各種不良技術(shù)約束的結(jié)果是軟件系統(tǒng)跨互 聯(lián)網(wǎng)進行交互變得困難重重,最終導(dǎo)致了跨企業(yè)/部門的業(yè)務(wù)集成和重組難以靈活快速的進行。
在軟件的互操作方面,傳統(tǒng)中間件只是實現(xiàn)了訪問互操作,即通過標準化的API實現(xiàn)了同類系統(tǒng)之間的調(diào)用互操作,而連接互 操作還是依賴于特定的訪問協(xié)議,如JAVA使用RMI,CORBA使用IIOP等。而SOA通過標準的、支持Internet、與操作系統(tǒng)無 關(guān)的SOAP協(xié)議實現(xiàn)了連接互操作。而且,服務(wù)的封裝是采用XML協(xié)議,具有自解析和自定義的特性,這樣,基于SOA的中間 件還可以實現(xiàn)語義互操作。
SOA要實現(xiàn)互操作,就是通過一系列的標準族,來實現(xiàn)訪問、連接和語義等各種層面的互操作。
軟件復(fù)用
軟件復(fù)用,即軟件的重用,也叫再用,是指同一事物不作修改或稍加改動就多次重復(fù)使用。從軟件復(fù)用技術(shù)的發(fā)展來看,就 是不斷提升抽象級別,擴大復(fù)用范圍。最早 的復(fù)用技術(shù)是子程序,人們發(fā)明子程序,就可以在不同系統(tǒng)之間進行復(fù)用了。但 是,子程序是最原始的復(fù)用,因為這種復(fù)用范圍是一個可執(zhí)行程序內(nèi)復(fù)用,靜態(tài)開發(fā) 期復(fù)用,如果子程序修改,意味著所有 調(diào)用這個子程序的系統(tǒng)必須重新編譯、測試和發(fā)布。
SOA的復(fù)用
為了解決這個問題,人們發(fā)明了組件(或者叫控件),如MS操作系統(tǒng)下的DLL組件。組件將復(fù)用提升了一個層次,因為組件可以在一個系統(tǒng)內(nèi)復(fù)用(同一種操作系統(tǒng)),而且是動態(tài)、運行期復(fù)用。這樣組件可以單獨發(fā)展,組件與組件調(diào)用者之間的耦合度降低。
為解決分布式網(wǎng)絡(luò)計算之間的組件復(fù)用,人們發(fā)明了企業(yè)對象組件,如(Com+,.NET,EJB等),或者叫分布式組件。通過遠程對象代理,來實現(xiàn)企業(yè)網(wǎng)絡(luò)內(nèi)復(fù)用,不同系統(tǒng)之間復(fù)用。
傳統(tǒng)架構(gòu)的核心是組件對象的管理。但分布式組件也是嚴重依賴其計算環(huán)境,由于構(gòu)件實現(xiàn)和運行支撐技術(shù)之間存在著較大的 異構(gòu)性,不同技術(shù)設(shè)計和實現(xiàn)的構(gòu)件之間無法直接組裝式復(fù)用。
而現(xiàn)代SOA的重要特征就是以服務(wù)為核心,如WebService,SCA/SDO等。通過服務(wù),或者服務(wù)組件來實現(xiàn)更高層次的復(fù)用、 解耦和互操作,即SOA架構(gòu)中間件。
因為服務(wù)是通過標準封裝,服務(wù)組件之間的組裝、編排和重組,來實現(xiàn)服務(wù)的復(fù)用。而且這種復(fù)用,可以在不同企業(yè)之間,全球復(fù)用,達到復(fù)用的最高級別,并且是動態(tài)可配置的復(fù)用。
耦合關(guān)系
SOA架構(gòu)在松耦合解耦過程也發(fā)展到了最后的境界。傳統(tǒng)軟件將軟件之中核心三部分網(wǎng)絡(luò)連接、數(shù)據(jù)轉(zhuǎn)換、業(yè)務(wù)邏輯全部耦 合在一個整體之中,形成“鐵板一塊”的軟件, “牽一發(fā)而動全身”,軟件就難以適應(yīng)變化。分布式對象技術(shù)將連接邏輯進行分 離,消息中間件將連接邏輯進行異步處理,增加了更大的靈活性。消息代理和一些分 布式對象中間件將數(shù)據(jù)轉(zhuǎn)換也進行了分 離。而SOA架構(gòu),通過服務(wù)的封裝,實現(xiàn)了業(yè)務(wù)邏輯與網(wǎng)絡(luò)連接、數(shù)據(jù)轉(zhuǎn)換等進行完全的解耦。
SOA不斷解耦的過程
總之,從科學哲學的角度來看,SOA是一個不斷解構(gòu)的過程,傳統(tǒng)軟件強調(diào)系統(tǒng)性,耦合度過高,所以需要松耦合(解耦);SOA也是一個組件粒度的平衡,集成電路趨勢是集成度越來越高,軟件發(fā)展的趨勢是相反的過程;SOA是架構(gòu),更是 方法,反映了人們對哲學思想的追求的原動力。
按照這個特性,SOA基本上來說與WebService并不是同一個概念,SOA并不一定需要WebService實現(xiàn),理論上可以在其他技 術(shù)體系下,實現(xiàn)SOA。但事實上,到目前為止,能夠?qū)崿F(xiàn)SOA架構(gòu)風格的技術(shù)就是WebService,因為它的特性和廠商的支持 力度,使得WebService成為了實現(xiàn)SOA實現(xiàn)技術(shù)的事實標準。也正因為WebService技術(shù)的成熟,才使得已經(jīng)提出10多年了的 SOA思想和概念,得以能夠?qū)崿F(xiàn)落地,成為一種可以使用的技術(shù)。這也就是回答了SOA和WebService的關(guān)系。
3.3. SOA的架構(gòu)框架
(Framework) SOA的核心主體是服務(wù)。所謂“服務(wù)(Service)” ,從業(yè)務(wù)角度而言,服務(wù)是一個可重復(fù)的經(jīng)過標準封裝的任務(wù),例如: 檢查帳 號余額;開新帳戶等等…SOA的目標是通過服務(wù)的流程化來實現(xiàn)業(yè)務(wù)的靈活性,所謂流程(Process)是由一系列相互關(guān)聯(lián) 的任務(wù)所組成,實現(xiàn)一個具體的業(yè)務(wù)功能。一個流程可以由一系列服務(wù)來實現(xiàn)。
SOA治理
服務(wù)就像一堆“元器件”,這些元器件通過封裝形成標準服務(wù),他們有相同的接口和語義表達規(guī)則。但服務(wù)要組裝成一個流程和 應(yīng)用,還需要有效的“管理”,包括如何注冊服務(wù)、如何發(fā)現(xiàn)服務(wù)、如何包裝服務(wù)的安全性和可靠性,這些就是SOA治理。SOA 治理乃是將SOA這一堆元器件,進行有效組裝,形成一個“產(chǎn)品”的關(guān)鍵,否則它永遠是一堆器件,而無法形成一個有機整體。
SOA治理的方法和體系,就是區(qū)別于一般組件開發(fā)的技術(shù)的重要區(qū)別和特征。
一個正確的框架,是指導(dǎo)我們開發(fā)和實施SOA架構(gòu)的基礎(chǔ)。由IBM提案,國際開放群組(The Open Group)提出了一個SOA架 構(gòu)的參考模型,這個架構(gòu)框架目前是產(chǎn)業(yè)界最權(quán)威和嚴謹?shù)腟OA架構(gòu)標準。The Open Group是一個非營利標準化組織,是一 個廠商中立和技術(shù)中立的機構(gòu),致力于提出各種技術(shù)框架和理論結(jié)構(gòu),致力于促進全球市場的業(yè)務(wù)效率。The Open Group已 有超過20年的標準制定與推廣歷史。在1996年,由X/Open與Open Software Foundation合并組成。The Open Group最有名 是作為UNIX商標的認證機構(gòu)。在過去,協(xié)會最出名的是其出版的Single UNIX Specification,它擴充了POSIX標準而且是 UNIX的官方定義,其成員包括IT用戶、供應(yīng)商以及政府機構(gòu)。The Open Group在中國的創(chuàng)始會員為金蝶集團,金蝶集團負責 成立了中國分會。TOG在1993年提出的The Open Group Architecture Framework (TOGAF) 架構(gòu)框架,是一套行之有效的企 業(yè)架構(gòu)。歷經(jīng)15年9個版本發(fā)展,支持開放、標準的SOA參考架構(gòu),已被80%的福布斯( Forbes)全球排名前50的公司使用。
這個SOA參考模型為:
SOA標準模型
根據(jù)這個模型,完整的SOA架構(gòu)由五大部分組成,分別是:基礎(chǔ)設(shè)施服務(wù)、企業(yè)服務(wù)總線、關(guān)鍵服務(wù)組件、開發(fā)工具、管理 工具等。
SOA基礎(chǔ)實施是為整個SOA組件和框架提供一個可靠的運行環(huán)境,以及服務(wù)組件容器,它的核心組件是應(yīng)用服務(wù)器等基礎(chǔ)軟 件支撐設(shè)施,提供運行期完整、可靠的軟件支撐。
企業(yè)服務(wù)總線是指由中間件基礎(chǔ)設(shè)施產(chǎn)品技術(shù)實現(xiàn)的、通過事件驅(qū)動和基于XML消息引擎,為SOA提供的軟件架構(gòu)的構(gòu)造 物。企業(yè)服務(wù)總線ESB提供可靠消息傳輸、服務(wù)接入、協(xié)議轉(zhuǎn)換、數(shù)據(jù)格式轉(zhuǎn)換、基于內(nèi)容的路由等功能,屏蔽了服務(wù)的物理 位置,協(xié)議和數(shù)據(jù)格式。在SOA基礎(chǔ)實現(xiàn)的方案上,應(yīng)用的業(yè)務(wù)功能能夠被發(fā)布、封裝和提升(Promote)成為業(yè)務(wù)服務(wù) (Business Service);業(yè)務(wù)服務(wù)的序列可以編排成為BPM的流程,而流程也可以被發(fā)布和提升為復(fù)合服務(wù)(Composited Service),業(yè)務(wù)服務(wù)還可以被外部的SOA系統(tǒng)再次編排和組合。ESB是實現(xiàn)SOA治理的重要支撐平臺,是SOA解決方案的核 心,從某種意義上說,如果沒有ESB,就不能算作嚴格意義上的SOA。
關(guān)鍵服務(wù)實現(xiàn),是SOA在各種業(yè)務(wù)服務(wù)組件的分類。一般來說,一個企業(yè)級的SOA架構(gòu)通常包括:交互服務(wù)、流程服務(wù)、信 息服務(wù)、伙伴服務(wù)、企業(yè)應(yīng)用服務(wù)和接入服務(wù)。這些服務(wù)可能是一些服務(wù)組件,也可能是企業(yè)應(yīng)用系統(tǒng)(如ERP)所暴露的 服務(wù)接口等等。這些服務(wù)都可以接入ESB,進行集中統(tǒng)一管理。
開發(fā)工具和管理工具:提供完善的、可視化的服務(wù)開發(fā)和流程編排工具,涵蓋服務(wù)的設(shè)計、開發(fā)、配置、部署、監(jiān)控、重構(gòu)等完整的SOA項目開發(fā)生命周期。
按照這個模型,許多SOA解決方案是只提供部分實現(xiàn)。這個行業(yè)中,許多國內(nèi)的企業(yè)為了搭上SOA的便車,經(jīng)常以偏概全, 混繞概念。應(yīng)該說真正按照SOA的思想和模型來構(gòu)建整個企業(yè)的IT架構(gòu)的案例是非常之少的。許多國外廠商的宣傳案例,基本 上是停留在部署應(yīng)用服務(wù)器,開發(fā)了部分WebService組件,可以實現(xiàn)部分數(shù)據(jù)集成,這個層次而已,而這些WebService是部 署在ESB平臺之上的,就已經(jīng)很不錯了。實現(xiàn)了服務(wù)流程重組,實現(xiàn)SOA治理的案例就更是很少見到了。
國內(nèi)有許多軟件企業(yè)開發(fā)的系統(tǒng),宣傳是SOA架構(gòu)的。基本上有幾種情況,其一,有些開發(fā)組件和開發(fā)平臺廠商,他們也自 稱中間件企業(yè),基本上是提供一個工作流平臺,許多還不支持BPEL的業(yè)務(wù)流程管理,只是傳統(tǒng)的XPDL/WfMC工作流平臺 (Workflow不同于支持服務(wù)流程的Business Process),最常見的案例是OA辦公審批,或者服務(wù)組件開發(fā)工具,而所謂的 ESB產(chǎn)品大部分都是EAI的升級,可以與Webservice進行接口而已,就宣稱這是ESB產(chǎn)品了,基本的服務(wù)注冊、服務(wù)編排和安 全管理都不具備。這些解決方案只是提供了許多WebService開發(fā)的組件,而不提供SOA治理的核心架構(gòu),相當于造了許多元 器件,但還不能提供整機產(chǎn)品。
其二,許多宣稱SOA架構(gòu)的應(yīng)用軟件,基本上可以說是“支持”SOA,而不能稱為“基于SOA”架構(gòu)。因為支持SOA一般是指可以 將其某些功能,封裝為服務(wù)(WebService),可以在SOA架構(gòu)之中進行管理,這比較容易達到。而“基于SOA”是指應(yīng)用系統(tǒng) 的業(yè)務(wù)功能都是封裝為服務(wù),通過ESB進行集中管理,業(yè)務(wù)實現(xiàn)是通過BPEL業(yè)務(wù)流程管理進行編排,用戶交互是通過交互服務(wù)(如門戶)進行管理,整個解決方案可以達到標準服務(wù)封裝、服務(wù)復(fù)用、松耦合、服務(wù)編排與重組,并且基本符合TOGSOA的架構(gòu)模型。
按照這個標準,IT用戶就可以了解到真正的SOA架構(gòu)的框架模型,就可以識別是否是企業(yè)所需要的架構(gòu)。
講到這里,我們已經(jīng)很清楚了,對于SOA的理解,有些學者或者咨詢公司強調(diào)SOA不是一種技術(shù),也不是軟件,而是一種思想,一種架構(gòu)風格。我認為這也是不完全準確的,這種觀點認為SOA僅僅是思想和方法,將使得SOA成為一種不可知論,飄 在空中,很難落地。
四、SOA商業(yè)化實際運用
SOA將來真正推廣到企業(yè)中應(yīng)用,要落地,就不能離開幾個基本的東西:支撐SOA的基礎(chǔ)中間件平臺、符合SOA架構(gòu)的應(yīng)用 系統(tǒng)(如ERP等)、構(gòu)建SOA的方法論。
SOA落地途徑
4.1. 架構(gòu)方法論
方法和工具構(gòu)成了工程技術(shù)域,要構(gòu)建SOA架構(gòu)的企業(yè)信息系統(tǒng),確保業(yè)務(wù)和IT的真正匹配,首先必須從方法論入手。
許多企業(yè)的IT系統(tǒng)“孤島”現(xiàn)象嚴重,本質(zhì)上是缺乏足夠有效的整體規(guī)劃或者架構(gòu)規(guī)劃造成的。形象地說,構(gòu)建企業(yè)IT大廈如同 我們蓋房子是一樣的道理。我們許多企業(yè)建設(shè)信息系統(tǒng)時就采用了蓋鄉(xiāng)村民宅的做法。蓋鄉(xiāng)村民宅不需要嚴謹?shù)囊?guī)劃,也沒有 復(fù)雜的地下設(shè)施建設(shè)(如自來水供水、排水、供氣、地下停車場等),也沒有需要建設(shè)污水處理、雨水收集等復(fù)雜的配套設(shè) 施。而事實上,企業(yè)IT系統(tǒng)建設(shè)應(yīng)該如城市建設(shè),首先需要城市總體規(guī)劃,然后根據(jù)功能區(qū)規(guī)劃,設(shè)計和建設(shè)小區(qū)配套設(shè) 施,“三通一平”實質(zhì)就是構(gòu)建建筑之間的公共基礎(chǔ)設(shè)施,確保每棟建筑之間不是“孤島”,然后每棟建筑還需詳細的設(shè)計和工程 施工。如果要消除信息孤島,實現(xiàn)IT與業(yè)務(wù)的一致性,也需要有效的企業(yè)架構(gòu)規(guī)劃和設(shè)計。
為什么需要架構(gòu)規(guī)劃
透過現(xiàn)象看本質(zhì),SOA代表著一種面向服務(wù)的IT架構(gòu)風格,SOA的技術(shù)本質(zhì)和出發(fā)點,在于IT架構(gòu)。而IT架構(gòu),是組織的企業(yè) 架構(gòu)的重要組成部分,它和組織的戰(zhàn)略架構(gòu)、業(yè)務(wù)架構(gòu)一起,形成一個自上而下、緊密聯(lián)系、相輔相成的有機整體。SOA代 表著一種正在蓬勃興起的革命性IT架構(gòu)理念,和傳統(tǒng)技術(shù)體系區(qū)別的關(guān)鍵特征之一就在于SOA是戰(zhàn)略導(dǎo)向和業(yè)務(wù)驅(qū)動的。而國 際和國內(nèi)的各方面經(jīng)驗都告訴我們,對于一個組織而言,捕獲戰(zhàn)略、梳理業(yè)務(wù)和IT的最有效的措施就是架構(gòu)。
企業(yè)架構(gòu)(Enterprise Architecture,EA),是從多個角度對組織的構(gòu)件層次描述的規(guī)劃藍圖,從各個層面反映組織的愿景、戰(zhàn) 略、業(yè)務(wù)、服務(wù)、人員、技術(shù)和產(chǎn)品及其相互之間的關(guān)系,輔以其管控和演進的規(guī)則。
一個企業(yè)架構(gòu)內(nèi)容包括業(yè)務(wù)架構(gòu)(Business Architecture)、應(yīng)用架構(gòu)(Application Architecture)、信息架構(gòu)(Information Architecture)、技術(shù)架構(gòu)(Technology Architecture)等。
真正可以落地的SOA建設(shè),必須且只能從架構(gòu)出發(fā)。沒有架構(gòu),"SOA"將變成一盤無法真正解決各種運營問題的技術(shù)和產(chǎn)品的大雜燴。優(yōu)良的架構(gòu)填補了業(yè)務(wù)需求與實際信息系統(tǒng)以及基礎(chǔ)設(shè)施設(shè)計之間難以逾越的鴻溝。
在所有的架構(gòu)開發(fā)方法(ADM- Architecture Development Methods)之中,開放群組TOG的TOGAF是目前最權(quán)威和最有影響力的一種。The Open Group于1993年開始應(yīng)客戶要求制定系統(tǒng)架構(gòu)的標準,在1995年發(fā)表The Open Group Architecture Framework (TOGAF) 架構(gòu)框架。TOGAF的基礎(chǔ)是美國國防部的信息管理技術(shù)架構(gòu)(Technical Architecture for Information Management: TAFIM)。TOAGF是一個架構(gòu)框架,簡而言之,TOGAF是一種協(xié)助開發(fā)、驗收、運行、使用和維護架構(gòu)的工具,它是基于一個迭代(Iterative)的過程模型,支持最佳實踐和一套可重用的現(xiàn)有架構(gòu)資產(chǎn)。它可設(shè)計、評估并建立組織的正確架構(gòu)。TOGAF的關(guān)鍵是架構(gòu)開發(fā)方法ADM:一個可靠的,行之有效的方法,以發(fā)展能夠滿足商務(wù)需求的企業(yè)架構(gòu)。而2008 年發(fā)布的TOGAF 9.0是符合SOA架構(gòu)開發(fā)的最新版本。TOGAF所提出的“無邊界信息流(Boundaryless Information Flow)”理 念和愿景,是解決目前企業(yè)信息化孤島問題的最有效方式。
TOGAF架構(gòu)內(nèi)容
4.2. 基于SOA的應(yīng)用系統(tǒng)
基于SOA的應(yīng)用系統(tǒng)構(gòu)建方法與傳統(tǒng)軟件架構(gòu)方法有所不同。
首先基于SOA的應(yīng)用系統(tǒng)建模和管理的組件層次是服務(wù):
面向服務(wù)的工程
基于服務(wù)的應(yīng)用系統(tǒng)的本質(zhì)特征是松耦合,以基本業(yè)務(wù)功能(服務(wù)封裝)為系統(tǒng)的基本實現(xiàn)單元,然后通過服務(wù)編排(流程管理)來“組裝”業(yè)務(wù)應(yīng)用系統(tǒng)。相對于以往的應(yīng)用系統(tǒng),是面向技術(shù)組件,由系統(tǒng)程序?qū)崿F(xiàn)業(yè)務(wù)流程,在復(fù)用、耦合方面都存在靈活性問題。
軟件工程和系統(tǒng)設(shè)計的演進過程基于SOA的應(yīng)用系統(tǒng)構(gòu)建過程是:
基于SOA的應(yīng)用構(gòu)建過程
服務(wù)建模是第一步,也就是服務(wù)識別和顆粒度確定。服務(wù)識別是方法論的第一步,服務(wù)識別的主要任務(wù),是確定在一定范圍內(nèi)(通常是企業(yè)范圍,或若干業(yè)務(wù)場景范圍內(nèi))可能成為服務(wù)的候選者列表,并確定服務(wù)的顆粒度,以及標識服務(wù)的接口。服務(wù)建模也就確定了應(yīng)用系統(tǒng)架構(gòu)的耦合程度。
服務(wù)封裝階段的主要任務(wù)是對服務(wù)進行規(guī)范性的描述,其中包括輸入/輸出消息等功能性屬性,以及服務(wù)在業(yè)務(wù)層面的諸多屬性。并決定服務(wù)以何種形式向外提供服務(wù)。服務(wù)可能是新開發(fā)的業(yè)務(wù)功能和業(yè)務(wù)對象的封裝,也可能是遺留系統(tǒng)的服務(wù)封裝,將遺留系統(tǒng)的軟件資產(chǎn)以服務(wù)的形式進行封裝,在新的架構(gòu)上利用已有的資產(chǎn)。
服務(wù)治理就是將已經(jīng)封裝好的服務(wù)進行集中統(tǒng)一有效的管理。通過ESB基礎(chǔ)設(shè)施,提供服務(wù)注冊、存儲、安全控制和版本管理等。服務(wù)注冊階段的主要任務(wù)是將服務(wù)注冊到服務(wù)庫。此時需要決定服務(wù)的命名、安全、性能、時間特性。
服務(wù)編排就是根據(jù)業(yè)務(wù)流程的需求,對服務(wù)進行組合和組裝。服務(wù)組裝是以實現(xiàn)業(yè)務(wù)流程為目的,通過對業(yè)務(wù)服務(wù)的組合和組裝,實現(xiàn)更粗粒度的業(yè)務(wù)服務(wù),實現(xiàn)最終的業(yè)務(wù)需求。
應(yīng)用交付階段主要任務(wù)是完成業(yè)務(wù)系統(tǒng)服務(wù)化組裝和服務(wù)部署,實現(xiàn)業(yè)務(wù)按需交付。
基于SOA的應(yīng)用系統(tǒng)是SOA架構(gòu)的重要組成部分,也是SOA落地的地基。
4.3. 支撐SOA的中間件平臺
SOA方法論和基于SOA的應(yīng)用系統(tǒng)要落地的支撐工具和技術(shù)基礎(chǔ)就是中間件平臺。這個在3.3.SOA的架構(gòu)框架(Framework)之中已經(jīng)闡述清楚了。
根據(jù)TOG-SOA模型,完整的SOA架構(gòu)五大部分中,基礎(chǔ)設(shè)施服務(wù)、企業(yè)服務(wù)總線、開發(fā)工具、管理工具等,都是中間件的基礎(chǔ)平臺。
交付服務(wù)之中的門戶,也是需要支持JSR168和JSR286標準的Portlet容器和個性化交互以及終端適配的支撐平臺。
業(yè)務(wù)流程管理需要支持BPEL規(guī)范的流程引擎和流程建模的工具,這個中間件平臺用來支持服務(wù)的組合和服務(wù)流程編排,以滿 足業(yè)務(wù)重組的需求,來實現(xiàn)業(yè)務(wù)的靈活性。
SOA要落地的最后支撐平臺就是滿足SOA規(guī)范的中間件技術(shù)。
審核編輯:郭婷
-
SOA
+關(guān)注
關(guān)注
1文章
291瀏覽量
27513 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3283瀏覽量
57748
原文標題:萬字的SOA面向服務(wù)的分布式架構(gòu)詳解
文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論