Ryan's Java world!

          something about Java and opensource!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            51 Posts :: 25 Stories :: 59 Comments :: 0 Trackbacks
          書籍瀏覽:面向服務架構(SOA)--概念、技術和設計

          時間:2005-11-11
          ?作者:David Karr


          《Service-Oriented Architecture——Concepts, Technology, and Design》是Thomas Erl所著的《Service-Oriented Architecture——A Field Guide to Integrating XML and Web Services》一書的后續。它不論從內容上來看還是從重量上來看,都不是一本輕松讀物。它最初是以精裝本的形式出版的,這對于技術書籍來說是不常見的。它共有792頁。您可以將這本書視為SOA的羅賽塔石碑(Rosetta Stone,破譯了古埃及文字),它澄清了SOA的概念和對它的誤解、在部署SOA時要使用哪些組件、進行哪些考慮,并將其與其他架構作了比較。

          簡介

            本書是Thomas Erl所著的《Service-Oriented Architecture——A Field Guide to Integrating XML and Web Services》一書的后續。它不論從內容上來看還是從重量上來看,都不是一本輕松讀物。它最初是以精裝本的形式出版的,這對于技術書籍來說是不常見的。它共有792頁。您可以將這本書視為SOA的羅賽塔石碑(Rosetta Stone,破譯了古埃及文字),它澄清了SOA的概念和對它的誤解、在部署SOA時要使用哪些組件、進行哪些考慮,并將其與其他架構作了比較。

            前一本書主要集中于面向服務架構的啟用,涉及到XML和Web Services的集成。在某些地方暗示了采用SOA的好處,但并未明說。

            本文將描述的這本書則會打開SOA的大門,說明Web Services的作用,并介紹SOA的一些特性,這些特性Web Services并沒有以開箱即用的形式提供,而是讓用戶自行設計。

            它詳細地介紹了主要的WS-*擴展、這些擴展相互之間的關系,并推薦了一些具體的開發SOA的流程,從規劃到分析直到具體的接口設計。

            延續前一本書的模式,它對技術平臺的實現介紹得比較少,而是把重點放在SOA和Web服務的設計上。但是,在最后一章中,它從一個比較高的層面上,概覽了支持SOA的J2EE和.NET平臺中的架構組件。

            雖然介紹實際平臺支持的最后一章與面向服務的分析和設計內容關系不大,但是從前言中(大家應該都是從前到后按順序閱讀的吧?)可以看出,作者對這方面內容的研究實際上是本書要闡明的其他概念的基礎。有了這個基礎,作者才能集中于實際平臺所支持的概念。

            在這本書中,將通過對兩個互相之間通過電子商務來往的虛構公司(到最后,一個公司甚至決定收購另一個公司)的案例分析來說明一些原理。

            接下來,我將對這本書的章節及其主旨做一摘要。

          第一部分:SOA和Web Services基礎知識

            在這本書后面提供了關于WS-*擴展和具體的SOA開發流程的細節。而第一部分則介紹了必要的基本概念。

            這些基本概念的基礎是所謂的“基本SOA”和“現代SOA”。基本SOA表示使用“普通的”Web服務所能做到的,而現代SOA則更注重于將Web服務用作策略的一部分的實際SOA。然后它介紹了能夠代表好的面向服務架構的特征的一些特性。第三部分和第四部分將更詳細地說明這些特征。

            首先,書中暗示,市場上沒有關于Web Services的常規書籍。書中沒有重復對SOA概念的各種不同解釋,而是通過說明關于SOA和Web Services的幾個被誤解的概念,指出了SOA不是什么。它描述了幾種其他的軟件架構,比如“客戶/服務器”、“分布式互聯網”和面向對象架構,并解釋了這些架構所提供的特性,以及為什么它們不是SOA。

            本部分還總結了涉及到SOA和Web Services以及它們之間的關系的標準組織。

          第二部分:SOA和WS-*擴展

            本部分包括兩章內容,介紹了基本WS-*擴展,詳細說明了這方面的概念及其相互之間的關系,以及這些概念如何支持現代SOA原理。

            這部分的第一章從對消息交換模式即MEP的討論開始,比如“請求/響應”、“fire-and-forget”,以及更復雜的“發布/訂閱”。談到了MEP與SOAP、WSDL和SOA的關系。然后又討論了一些概念,如:協調、原子事務、業務活動、編制(Orchestration)和編排(Choreography),以及這些概念與SOA的關系和對SOA的作用。還簡要提到了這些概念與旨在支持它們的WS-*擴展之間的關系。

            接下來的一章在結構上與前一章類似,介紹了尋址、可靠消息傳遞、關聯、策略、元數據交換、安全性和Notification/Eventing的概念,并簡要說明了支持這些概念的WS-*擴展。

          第三部分:SOA和面向服務

            這部分首先討論了服務的設計和面向服務原理的使用。

            這部分的第一章探討了一個要點(可能是整本書中最重要的),即前面所確定的SOA的特性。重要的是,在插入Web服務時,應該以開箱即用的形式實現一些基本SOA的特征(如“服務契約”和“服務抽象”)。但是,一些基本SOA的特征(如“可重用性”和“無狀態性”)除非通過顯式設計才能實現。這一點也在本書的其他地方多次得以驗證。這很可能會使實現Web服務就會魔法般地產生SOA的神話破滅。

            這部分的第二章首先介紹了SOA的特性以及Web服務和WS-*擴展對那些特征造成了何種影響。然后就引出了服務設計中的服務層的概念。其基本理念是,設計良好的服務應該是應用層、業務層或編制層這些服務層其中一個的一部分。還介紹了這些層之間的關系,以及每一層都有哪些服務。

          第四部分:構建SOA(規劃和分析)

            這一部分的三章內容是關于在現代SOA中,為將業務和應用邏輯安排到服務候選者而進行的規劃和分析。

            第一章介紹了三種可能的SOA交付策略,它們都與從分析SOA到設計SOA都要用到的高級策略有關。這三種方法分別是:top-down、bottom-up和agile。

            top-down策略可以描述為“首先分析”,而bottom-up策略可以描述為“依次設計服務,以滿足應用需求”。這兩種策略都要進行一些權衡。

            這一章以對agile策略的討論結束,它被視為是對其他兩種策略的一種比較好的折衷而推薦使用。這種方法可以描述為“迭代開發”,它具有反復的分析和設計周期。

            接下來的兩章以前面所學到的原理為基礎,引入了面向服務分析的理念。此時SOA交付策略應該已經選定。

            以明確定義業務服務而不是應用服務為目標,面向服務分析的步驟以導出一組表示業務需求的服務操作候選者而宣告結束。有許多不同種類的業務服務,以及任務或實體服務。它們因相互之間的關系而區分開來,在本書后面的部分我們將看到這兩類服務的開發流程的細微區別。

            本部分的最后一章描述了為SOA(由應用層、業務層和編制層組成)建模服務候選者的基本步驟。在這一開發層面上,稱之為“候選者”是一個重要的特征,因為隨著開發的推進,情況可能會發生變化。與本書的其他章一樣,本章使用了來自連續的案例分析的幾個非常詳細的例子。除了流程步驟外,還描述了每一步以及整個流程應該考慮的一些建模指導原則。這包括針對增強和規劃候選服務的重用、均衡對需求的影響以及開發和遵循服務建模標準的指導原則。

            接下來討論了面向服務企業的概念,它是指業務邏輯的單元,這些業務邏輯被安排為構件塊(稱為服務建模單元),其作用域層次從基本業務活動到企業業務流程。這看起來與前一本書(《ented Architecture——A Field Guide to Integrating XML and Web Services》)的第十四章“Building the Service-Oriented Enterprise (SOE)”(構建面向服務企業)的內容類似。區別在于本書中的這一章并未討論這些概念性的作用域到更具體的Web服務操作、服務和集成架構的作用域的映射(雖然它也引用了與那本書中相同的一幅圖,用來描述這些概念)。

            本章以一個非常詳細的案例分析結束,它說明了服務建模的方法。

          第五部分:構建SOA(技術和設計)

            本部分由兩個子部分組成。第一部分比較大,由四章組成,重點介紹面向服務設計。接下來的一章又回顧了WS-*擴展,但是這次的重點放在接口的細節上,最后一章將中立地概述J2EE和.NET兩種基本開發平臺對面向服務架構的支持。

            關于面向服務設計的第一章,首先概述了面向服務設計的目標,然后介紹了一組步驟,用于將候選服務劃分到服務類型(如:“實體”、“應用”和“任務”)中,并選擇應該用于設計中的核心SOA標準和SOA擴展。該章的許多地方都有對XML Schema的語法基礎的介紹,因為這關系到WSDL。該章最后討論了從自動生成到硬編碼的WSDL編寫策略,以及對WSDL設計工具的要求。

            關于面向服務設計的第二章更詳細地介紹了服務層和前一章所述的SOA標準/擴展。在決定面向服務架構的服務層時,有一些實際的方面需要考慮。這些方面主要是有關性能、部署和管理的。接下來是在將若干個核心XML組件和WS-*擴展結合到SOA中的過程中會遇到的一些實際問題。例如,提到了使用來自多個源的自動生成XML所帶來的不一致問題。還提到了WS-I Basic Profile中的SOAP和WSDL文檔設計標準。還談到了在SOA上下文中使用XML Schema、SOAP、WSDL和UDDI的設計標準。本章最后給出了選擇WS-*擴展的一些簡要的指導原則(集中于WS-BPEL)。

            關于面向服務設計的第三章則深入介紹了應用服務層和業務服務層的細節,描述了設計應用服務、以實體為中心的服務以及以任務為中心的服務的具體步驟。每一套步驟都附有使用該套步驟的詳盡的案例分析。本章最后給出了一些設計這些服務的指導原則,比如使用命名標準、注重于粒度性和可擴展性、識別當前和未來的服務請求者、使用模塊化WSDL,以及使用元數據說明服務。

            關于面向服務設計的最后一章集中于最后一個服務層,編制層,以及可能用于實現編制層的WS-BPEL和WS-Coordination標準的語法元素。編制層的流程服務也有類似于前一章的逐步設計流程。并使用了一個詳盡的案例分析例子,該例子使用WS-BPEL定義一個流程服務。

            在四章關于關于面向服務設計的內容之后,接下來的一章深入介紹了幾個基本WS-*擴展(即:WS-Addressing、WS-ReliableMessaging、WS-Policy、WS-MetadataExchange和WS-Security)的語法元素方面的細節。附有幾個詳盡的案例分析例子,這些例子使用所有這些擴展定義服務。所有這些例子都是第二部分中相同例子的延續,第二部分中的例子說明了WS-*的概念,而這些例子則指出了那些概念的語法細節。這么做是為了使分析人員和開發人員可以集中于書的不同部分,但是如果您能夠同時從兩個視角理解這些例子,您會獲益更多。

            最后一章首先綜 述了在開發和運行時實際的SOA平臺必須提供的高級組件和塊,然后以對J2EE和.NET中的SOA支持的切實中立的概述收尾。

          結束語

            總而言之,如果您要了解面向服務架構,想知道它是什么、它不是什么、它是什么樣的、如何實現,那么本書將為您提供獨特而令人感興趣的內容,以及對一些您曾經遇到困難的概念的簡要歸納。

          原文出處:

          Book Review: Service-Oriented Architecture - Concepts, Technology, and Design

          http://dev2dev.bea.com/blog/dkarr/archive/2005/09/book_review_ser.html

          ?

          ?作者簡介
          David Karr是美國華盛頓互惠銀行(Washington Mutual)技術解決方案團隊的一名軟件工程師,他專攻J2EE、XML、Web Services和Unix技術。他是SUN認證的企業架構師,還是Struts-EL標簽庫的創建者。目前他是西雅圖BEA User Group的負責人。
          posted on 2006-05-09 15:20 冰雨 閱讀(1097) 評論(0)  編輯  收藏

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


          網站導航:
           

          JSF中文技術文摘
          主站蜘蛛池模板: 宁陕县| 东台市| 同心县| 桐乡市| 桃园县| 贺州市| 白沙| 平陆县| 阳朔县| 嘉禾县| 广汉市| 康马县| 个旧市| 丘北县| 班戈县| 仁寿县| 聊城市| 平遥县| 南投县| 滨州市| 青阳县| 广南县| 清水县| 连州市| 锦州市| 剑川县| 台中县| 资溪县| 崇礼县| 安阳市| 柏乡县| 天长市| 历史| 郧西县| 县级市| 怀来县| 交口县| 怀远县| 木兰县| 霍城县| 卢龙县|