介紹
SOA(Service-Oriented ArchITecture),面向服務架構,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。
SOA是一種粗粒度、松耦合服務架構,服務之間通過簡單、精确定義接口進行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S模型、XML/Web Service技術之後的自然延伸。
SOA将能夠幫助軟件工程師們站在一個新的高度理解企業級架構中的各種組件的開發、部署形式,它将幫助企業系統架構者以更迅速、更可靠、更具重用性架構整個業務系統。較之以往,以SOA架構的系統能夠更加從容地面對業務的急劇變化。
體系結構
松耦合的系統
這種具有中立的接口定義(沒有強制綁定到特定的實現上)的特征稱為服務之間的松耦合。松耦合系統的好處有兩點,一點是它的靈活性,另一點是,當組成整個應用程序的每個服務的内部結構和實現逐漸地發生改變時,它能夠繼續存在。而另一方面,緊耦合意味着應用程序的不同組件之間的接口與其功能和結構是緊密相連的,因而當需要對部分或整個應用程序進行某種形式的更改時,它們就顯得非常脆弱。
對松耦合的系統的需要來源于業務應用程序需要根據業務的需要變得更加靈活,以适應不斷變化的環境,比如經常改變的政策、業務級别、業務重點、合作夥伴關系、行業地位以及其他與業務有關的因素,這些因素甚至會影響業務的性質。我們稱能夠靈活地适應環境變化的業務為按需(On demand)業務,在按需業務中,一旦需要,就可以對完成或執行任務的方式進行必要的更改。
雖然面向服務的體系結構不是一個新鮮事物,但它卻是更傳統的面向對象的模型的替代模型,面向對象的模型是緊耦合的,已經存在二十多年了。雖然基于 SOA 的系統并不排除使用面向對象的設計來構建單個服務,但是其整體設計卻是面向服務的。由于它考慮到了系統内的對象,所以雖然 SOA 是基于對象的,但是作為一個整體,它卻不是面向對象的。不同之處在于接口本身。SOA 系統原型的一個典型例子是通用對象請求代理體系結構(Common Object Request Broker Architecture,CORBA),它已經出現很長時間了,其定義的概念與 SOA 相似。
然而,現在的 SOA 已經有所不同了,因為它依賴于一些更新的進展,這些進展是以可擴展标記語言(eXtensible Markup Language,XML)為基礎的。通過使用基于 XML 的語言(稱為 Web 服務描述語言(Web Services Definition Language,WSDL))來描述接口,服務已經轉到更動态且更靈活的接口系統中,非以前 CORBA 中的接口描述語言(Interface Definition Language,IDL)可比了。
Web 服務并不是實現 SOA 的惟一方式。前面剛講的 CORBA 是另一種方式,這樣就有了面向消息的中間件(Message-Oriented Middleware)系統,比如 IBM 的 MQseries。但是為了建立體系結構模型,您所需要的并不隻是服務描述。您需要定義整個應用程序如何在服務之間執行其工作流。
此外,動态業務的工作流不僅可以包括部門之間的操作,甚至還可以包括與不為您控制的外部合作夥伴進行的操作。因此,為了提高效率,您需要定義應該如何得知服務之間的關系的策略,這種策略常常采用服務級協定和操作策略的形式。
最後,所有這些都必須處于一個信任和可靠的環境之中,以同預期的一樣根據約定的條款來執行流程。因此,安全、信任和可靠的消息傳遞應該在任何 SOA 中都起着重要的作用。
體系結構作用
對 SOA 的需要來源于需要使業務 IT 系統變得更加靈活,以适應業務中的改變。通過允許強定義的關系和依然靈活的特定實現,IT 系統既可以利用現有系統的功能,又可以準備在以後做一些改變來滿足它們之間交互的需要。
另一種形式是内部改變,在這種改變中,零售組織現在決定它還将把連鎖零售商店内的一些地方出租給專賣流行衣服的小商店,這可以看作是采用店中店(store-in-store)的業務模型。這裡,雖然公司的大多數業務操作都保持不變,但是它們現在需要新的内部軟件來處理這樣的出租安排。盡管在内部軟件系統可以承受全面的檢修,但是它們需要在這樣做的同時不會對與現有的供應商系統的交互産生大的影響。在這種情況下,SOA 模型保持原封不動,而内部實現卻發生了變化。雖然可以将新的方面添加到 SOA 模型中來加入新的出租安排的職責,但是正常的零售管理系統繼續如往常一樣。
為了延續内部改變的觀念,IT 經理可能會發現,軟件的新配置還可以以另外的一種方式加以使用,比如出租粘貼海報的地方以供廣告之用。這裡,新的業務提議是通過在新的設計中重用靈活的 SOA 模型得出的。這是來自 SOA 模型的新成果,并且還是一個新的機會,而這樣的新機會在以前可能是不會有的。
垂直改變也是可能的,在這種改變中,零售商從銷售他們自己的服裝完全轉變到專門通過店中店模型出租地方。如果垂直改變完全從最底層開始的話,就會帶來 SOA 模型結構的顯着改變,與之一起改變的還可能有新的系統、軟件、流程以及關系。
在這種情況下,SOA 模型的好處是它從業務操作和流程的角度考慮問題而不是從應用程序和程序的角度考慮問題,這使得業務管理可以根據業務的操作清楚地确定什麼需要添加、修改或删除。然後可以将軟件系統構造為适合業務處理的方式,而不是在許多現有的軟件平台上常常看到的其他方式。
正如您可以看到的,在這裡,改變和 SOA 系統适應改變的能力是最重要的部分。對于開發人員來說,這樣的改變無論是在他們工作的範圍之内還是在他們工作的範圍之外都有可能發生,這取決于是否有改變需要知道接口是如何定義的以及它們相互之間如何進行交互。
與開發人員不同的是,架構師的作用就是引起對 SOA 模型大的改變。這種分工,就是讓開發人員集中精力于創建作為服務定義的功能單元,而讓架構師和建模人員集中精力于如何将這些單元适當地組織在一起,它已經有十多年的曆史了,通常用統一建模語言(Unified Modeling Language,UML),并且描述成模型驅動的體系結構(Model-Driven Architecture,MDA)。
對于面向同步和異步應用的,基于請求/響應模式的分布式計算來說,SOA是一場革命。一個應用程序的業務邏輯(business logic)或某些單獨的功能被模塊化并作為服務呈現給消費者或客戶端。這些服務的關鍵是他們的松耦合特性。例如,服務的接口和實現相獨立。應用開發人員或者系統集成者可以通過組合一個或多個服務來構建應用,而無須理解服務的底層實現。舉例來說,一個服務可以用.NET或J2EE來實現,而使用該服務的應用程序可以在不同的平台之上,使用的語言也可以不同。.
新興變革
随着全球信息化的浪潮,信息化産業不斷發展、延伸,已經深入了衆多的企業及個人,SOA系統架構的出現,将給信息化帶來一場新的革命。
縱觀信息化建設與應用的曆程,盡管出現過XML(标準通用标記語言的子集)、Unicode、UML等衆多信息标準,但是許多異構系統之間的數據源仍然使用各自獨立的數據格式、元數據以及元模型,這是信息産品提供商一直以來形成的習慣。
各個相對獨立的源數據集成一起,往往通過構建一定的數據獲取與計算程序來實現,這樣的做法需要花費大量工作。信息孤島大量存在的事實,使信息化建設的ROI(投資回報率)大大降低,ETL成為集中這些異構數據的有效工具。 ETL常用于從源系統中提取數據,将數據轉換為與目标系統相兼容的格式,然後将其裝載到目标系統中。數據經過獲取、轉換、裝載後,要産生應用價值,還需另外的數據展現工具予以實現,如此複雜的數據應用過程,必定産生高昂的應用成本。
結構化的數據管理尚可通過以上方法,予以實現其集成應用。在非結構化的内容方面,這些具有挑戰性的問題令人生畏。内容管理的應用方案基于不同的信息化應用系統,而且大部分是縱向的以組織部門為界限的。在内容管理市場中,經常使用來自不同廠商的産品來提供這些解決方案。即使是同一個廠商的産品,相互之間的功能也是經常重疊,并且無法集成。
随着信息化建設的深入,不同應用系統之間的功能界限已趨于模糊。同時企業資源計劃系統和協同商務系統,又需要商業智能的分析展現數據提供用戶操作依據。
在激烈競争且多變的市場環境下,企業的管理模式很難固化,應用傳統的信息化軟件,當企業要做出一些改動時需要面對巨大的挑戰。
SOA系統架構的出現,信息化變革微軟大中華區服務部總經理辛兒倫介紹說,從上世紀60年代應用于主機的大型主機系統,到80年代應用于PC的CS 架構,一直到90年度互聯網的出現,系統越來越朝小型化和分布式發展。2000年WebService出現後,SOA被譽為下一代Web服務的基礎框架,已經成為計算機信息領域的一個新的發展方向。
SOA的出現給傳統的信息化産業帶來新的概念,不再是各自獨立的架構形式,能夠輕松的互相聯系組合共享信息。可複用以往的信息化軟件。基于SOA的協同軟件提供了應用集成功能,能夠将ERP、CRM、HR等異構系統的數據集成。
松散耦合方式,隻要充分了解業務的進程,就可以不用編寫一行代碼,通過流程圖實現一套我們自己的信息系統。就像已經給你準備好了磚瓦和水泥,隻需要想好蓋什麼樣的房子就可以輕松的蓋起。加快開發速度,并且減少了開發和維護的費用。軟件将所有的管理提煉成表單和流程,以記錄管理的内容,指定過程的流轉方向。
更簡便的信息和數據集成。信息集成功能可以将散落在廣域網和局域網上的文檔、目錄、網頁輕松集成,加強了信息的協同相關性。同時,複雜、成本高昂的數據集成,也變成了可以簡單且低成本實現的參數設定。創建了完全集成的信息化應用新領域。
在具體的功能實現上,SOA協同軟件所實現的功能包括了知識管理、流程管理、人事管理、客戶管理、項目管理、應用集成等,從部門角度看涉及了行政、後勤、營銷、物流、生産等。從應用思想上看,SOA協同軟件中的信息管理功能,全面兼顧了貫穿整個企業組織的信息化軟硬件投入。盡管各種IT技術可以用于不同的用途,但是信息管理并沒有任意地将信息分為結構化或者非結構化的部分,因此ERP等結構化管理系統并不是信息化建設的全部;同時,信息管理也沒有将信息化解決方案劃分為部門的視圖,因此僅僅以部分為界限去構建軟件應用功能的思想未必是不可撼動的。
基于SOA的協同軟件與 ERP、CRM等傳統應用軟件相比,關鍵的不同在于它可以在合适的時間、合适的地點并且有正當理由向需要它提供服務的任何用戶提供服務。