服務契約
將服務契約視為實現服務的一部分時,大多數時候,除契約幫助確定服務使用的事實以外,您實際上并未對其給予充分的考慮。事實確實如此,而人們往往未能意識到服務契約是一份正式的、有約束力的協議,可能會制約未來的靈活性。由定義可知,一份契約是兩方或多方采用一種特定行為方式的約束性協議。不論您喜歡與否,通過建立服務控制,生產者和消費者都將受到其特定規則的管理。
回到我們的需求目錄,目錄中確定出我們希望開發服務,按一種輸入普通訂單規范來接受。這種規范模式構成了您所公開的、有約束力的契約的一部分。所有用戶都必須為服務提供這種規范,將其作為一個輸入參數。必須謹慎,確保模式未允許過高的靈活性,如果靈活性過高,就會導致調用一項服務的方法的變換。特別靈活的契約將造成這樣的后果:在嘗試調試或維護服務時,服務將變得脆弱,并越來越難以處理。
在積極的方面,服務契約為確保您的服務能得到迅速和有效利用提供了一種很好的方法。通過設計不涉及業務邏輯和運行時決策的服務實現,服務更可能被用來作為復合服務的部分。通過認識到服務可擁有多個契約,且這些契約決定了如何在運行時使用這些服務,這類收益可得到進一步實現。此概念與面向對象(OO)程序設計中的多態性(polymorphism) 相似。服務設計中的最佳實踐允許需求在契約級別獨立演進,從而保持服務實現的簡單和整潔。策略和契約自身可能擁有多對多關系,并且多個服務可能實現同一契約,弄清楚這一點后,服務擁有多個契約的理念可得到進一步的擴展。此時就可利用服務存儲庫按需調整的能力,從而管理系統的運行時操作。真正的松耦合需要服務基礎架構中存在多對多關系。在我看來,這是一種強大的概念,只是在SOA計劃中仍處于其幼年時期。
遺憾的是,通過利用運行時契約和策略所獲得的全部收益包含一些技術限制。特別地,WSDL目前無法對所有組織需要的功能和非功能性需求提供全面支持。此外,WS-Policy規范仍然所欠缺:它只為交換策略信息提供了一個可互操作的容器,但并未提供支持來指定策略行為。我相信,隨著組織中SOA采用和技術的繼續成熟,這些限制不久之后就會得到改變。
元數據
根據我的經驗,從長遠角度來看,組織SOA計劃的成功取決于它如何管理和利用元數據。盡管許多組織將通過上市時間的縮短、服務重用等方面受益于SOA計劃,但我相信,將可證實組織中元數據的使用就是短期成功和長期改造間的差異。元數據描述了服務以及那些服務的用戶如何與之交互,從而提供了靈活性,以便集中關注通過復合連續滿足業務需求,從而創建共享服務。
對元數據的理解可幫助組織避免將管理和流程硬編碼到工具與實現之中,并允許了資源的動態發現。組織必須能夠利用SOA基礎架構來獲取很多信息,而不僅僅是服務細節。必須建立一個元數據存儲庫來支持所有SOA工件,并允許描述環境中的流程和操作上下文。有效管理元數據的能力將與在整個管理流程中建立恰當、可度量的控制點直接相關。
結束語
為了在組織中利用SOA計劃的全部益處,采納以下觀念非常關鍵:運行時中的服務是一項企業資產,可被編目和跟蹤。這不僅有助于構建您的共享服務目錄和縮短上市時間,而且還可連續地作為SOA支出的合理證據。如果您無法通過SOA平臺跟蹤和度量收益以及成本節約情況,那么將來的成本收益決策就可能僅限于主觀信息。
通過共享服務的精確運行時管理,組織將改善其SOA計劃的效力。與傳統軟件開發不同,SOA主要關注構建可重用的原子服務上,這些服務通過契約和策略促進靈活性。通過成功的設計和一致的建模方法論,面向服務的運行時方面應更加關注組織中已有的服務基礎架構。
除了可靠的設計實踐和運行時實踐外,組織還應認識到SOA也帶來了新的挑戰,必須通過一致的管理模型和包容的思想加以有效管理。通過包容環境的一些確定因素(如變更),您的SOA計劃應提供有機的增長——這些增長只與組織保持競爭優勢并被視為行業領袖的期望相匹配。此后,所有的變更都與創新相關,而創新則是具有與眾不同的想法。若管理得當,SOA可成為此類變更的關鍵組件。
最后,作為一種架構范例,SOA的目標在于促進重用,允許企業更快地將新產品推向市場。作為一種方法論,SOA要求對組織如何快速地適應變更有深入理解。SSLC的運行時方面與構建組織的靈活性直接相關。本文嘗試了提出以下見解:企業要如何通過仔細分析當前需求和面向服務的設計實踐來達成此目標。
參考資料
理解SOA中的服務生命周期:設計時——Quinton Wall(中文版,Dev2Dev,2006年)
The ROI of SOA——Ronald Schmelzer(ZapThink,2006年,文檔ID:ZTZN-1187。注冊用戶可用)
Grabbling with SOA Change and Version Management——Ronald Schmelzer(ZapThink,2006年,文檔ID:ZAPFLASH-2006519。注冊用戶可用)
10 Rules for Service Design——John McDowell(FtpOnline,2005年)
Service Orientated Architecture: Concepts, Technology, and Design——Thomas Erl 2004
SOA Data Strategy——作者未知(Sys-con)2006年
The Rise of the Software Architect in a SOA World——Miko Matsumara(DevX,2005年)
文章來源于領測軟件測試網 http://www.kjueaiud.com/