Web 服務以及越來越多的面向服務架構(Service Oriented Architecture,SOA)已經在市場上投放了大量廣告。兩者都可以給企業帶來廣泛的短期和長期利益。但對于SOA,尤其是像開發人員和CIO等仍有若干關鍵問題需要回答。
問:SOA的前提是能夠使應用程序像服務那樣工作。軟件如何像服務一樣工作呢?
答:沒有SOA,軟件包是被編寫為獨立的(self-contained)軟件,即在一個完整的軟件包中將許多應用程序功能整合在一起。實現整合應用程序功能的代碼通常與功能本身的代碼混合在一起。我們將這種方式稱作軟件設計"單一應用程序"。與此密切相關的是,更改一部分代碼將對使用該代碼的代碼具有重大影響,這會造成系統的復雜性,并增加維護系統的成本。而且還使重新使用應用程序功能變得較困難,因為這些功能不是為了重新使用而打的包。
SOA旨在將單個應用程序功能彼此分開,以便這些功能可以單獨用作單個的應用程序功能或"組件"。這些組件可以用于在企業內部創建各種其他的應用程序,或者如有需要,對外向合作伙伴公開,以便用于合作伙伴的應用程序。
"服務"的概念是要使用與實施細節無關的標準化接口來構建這些"組件"。針對一套應用程序服務的Web服務描述語言文檔,描述需要作為請求特殊服務(例如,"檢查庫存"功能可能需要零件數)輸入來傳輸的數據名稱和類型,并描述服務響應的細節(它可能返回表示庫存中零件數量的一個整數)。
這些詳細信息看上去好像與 Java、C++、COBOL 等中實施的功能相同,因此,服務的請求程序無需知道使用的何種語言,而且可以使用任何語言來編寫請求程序。這就使一個平臺上的服務可以和為另一個平臺編寫的應用程序集成;ゲ僮餍缘年P鍵是請求和響應消息,例如,使用SOAP消息發送,其消息使用 XML 編寫代碼。
問:請舉例說明 SOA 如何使企業受益。
答:關鍵的優勢是互操作性,可以使用任何平臺之間的功能,而與編程的語言、操作系統和計算機類型等等無關。在上述示例中,"檢查庫存"功能可能已經編寫為一個應用程序要求的服務,例如,監控庫存并在需要時自動重新定購的服務,但我們后來發現,同樣的服務無需修改即可用于支持由員工使用的基于 Web 的庫存監控工具。
就內部而言,應用程序的重復使用是一項關鍵優勢,因為它可以降低開發成本。服務的重復使用,其長期作用在于減少企業中冗余的功能,簡化基礎架構,從而降低維護代碼的成本。通過按服務的使用者來組織應用程序,與傳統的編程技術相比,我們獲得一個要靈活敏捷得多的集成模型,使我們可以迅速修改業務流程模型。
就外部而言,為服務交互而詳細定義的"合同"使業務合作伙伴之間的交互"自由聯合",提供集成所必需的穩定性,并提供更改基層軟件(underlying software)問題的一個解決方案。當保留了相同的消息格式時,支持該格式的軟件只要仍然支持消息合同,則可以按需進行更改。只要它支持相同的消息格式,甚至可以使用另一種編程語言的實施來完全替換系統,請求程序無需更改。當消息合同不斷發展而必須更改時,與相當困難的任務,即支持多個版本的程序 API 和文件格式相比,它使用版本控制(versioning),更容易作為過渡策略支持多個版本的應用程序。
這些是部分關鍵益處,還有許多其他益處。
問:SOA與Web服務以及SOA和網格計算之間是何關系。
答:SOA是一種面向業務應用程序系統的體系架構設計風格,但可以應用于其他系統,包括中間件技術,例如網格計算。
Web服務是可以用于創建SOA的一套標準。盡管沒有Web服務標準也可能創建SOA(例如,在SOAP之前,人們已經在HTTP或JMS上使用XML來實現相似的結果),但運用Web服務標準卻是我們目前針對與外部軟件交互的最佳方法。
網格計算是一種系統管理策略,其目標是最大限度地減少硬件資源的使用。例如,當突然的需求溢出指定的服務器時,它可能臨時將一些請求轉向相對沒那么繁忙的服務器。網格計算設計為一種面向服務架構(用于調整網格計算的服務叫做網格服務)。
隨著我們轉向SOA,我們將看到該方法用于支持各種其他新的系統功能。另外一個示例是自主計算伙子管理系統。事實上,SOA是Web服務高級功能的基礎,例如WS-Trust和聯合身份識別管理規范。
文章來源于領測軟件測試網 http://www.kjueaiud.com/