天天看點

新一代應用結構體系(二)面向服務架構

第二篇:面向服務架構詳解

??? 時事

微軟和Sun達成和解,聯袂打造SOA。

Sun公司總裁兼COO Jonathan Schwartz在最近一次公司會議上這樣說,“與.NET進行協作僅僅意味着滿足使用者的需要。例如,我們正試圖在Visual Studio和Java Studio Creator之間實作互用性,同時,我們也正在努力實作在分别使用這兩套技術體系開發SOA的應用程式時,可以應用統一的架構思想。”

微軟正忙于準備Indigo。它将作為下一代Windows作業系統Longhorn的重要組成部分。

BEA Systems、Oracle。同時,有些小型廠商,如Infravio和Cape Clear,也在着手建立自己的SOA。?

IBM日前在多倫多宣布,它将在奧斯汀、北京、德裡和哈斯勒建立SOA設計中心

??????? ……

??? 曆史

???

?什麼是SOA?

??? SOA為什麼有這麼大的魅力的,它到底能給我們帶來什麼,為什麼它的出現為IT帶來了這麼大的震撼,也為IT帶來了新的希望。

??? SOA即面向服務的架構(service-oriented architecture,SOA),要注意的是SOA不是一種具體的實作技術,它是一個抽象的概念和指導方針,我們可以用任何一種現今成熟的技術實作它,準确的說SOA是一種構件模型。簡單點,在傳統的方式中一個大型應用由不同功能子產品構成,而在SOA中,這些功能子產品由功能服務的概念所取代,這些所謂的子產品由服務之間定義良好的接口和契約聯系起來。而這些接口的定義是采用中立的方式進行的,它獨立于實作這些服務的硬體平台,作業系統,網絡架構和程式設計語言。正因為如此,在一個大系統中的各種樣的服務,甚至是不同軟體供應商所提供的其他應用都可以按一種統一和通用的方式進行互動。

??? 說到這裡将牽涉到另一個概念“松散耦合”,在軟體工程中大家就已經學習過關于在軟體開發中偶合度對系統開發的影響。偶合度越低系統開發就越靈活,更容易維護。而面向服務的構架就是一種“松散耦合”的系統架構,把原來在代碼中的功能而提到應用服務的層面。

服務不同于以往開發的元件或類函數的概念,我們以往基于類或函數等所實作的功能元件僅工作于代碼,受所在系統中某個部分的調用,當編譯後将和應用其他相關部分緊密的成為一個整體,同時是被動存在,且隻能為編譯在其中的應用所工作。而服務則是把軟體的某些功能對立出來,使之能獨立運作,并且在邏輯關系上和運作的應用系統成為一個層次,正因為獨立運作,是以它接受來自所有授權對象的請求,使得服務可以同時為多個應用程式提供相同的功能,大大增大軟體複用程度,減少開發和維護成本。再加之這些服務間接口采用中立性的定義,是以系統靈活、易于改變、同時試用于未來趨于應用小型化的分布式部署,另一方面當組成整個應用程式的每個服務的内部結構和實作逐漸地發生改變時,該應用不會受到影響和牽連,并繼續運作。

SOA可以做什麼?

??? SOA源于企業對靈活業務擴充的需求,同時也來自于軟體開發商對軟體複用技術的追求。可能SOA的産生會震動一大批為企業提供解決方案的傳統開發商或者開發人員,因為它将成為軟體業革命性的變化,廣大企業應用開發人員接受的将是一次思想的或者稱為思想的升華。技術的變革直接帶來的是解決方案的整體變革,面向服務構架的解決方案以适應業務中快速的改變。

??? 下面我将舉一個例子說明這種變革,假設一個用有300個分公司的跨國汽車集團,下面擁有衆多的制造廠和銷售公司,而與之相關的又有大量的供應商和分銷商。他們實施刻刻要傳遞各種定單資料,供應商和制造商要根據市場需要改變供貨數和産量,而且不同分公司也有不同業務系統,而這些系統的資料又将彙總到總部,那麼這造就将是一個高度偶合且非常複雜的軟體流程。一旦為适應發展的需要某些分公司的業務系統發生改變那麼所要做的就不再是那麼簡單,就将是自下而上的牽動整個軟體流程,這所帶來的成本和投入将是使用者無法接受的。通過利用 WSDL 接口在操作方面的靈活性,每個公司都可以将它們的現有系統保持現狀,而僅僅比對 WSDL 接口并制訂新的服務級協定,這樣就不必完全重構它們的軟體系統了。這樣做,不管是分公司内部的業務系統的改變,還是供應商也無系統的改變,而通過這些接口仍然保持了整個業務體系的穩定。

??? 另一方面以ERP中的銷售和庫房為例,當我們把這兩個子產品上升到應用服務的層次上後,将給我們企業應用開發帶來新的啟示。庫房将自己的業務一方面在使用者UI上得到展現,另一方面基于某種中間定義如WSDL,我們很容易定義一些服務級的業務接口,而這些接口是相對穩定的,不管庫房系統内部處理發生多大的改變,而銷售系統可以很容易獲得其業務操作規則和資料,并且這種互動是跨平台、跨語言、跨硬體、跨地域的,意思是,對于銷售系統在分公司部署數量的多少,開發的語言,以及它的開發商我們是無須要做強制要求的,同理以前銷售子產品可通過此種方法增加服務級的接口,已保證和其他系統良好的互動和松散的偶合。這樣企業的随需應變,快速擴充将得以實作,特别是對于大型項目的開發實施,面向服務的夠架将把這種優勢顯示得淋漓盡緻。

??? 思想的改變來自于需求的動力,然而思想的改變又可以讓我們發現新的機會。SOA 模型的新成果,給我們帶來的不盡是改善企業解決方案讓使用者對資訊系統有了新的使用體驗,讓開發商和開發人員有了新的開發體驗和知識積累,同時也讓市場嗅覺敏銳的人找到了新的市場,我們可以不在需要釋出處理某些方面特有資訊的元件,我們可以編寫各試各樣的服務,如計算服務、音頻處理服務,這些服務我們可以在網際網路上或區域網路以收費或免費的方式釋出,使用者隻需獲得相應的定義,即可在自己開發的應用軟體中調用該功能。這種方式我們大大節約了資源,把零散的計算資源以一種新的方式結合在一起。這些都以不再 是神話,在現在很多成熟的技術,我們已經可以輕松的實作這一切。

何種技術可以實作SOA?

??? 由于SOA隻是一種所謂的構件模型,我們必須用一些現有的技術去實作它,象DOCM、CORBA、WebService這些技術我們都可以用以實作SOA,在WebSercie出現以前,由于各種技術不管是在服務的描述上,跨平台上,開放性上,易使用上都沒有很大的突破,是以SOA緊緊在一些勢力雄厚的廠商和一些大型項目中使用,而WebService的出現讓SOA提出的一切得到了實作,在一夜之間SOA,XML,WebService這些概念傳遍了全世界,并的到了廣泛的應用。是以在這裡我不得不把WebSerice做為其中一個重要的内容提出。

什麼是WebService?

??? 由于Web Service命名的原因可能造成了衆多開發商和開發人員的誤解,認為廣泛提及的Web Service就是基于HTTP所提供的網頁浏覽服務或則直截了當的認為是B/s應用程式。其實這種看法是完全錯誤的,完全以一個錯誤的方向在了解一個新生事物,Web Service與http的網頁服務完全是不同的概念,更不是所謂的B/s應用程式。

??? Web Service從字面上了解為web 服務(不是web伺服器),服務的概念在前面已經提及,Web Service即是采用Http請求方式為其他應用提供元件對象服務的一種技術,我們可以把他看作是一種遠端對象調用技術,一種比DCOM/ CORBA更開放、更易實作遠端對象服務的技術。

??? Web Service和應用程式是采用一種基于XML的一種名為SOAP的協定進行通信,實作遠端調用。而Web Service上所有的接口資訊,包括服務結構都是通過另一種描述性語言告速應用,這種描述性語言也是通過XML進行定義的,我們把它稱之為WSDL(Web 服務Web Services Definition Language)。通過WSDL我們可以一種通用的格式描述接口資訊,在應用程式部分,可以以一種通用的方式還原并調用該接口。

??? 通過Web Service我們可以用任何一種語言或工具把目前應用系統的某些功能包裝成應用服務供其他用通路。通過這種底成本快速的方式我們可以很容易的實作功能複用,分布式計算,包括文章正在闡述的SOA。

??? 目前基本上所有流行的主流開發工具都可以很容易的建立或調用Web Service,如Delphi 6-7、各種java工具、vb、vs.net、cb等。我們還可以通過soapkit中提供的工具把com自動轉換為Web Service,這些良好的支援,為web Service的流行創造了良好的基礎,同時 Web Service的出現也消除了各種平台、工具、語言的這道橫溝,開發人員可以選擇自己熟悉的工具開發應用系統,無須為了合整而去浪費大量的時間去學習不熟悉的語言或工具。

SOA與Web Service?

??? 利用XML Web Service的支援實作面向服務的架構是再合式不過的搭配了。不管是基于XML的WSDL還是SOAP都獨立于任何語言和平台。SOAP 本身并不是絕對需要的,但它是通用的消息傳遞系統,而WSDL描述可以為任何語言解析并使用。是以,可以使用幾乎任何一種程式設計語言和支援 WSDL 的平台來實作 SOA 中的成員服務。

繼續閱讀