<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

    SOA (service-oriented architecture),面向服務的架構,恐怕是近一段時間以來最熱門的話題之一。在2004年中國軟件業評出的10大熱點名詞中,SOA名列榜首。ZapThink調研公司在最近發表的一份報告中也預測,到2006年,基于SOA架構的中間件產品將成為網絡化商業系統的主要設計思路。Gartner集團的分析師也指出,今年,SOA架構下的中間件產品將進入主流應用之中。Gartner 還預言:“到了 2008 年,至少 60% 的企業將使用 SOA 作為創建任務苛刻的應用程序和過程的‘指導原則’”。

    本組報道將討論SOA的基本概念和基本架構特點,主要包括以下幾篇文章:


    1、認清SOA的本來面目

    2、SOA應用系統總體框架及相關概念

    3、實現SOA的相關技術

    4、SOA的不足

          

    認清SOA的本來面目

     



    SOA架構是一場革命,其實質就是將系統模型與系統實現分離。

    軟件業從最初的面向過程、面向對象,到后來的面向組件、面向集成,直到現在的面向服務,走過了一條螺旋上升的曲線。其實,自從上世紀70年代提出“軟件危機”,誕生軟件工程學科以來,軟件業為了徹底擺脫軟件系統開發泥潭,一直也沒有放棄努力。

    在經典軟件工程理論中,不管是瀑布方法還是原型方法,都是從需求分析做起,一步一步構建起形形色色的軟件系統。但是,需求變更像一個揮之不去的陰影,時刻伴隨著系統左右。每一個實際應用系統的開發者都飽嘗了在系統進入開發階段、測試階段,甚至上線階段遭遇應接不暇的需求變更的極端痛苦。客戶將變更的需求視為bug(錯誤),也是測試上現階段的主要問題。

    如何解決這一問題?能否來一場軟件開發和架構的革命?SOA架構的提出,就是被人看成這樣的一場革命。其實質就是要將系統模型與系統實現分割開來。

    1.定義

    SOA并不是一個新概念,有人就將CORBA和DCOM等組件模型看成SOA架構的前身。早在1996年,Gartner Group就已經提出了SOA的預言。不過那個時候僅僅是一個“預言”,當時的軟件發展水平和信息化程度還不足以支撐這樣的概念走進實質性應用階段。到了近一兩年,SOA的技術實現手段漸漸成熟了。在BEA、HP等軟件巨頭的極力推動下,才得以慢慢風行起來。Gartner為SOA描述的愿景目標是實現實時企業(Real-Time Enterprise)。

    關于SOA,目前尚未有一個統一的、業界廣泛接受的定義。一般認為:SOA,面向服務的架構是一個組件模型,它將應用程序的不同功能單元——服務(service),通過服務間定義良好的接口和契約(contract)聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在這樣的系統中的服務可以使用統一和標準的方式進行通信。這種具有中立接口的定義(沒有強制綁定到特定的實現上)的特征被稱為服務之間的松耦合。

    從這個定義中,我們看到下面兩點:

    ● 它是一種軟件系統架構。 SOA不是一種語言,也不是一種具體的技術,更不是一種產品,而是一種軟件系統架構。它嘗試給出在特定環境下推薦采用的一種架構,從這個角度上來說,它其實更像一種架構模式(Pattern),是一種理念架構,是人們面向應用服務的解決方案框架。

    ● 服務(service)是整個SOA實現的核心。SOA架構的基本元素是服務,SOA 指定一組實體(服務提供者、服務消費者、服務注冊表、服務條款、服務代理和服務契約),這些實體詳細說明了如何提供和消費服務。遵循 SOA 觀點的系統必須要有服務,這些服務是可互操作的、獨立的、模塊化的、位置明確的、松耦合的,并且可以通過網絡查找其地址。

    2.SOA三種角色的關系

    圖1是W3C給出的SOA模型中三種不同角色的關系示意圖。其中:

    服務是一個自包含的、無狀態(stateless)的實體,可以由多個組件組成。它通過事先定義的界面響應服務請求。它也可以執行諸如編輯和處理事務(transaction)等離散性任務。服務本身并不依賴于其他函數和過程的狀態。用什么技術實現服務,并不在其定義中加以限制。

    服務提供者(service provider)提供符合契約(contract)的服務,并將它們發布到服務代理。

    服務請求者(service consumer)也叫服務使用者,它發現并調用其他的軟件服務來提供商業解決方案。從概念上來說,SOA 本質上是將網絡、傳輸協議和安全細節留給特定的實現來處理。服務請求者通常稱為客戶端,但是,也可以是終端用戶應用程序或別的服務。

    服務代理者(service broker)作為儲存庫、電話黃頁或票據交換所,產生由服務提供者發布的軟件接口。

    這三種 SOA 參與者:服務提供者、服務代理者以及服務請求者通過3個基本操作:發布(publish)、查找(find)、綁定(bind)相互作用。服務提供者向服務代理者發布服務。服務請求者通過服務代理者查找所需的服務,并綁定到這些服務上。服務提供者和服務請求者之間可以交互。

    所謂服務的無狀態,是指服務不依賴于任何事先設定的條件,是狀態無關的(state-free)。在SOA架構中,一個服務不會依賴于其他服務的狀態。 它們從客戶端接受服務請求。因為服務是無狀態的,它們可以被編排(orchestrated)和序列化(sequenced)成多個序列 (有時還采用流水線機制) ,以執行商業邏輯。編排指的是序列化服務并提供數據處理邏輯。但不包括數據的展現功能。

    3.SOA的特征

    基于上面的討論,我們給出SOA的下面一些特征:

    ● 服務的封裝(encapsulation)。將服務封裝成用于業務流程的可重用組件的應用程序函數。它提供信息或簡化業務數據從一個有效的、一致的狀態向另一個狀態的轉變。封裝隱藏了復雜性。服務的API保持不變,使得用戶遠離具體實施上的變更。

    ● 服務的重用(reuse)。服務的可重用性設計顯著地降低了成本。為了實現可重用性,服務只工作在特定處理過程的上下文(context)中,獨立于底層實現和客戶需求的變更。

    ● 服務的互操作(interoperability)。互操作并不是一個新概念。在CORBA、DCOM、web service中就已經采用互操作技術。在SOA中,通過服務之間既定的通信協議進行互操作。主要有同步和異步兩種通信機制。SOA提供服務的互操作特性更有利于其在多種場合被重用。

    ● 服務是自治的(Autonomous)功能實體。服務是由組件組成的組合模塊,是自包含和模塊化的。

    SOA非常強調架構中提供服務的功能實體的完全獨立自主的能力。傳統的組件技術,如.NET Remoting、EJB、COM或者CORBA,都需要有一個宿主(Host或者Server)來存放和管理這些功能實體;當這些宿主運行結束時,這些組件的壽命也隨之結束。這樣當宿主本身或者其他功能部分出現問題的時候,在該宿主上運行的其他應用服務就會受到影響。

    SOA架構中非常強調實體自我管理和恢復能力。常見的用來進行自我恢復的技術,比如事務處理(Transaction)、消息隊列(Message Queue)冗余部署(Redundant Deployment)和集群系統(Cluster)在SOA中都起到至關重要的作用。

    ● 服務之間的松耦合度(Loosly Coupled)。服務請求者到服務提供者的綁定與服務之間應該是松耦合的。這就意味著,服務請求者不知道提供者實現的技術細節,比如程序設計語言、部署平臺,等等。服務請求者往往通過消息調用操作,請求消息和響應,而不是通過使用 API 和文件格式。

    這個松耦合使會話一端的軟件可以在不影響另一端的情況下發生改變,前提是消息模式保持不變。在一個極端的情況下,服務提供者可以將以前基于遺留代碼(如COBOL)的實現完全用基于Java語言的新代碼取代,同時又不對服務請求者造成任何影響。這種情況是真實的,只要新代碼支持相同的通信協議。

    ● 服務是位置透明的(location transparency)。服務是針對業務需求設計的。需要反映需求的變化,即所謂敏捷(agility)設計。要想真正實現業務與服務的分離,就必須使得服務的設計和部署對用戶來說是完全透明的。也就是說,用戶完全不必知道響應自己需求的服務的位置,甚至不必知道具體是哪個服務參與了響應。

    4.三個抽象級別

    從概念上講,SOA 中有三個主要的抽象級別:

    ● 操作:代表單個邏輯工作單元(LUW)的事務。執行操作通常會導致讀、寫或修改一個或多個持久性數據。SOA 操作可以直接與面向對象 (OO) 的方法相比。它們都有特定的結構化接口,并且返回結構化的響應。同方法一樣,特定操作的執行可能涉及調用附加的操作。

    ● 服務:代表操作的邏輯分組。服務可以分層,以降低耦合度和復雜性。一個服務的粒度(granularity)大小也與系統的性能息息相關。粒度太小,會增加服務間互操作通信的開銷;粒度太大,又會影響服務面對需求變化的敏捷性。

    ● 業務流程:為實現特定業務目標而執行的一組長期運行的動作或活動。業務流程通常包括多個業務調用。

    在SOA中,業務流程包括依據一組業務規則按照有序序列執行的一系列操作。操作的排序、選擇和執行稱為服務或流程編排。典型的情況是調用已編排服務來響應業務事件。從建模的觀點來看,由此帶來的挑戰是如何描述設計良好的操作、服務和流程抽象的特征,以及如何系統地構造它們。這些涉及服務建模、特征抽取的問題已經成為現階段人們關注的焦點。

    SOA應用系統總體框架及相關概念





    看到SOA的一堆名詞,讀者可能會感到迷惑,有必要結合實際的應用環境進一步闡釋SOA的相關概念。

    總體框架

    圖1所示的就是一個SOA應用系統的大體框架結構。它大體上可以分為五個部分:

    ● 展現層(presentation):圖1中5區,通過portal等技術建立展現平臺,方便用戶在這個界面上提出服務請求。

    ● 業務處理建模(business process modeling):圖1中的4區,SOA元模型從MDA中繼承了平臺無關模型來對業務處理過程建模。這一部分獨立于服務設計和部署層。模型驅動架構MDA(Model Driven Architecture)的主要缺陷是在模型設計階段就對需求有完整的描述,而且沒有需求變更的反饋機制。SOA通過添加敏捷方法AM來應對需求變更的情況。

    ● 服務層(Services): 圖1中的3區,整個SOA的核心層,它承上啟下,對上響應業務模型,對下調用相關組件群完成業務需求,形成“業務驅動服務、服務驅動技術”的SOA事務處理格局。服務可以根據粒度分層。雖然細粒度提供了更多的靈活性,但同時也意味著交互的模式可能更為復雜。粗粒度降低了交互復雜性,但敏捷性卻下降。

    ● 企業組件層(enterprise components):圖1中的2區,這里是相關組件發揮作用的場所。這些組件是平臺相關的。因為到了這一層,許多底層軟硬件平臺的特性已經不再透明了。

    ● 系統軟件層(Operational System):圖1中的1區,這一層包括操作系統、數據庫管理系統、CRM、ERP、商業智能(BI)等異構系統,是一個集成的平臺。

    除此之外,諸如QoS、安全性等(圖1中7區)也是SOA架構的組成部分。

    在上面的介紹中,自上而下有一條線,如圖2所示,由業務建模開始,通過定義業務過程,得到服務模型,它是平臺無關的,實現了模型與實現的分離。再通過設計組件群,得到平臺相關的組件模型。

    實施原則

    Jason Bloomberg在其《Principles of SOA》中指出,SOA的實踐必須遵循以下原則:

    ● 業務驅動服務,服務驅動技術。從本質上說,在抽象層次上,服務位于業務和技術中間。面向服務的架構設計師一方面必須理解在業務需求和可以提供的服務之間的動態關系;另一方面,同樣要理解服務與提供這些服務的底層技術之間的關系。

    ● 業務敏捷是基本的業務需求。SOA考慮的是下一個抽象層次:提供響應變化需求的能力是新的“元需求”,而不是處理一些業務上的固定不變的需求。從硬件系統以上的整個架構都必須滿足業務敏捷的需求,因為,在SOA中任何的瓶頸都會影響到整個IT環境的靈活性。

    ● 一個成功的SOA總在變化之中。SOA工作的場景,更像是一個活的生物體,而不是像傳統所說的“蓋一棟房子”。IT環境惟一不變的就是變化,因此面向服務架構設計師的工作永遠不會結束。對于習慣于蓋房子的設計師來說,要轉向設計一個活的生物體要求有嶄新的思維方式。SOA的基礎還是一些類似的架構準則。

    與其他概念的關系

    1. SOA與Web Services的關系

    SOA構架是獨立于技術實現的。SOA并不必用Web Services來實現,相反,Web Services也并不一定遵循SOA標準。

    不過,Web Services的特性十分適合用來實現SOA架構。Web Services 之間能夠交換帶結構的文檔(比如XML),這些文檔可能包含完全異構的數據信息。這些文檔可以同時附帶關于數據的數據:元數據(metadata)。換句話說,Web Services可以有較粗的粒度,這樣較粗的粒度正好可以構成SOA中服務的粒度。

    說到底,兩者是相交的圓,SOA服務和Web Services之間的區別還在于設計。SOA概念并沒有確切地定義服務具體如何交互,而僅僅定義了服務如何相互理解。其中的區別也就是定義如何執行流程的戰略與如何執行流程的戰術之間的區別。而另一方面,Web Services在需要交互的服務之間如何傳遞消息有具體的指導原則;從戰術上實現SOA模型是通過 HTTP傳遞的SOAP消息中最常見的SOA模型。因而,從本質上講,Web Services是實現 SOA的具體方式之一。

    2. SOA中的服務與組件對象(Components Objects)的關系

    相似之處在于:都有一個或多個接口,并且,服務發布者和使用者都遵守這些接口。

    不同之處在于:SOA是關于模式(schemas)的,組件對象是關于對象類型(object types)的;SOA通過像SOAP這樣的標準消息機制(messages)來實現通信,而組件對象通過方法調用(method calls)來交互。與CORBA 中的接口定義語言IDL (Interface Definition Language)相比,SOA 在WSDL (Web Services Definition Language) 中采用XML,會顯得更加普遍和通用。

    聯系之處在于:服務最終還是通過類和組件對象來實現的。

    SOA被認為是傳統緊耦合的、面向對象的模型的替代者。像通用對象代理架構CORBA (Common Object Request Broker Architecture)和分布式組件對象模型DCOM (Distributed Component Object Model)。在SOA 中,單個服務可以用面向對象方法來設計,但是,整個SOA的設計卻是面向服務的。下面的表格中給出了SOA與分布式組件架構的不同點。

    3. SOA與網格計算(Grid Computing)的關系

    網格計算(Grid Computing)是利用互聯網技術,把分散在不同地理位置的計算機組成一臺虛擬超級計算機。每一臺參與的計算機就是其中的一個“節點”,所有的計算機就組成了一張節點網——網格。從實質上來說“網格計算”是一種分布式應用,網格中的每一臺計算機只是完成工作的一個小部分,雖然單臺計算機的運算能力有限,但成千上萬臺計算機組合起來的計算能力就可以和超級計算機相比了。

    網格計算基于因特網,提供了資源整合和共享的平臺。十分適合作為SOA架構的實施平臺。

    我們來具體地看一下:

    SOA 的構建策略:創建一個面向服務的計算SOC(service-based computing)環境;可以用類似于web services的技術來設計服務:使用SOAP通信機制;采用XML數據格式;強調服務的重用和互操作;最大化的應用現有資源;希望有一個類似于網格計算環境的基礎平臺。

    網格作為平臺的基本特點:網格被視為一個由各種計算資源組成的統一環境,其管理軟件將網格整合成一個完整而協調的透明計算整體;網格是一個虛擬的應用服務器;是一個應用實現和數據處理的理想平臺;服務在網格中部署和調用執行;商業邏輯和服務調用被當成網格程序一樣在平臺上運行;網格為SOC計算的有效性、快速性、靈活性、伸縮性和計算環境的管理提供便利。

    SOA帶給企業什么?

    作為需要構建SOA應用的企業來說,究竟有些什么好處呢?我們來看一下:

    ● 集成現有系統,不必另起爐灶。面向服務的體系結構可以基于現有的系統投資來發展,而不需要徹底重新創建系統。通過使用適當的 SOA 框架并使其用于整個企業,可以將業務服務構造成現有組件的集合。使用這種新的服務只需要知道它的接口和名稱。服務的內部細節以及在組成服務的組件之間傳送的數據的復雜性都對外界隱藏了。這種組件的匿名性使組織能夠利用現有的投資,從而可以通過合并構建在不同的機器上、運行在不同的操作系統中、用不同的編程語言開發的組件來創建服務。遺留系統可以通過 Web 服務接口來封裝和訪問。

    ● 服務設計松耦合, 帶來多方面優點。服務是位置透明的,服務不必與特定的系統和特定的網絡相連接。服務是協議獨立的,服務間的通信框架使得服務重用成為可能。對于業務需求變化,SOA能夠方便組合松耦合的服務,以提供更為優質和快速的響應,允許服務使用者自動發現和連接可用的服務。松耦合系統架構使得服務更容易被應用所集成,或組成其他服務,同時提供了良好的應用開發、運行時服務部屬和服務管理能力。提供對服務使用者的驗證(authentication) 授權(authorization),來加強安全性保障,這一點也優于其他緊耦合架構。

    ● 統一了業務架構,可擴展性增強。在所有不同的企業應用程序之間,基礎架構的開發和部署將變得更加一致。現有的組件、新開發的組件和從廠商購買的組件可以合并在一個定義良好的 SOA 框架內。這樣的組件集合將被作為服務部署在現有的基礎構架中,從而使得可以更多地將基礎架構作為一種商品化元素來加以考慮,增強了可擴展性。又由于面向服務的敏捷設計,在應對業務變更時,有了更強的“容變性”。

    ● 加快了開發速度,減少了開發成本。組織的 Web 服務庫將成為采用 SOA 框架的組織的核心資產。使用這些 Web 服務庫來構建和部署服務將顯著地加快產品的上市速度,因為對現有服務和組件的新的創造性重用縮短了設計、開發、測試和部署產品的時間。 SOA 減少了開發成本,提高了開發人員的工作效率。

    研究表明,一般系統的接口的開發費用占到整個開發費用的33%,最高的竟達到了70%。在SOA中,接口的重用會節省費用60%。而且節省的費用不是一次性的,而是每年。隨著業務需求的發展和新的需求的引入,通過采用 SOA 框架和服務庫,為現有的和新的應用程序增強和創建新的服務的成本大大地減少了。同樣,開發團隊的學習難度也降低了,因為他們可能已經熟悉了現有的組件。

    ● 持續改進業務過程,降低激變風險。SOA允許清晰地表示流程流,這些流程流通過在特定業務服務中使用的組件的順序來標識。這給商業用戶提供了監視業務操作的理想環境。業務建模反映在業務服務中。流程操縱是以一定的模式重組部件(構成業務服務的組件)來實現的。這將進一步允許更改流程流,而同時監視產生的結果,因此促進了持續改進。重用現有的組件降低了在增強或創建新的業務服務過程中帶來的風險,也減少了維護和管理支持服務基礎架構的風險。


    實現SOA的相關技術





    圖1是一張SOA技術實施的示意圖,其中涉及的主要技術包括以下幾個:

    1.XML

    XML 1.0 (可擴展標記語言,Extensible Markup Language) 標準是一個基于文本的 World Wide Web 組織 (W3C) 規范的標記語言。與 HTML 使用標簽來描述外觀和數據不同,XML 嚴格地定義了可移植的結構化數據。它可以作為定義數據描述語言的語言,如標記語法或詞匯、交換格式和通信協議。

    2.SOAP

    簡單對象訪問協議 (Simple Object Access Protocol) 是一個基于XML的,用于在分布式環境下交換信息的輕量級協議。SOAP 在請求者和提供者對象之間定義了一個通信協議,這樣,在面向對象編程流行的環境中,該請求對象可以在提供的對象上執行遠程方法調用。因為SOAP是平臺無關和廠商無關的標準,因此盡管SOA并不必須使用SOAP,但在帶有單獨 IT基礎架構的合作伙伴之間的松耦合互操作中,SOAP仍然是支持服務調用的最好方法。

    W3C SOAP 1.2規范在服務請求者和服務提供者之間定義使用XML格式的消息進行通信。將應用程序請求(在XML中)放入 SOAP 信封中(也是 XML ),并從請求者到提供者發送應用程序請求,提供者發回的響應也采用相同的形式。最近 SOAP 被稱為面向服務的架構協議 (Services-Oriented Architecture Protocol)。

    SOAP的優點在于它完全和廠商無關,相對于平臺、操作系統、目標模型和編程語言可以獨立實現。另外,傳輸和語言綁定以及數據編碼的參數選擇都是由實現決定的。

    3.WSDL

    Web服務描述語言 WSDL (Web Services Description Language) 是一個提供描述服務IDL標準方法的XML詞匯。Web 服務描述語言(WSDL)規范定義了一個 XML詞匯表,該詞匯表依照請求和響應消息,在服務請求者和服務提供者之間定義了一種契約。我們能夠將Web服務定義為軟件,這個軟件通過描述SOAP消息接口的 WSDL文檔來提供可重用的應用程序功能,并使用標準的傳輸協議來進行傳遞。

    WSDL描述包含必要的細節,以便服務請求者能夠使用特定服務:

    ● 請求消息格式

    ● 響應消息格式

    ● 向何處發送消息。

    WSDL 是基于 XML 的,因此 WSDL 文檔是計算機可讀的(machine-readable)。這樣開發環境使用WSDL將集成服務的流程自動處理到請求者應用程序。例如 WebSphere Studio產生一個Java的代理對象,它能夠像本地對象一樣實現服務,但是實際上代理對象僅僅處理請求的創建和響應消息的解析。不管服務是否用Java、C#或者其他的語言實現,生成的Java代理對象都能夠從WSDL描述中調用任何的Web服務。實際上,WSDL不能像編程語言那樣描述實現細節。

    4.UDDI

    統一描述、發現和集成 (Universal Description, Discovery and Integration) 規范提供了一組公用的 SOAP API,使得服務代理得以實現。UDDI為發布服務的可用性和發現所需服務定義了一個標準接口(基于 SOAP 消息)。UDDI 實現將發布和發現服務的 SOAP 請求解釋為用于基本數據存儲的數據管理功能調用。

    為了發布和發現其他SOA服務,UDDI 通過定義標準的 SOAP 消息來實現服務注冊(Service Registry)。注冊是一種服務代理,它是在 UDDI 上需要發現服務的請求者和發布服務的提供者之間的中介。一旦請求者決定使用特定的服務,開發者通常借助于開發工具(如Microsoft Visual Studio .NET)并通過創建以發送請求并處理響應的方式訪問服務的代碼來綁定服務。

    SOA不需要使用UDDI,但由于 UDDI 是建立在SOA上來完成自身工作的,所以UDDI是服務發現的一個好的解決方案。

    5.ESB

    如圖2所示,企業服務總線ESB(Enterprise Service Bus)是SOA架構的一個支柱技術。 作為一種消息代理架構它提供消息隊列系統,使用諸如SOAP或JMS (Java Message Service)等標準技術來實現。

    有人把ESB描述成一種開放的、基于標準的消息機制,通過簡單的標準適配器和接口,來完成粗粒度應用(比如服務)和其他組件之間的互操作。

    ESB的主要功能有:通信和消息處理、服務交互和安全性控制、服務質量和服務級別管理、建模、管理和自治、基礎架構智能等。


    SOA的不足





    作為一個具有發展前景的應用系統架構,SOA尚處在不斷發展中,肯定存在許多有待改進的地方。隨著標準和實施技術的不斷完善,這些問題將迎刃而解,SOA應用將更加廣泛。

    缺憾之一 : 可靠性(Reliability)

    SOA還沒有完全為事務的最高可靠性——不可否認性(nonrepudiation)、消息一定會被傳送且僅傳送一次(once-and-only-once delivery)以及事務撤回(rollback)——做好準備,不過等標準和實施技術成熟到可以滿足這一需求的程度并不遙遠。

    缺憾之二 : 安全性(Security)

    在過去,訪問控制只需要登錄和驗證;而在SOA環境中,由于一個應用軟件的組件很容易去與屬于不同域的其他組件進行對話,所以確保迥然不同又相互連接的系統之間的安全性就復雜得多了。

    缺憾之三:編排 (Orchestration)

    統一協調分布式軟件組件以便構建有意義的業務流程是最復雜的,但它同時也最適合面向服務類型的集成,原因很顯然,建立在SOA上面的應用軟件被設計成可以按需要拆散、重新組裝的服務。作為目前業務流程管理(BPM)解決方案的核心,編排功能使IT管理人員能夠通過已經部署的套裝或自己開發的應用軟件的功能,把新的元應用軟件(meta-application)連接起來。 事實上,最大的難題不是建立模塊化的應用軟件,而是改變這些系統表示所處理數據的方法。

    缺憾之四:遺留系統處理(Legacy support)

    SOA中提供集成遺留系統的適配器, 遺留應用適配器屏蔽了許多專用性API的復雜性和晦澀性。一個設計良好的適配器的作用好比是一個設計良好的SOA服務:它提供了一個抽象層,把應用基礎設施的其余部分與各種棘手問題隔離開來。一些廠商就專門把遺留應用軟件“語義集成”到基于XML的集成構架中。 但是集成遺留系統的工作始終是一種挑戰。

    缺憾之五 : 語義 Semantics

    定義事務和數據的業務含義,一直是IT管理人員面臨的最棘手的問題。語義關系是設計良好SOA架構的核心要素。 就目前而言,沒有哪一項技術或軟件產品能夠真正解決語義問題。為針對特定行業和功能的流程定義并實施功能和數據模型是一項繁重的任務,它最終必須由業務和IT管理人員共同承擔。不過,預制組件和經過實踐證明的咨詢技能可以簡化許多難題。

    采用XML技術也許是一個不錯的主意。許多公司越來越認識到制定本行業XML標準的重要性。譬如,會計行業已提議用可擴展業務報告語言(XBRL)來描述及審查總賬類型的記錄。

    重要的是學會如何以服務來表示基本的業務流程。改變開發方式需要文化變遷,相比之下,解決技術難題只是一種智力操練。

    性能(performance):SOA的第六個缺憾?

    批評SOA的人士經常會提到性能是阻礙其采用的一個障礙,但技術的標準化總需要在速度方面有一些犧牲。這種懷疑觀點通常針對兩個方面:SOA的分布性質和Web服務協議的開銷。

    不可否認,任何分布式系統的執行速度都不如獨立式系統,這完全是因為網絡的制約作用造成的。當然,有些應用軟件無法容忍網絡引起的延遲,例如那些對實時性要求很高的應用軟件。所以在應用SOA架構之前,搞清楚它的適用范圍就顯得很重要了。

    除了上述幾點之外,筆者認為還有兩點也頗值得關注:

    松耦合和敏捷性要求之間的權衡難題:

    服務松耦合設計其實是一把雙刃劍,在帶來應變敏捷性的同時,也給業務建模和服務劃分帶來難題。這就是為什么在SOA討論中,業務建模的爭論總是最多的原因。

    跨系統集成難題:

    面向服務的體系結構設計將跨越計算機系統,并且還可能跨越企業邊界。我們不得不考慮在使用 Internet 時安全性功能和需求,以及如何鏈接伙伴的安全域。Internet 協議并不是為可靠性(有保證的提交和提交的順序)而設計的,但是我們需要確保消息被提交并被處理一次。當這不可能時,請求者必須知道請求并沒有被處理。

    posted on 2007-11-10 15:16 禮物 閱讀(1149) 評論(0)  編輯  收藏 所屬分類: soa

    只有注冊用戶登錄后才能發表評論。

    網站導航:
     
    主站蜘蛛池模板: 国内精品久久久久影院亚洲| 视频一区在线免费观看| 午夜成人免费视频| 乱淫片免费影院观看| 亚洲va无码专区国产乱码| 久久福利资源网站免费看| 久久久久久亚洲精品无码| 精品亚洲综合久久中文字幕| 我的小后妈韩剧在线看免费高清版 | 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲成av人在线观看网站| 国产AV无码专区亚洲精品| 好大好硬好爽免费视频| 黄色短视频免费看| 亚洲色偷偷综合亚洲av78| 亚洲国产精品成人精品无码区| 毛片大全免费观看| 四虎国产精品免费永久在线| 亚洲粉嫩美白在线| 亚洲国产精品成人精品无码区 | 亚洲AV无码男人的天堂 | 一级有奶水毛片免费看| 亚洲精品123区在线观看| 亚洲精品乱码久久久久久| 永久免费无码网站在线观看| 男女作爱在线播放免费网站| 在线观看免费亚洲| 亚洲国产综合在线| 国产亚洲精品va在线| 免费国产成人高清视频网站| 无码区日韩特区永久免费系列| 丝袜捆绑调教视频免费区| 精品国产日韩亚洲一区91| 亚洲国产精品成人精品小说| 亚洲精品无码MV在线观看| 国产最新凸凹视频免费| 美女视频黄免费亚洲| 久久免费国产视频| 91免费在线视频| 免费人妻精品一区二区三区| 在线观看亚洲AV每日更新无码|