隨筆-7  評論-13  文章-2  trackbacks-0

          轉發
          1.1 SOA 的基本概念

          SOA是英文詞語"Service Oriented Architecture"的縮寫,中文有多種翻譯,如"面向服務的體系結構"、"以服務為中心的體系結構"和"面向服務的架構",其中"面向服務的架構"比較常見。SOA有很多定義,但基本上可以分為兩類:一類認為SOA主要是一種架構風格;另一類認為SOA是包含運行環境、編程模型、架構風格和相關方法論等在內的一整套新的分布式軟件系統構造方法和環境,涵蓋服務的整個生命周期:建模-開發-整合-部署-運行-管理。后者概括的范圍更大,著眼于未來的發展,我們更傾向于后者,認為SOA是分布式軟件系統構造方法和環境的新發展階段。

          在SOA架構風格中,服務是最核心的抽象手段,業務被劃分(組件化)為一系列粗粒度的業務服務和業務流程。業務服務相對獨立、自包含、可重用,由一個或者多個分布的系統所實現,而業務流程由服務組裝而來。一個"服務"定義了一個與業務功能或業務數據相關的接口,以及約束這個接口的契約,如服務質量要求、業務規則、安全性要求、法律法規的遵循、關鍵業績指標(Key Performance Indicator,KPI)等。接口和契約采用中立、基于標準的方式進行定義,它獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在不同系統中的服務可以以一種統一的和通用的方式進行交互、相互理解。除了這種不依賴于特定技術的中立特性,通過服務注冊庫(Service Registry)加上企業服務總線(Enterprise Service Bus)來支持動態查詢、定位、路由和中介(Mediation)的能力,使得服務之間的交互是動態的,位置是透明的。技術和位置的透明性,使得服務的請求者和提供者之間高度解耦。這種松耦合系統的好處有兩點:一點是它適應變化的靈活性;另一點是當某個服務的內部結構和實現逐漸發生改變時,不影響其他服務。而緊耦合則是指應用程序的不同組件之間的接口與其功能和結構是緊密相連的,因而當發生變化時,某一部分的調整會隨著各種緊耦合的關系引起其他部分甚至整個應用程序的更改,這樣的系統架構就很脆弱了。

          SOA架構帶來的另一個重要觀點是業務驅動IT,即IT和業務更加緊密地對齊。以粗粒度的業務服務為基礎來對業務建模,會產生更加簡潔的業務和系統視圖;以服務為基礎來實現的IT系統更靈活、更易于重用、更好(也更快)地應對變化;以服務為基礎,通過顯式地定義、描述、實現和管理業務層次的粗粒度服務(包括業務流程),提供了業務模型和相關IT實現之間更好的"可追溯性",減小了它們之間的差距,使得業務的變化更容易傳遞到IT。

          因此,可以將SOA的主要優點概括為:IT能夠更好更快地提供業務價值(Business Centric)、快速應變能力(Flexibility)、重用(Reusability)。

          從演變的歷程來看,SOA在很多年前就被提出來了,現在SOA的再現和流行是若干因素的結合。一方面是多年的軟件工程發展和實踐所積累的經驗、方法和各種設計/架構模式,包括OO/CBD/MDD/MDA、EAI和中間件;另一方面是互聯網的多年發展帶來前所未有的分布式系統的交互能力和標準化基礎。與此同時,企業越來越重視業務模型本身的組件化,以支持高度靈活的業務戰略。但是現有的企業軟件架構不夠靈活,難以適應日益復雜的企業整合,難以滿足隨需應變商務的需要,因此與業務對齊、以業務的敏捷應變能力為首要目標、松散耦合、支持重用的SOA架構方法得到青睞。更多的細節請參見"

          基于我們同客戶打交道的經驗,有必要在這里澄清大家經常混淆的幾個基本問題。

          第一,SOA是架構風格,是方法;而不是具體架構具體實現技術(如Web Service)、具體架構元素(如企業服務總線,Enterprise Service Bus,ESB)。

          經常有人認為只要用了Web Service,就是SOA了。這是不對的,Web Service只是實現服務的一種具體技術表現形式。同樣,認為搞SOA,就是買點軟件,建個ESB,這也是不對的,ESB只是SOA架構風格中的一部分。首先,ESB是一種從實踐中總結出來的架構風格元素,即BUS(總線模式);其次,ESB的主要功能是負責連通性和服務中介(Service Mediation),解耦服務的請求者和服務的提供者。

          第二,SOA的首要目標是IT與業務對齊,支持業務的快速變化;其次是IT架構的靈活性和IT資產的重用。

          業務對敏捷性的需要,是SOA最大的驅動力。一方面是業務在這方面的要求越來越高;另一方面是今天的IT很不靈活,很難適應業務快速變化的需求,不僅僅是因為IT架構不靈活,更重要的是業務模型中的元素和IT系統的元素之間存在很大的差距。這種不對齊,導致業務人員和IT人員之間的溝通不夠有效,業務的變化需要花費很大的代價傳遞到IT系統。很難想像,業務人員對一個Java對象,一個EJB或者一個JSP頁面感興趣,這離業務世界太遠了。這種業務和IT的對齊,需要在IT系統中實現更高階的抽象元素,就是業務模型中的元素(服務、流程、業績管理),并且滿足業務需要的水平整合(將人、信息、應用和流程端到端地動態整合起來)。這樣一個以服務為中心的、端到端整合的環境,首先使得業務變化可以在業務元素這個層面上溝通,更容易、更準確地從業務傳遞到IT。其次,這種變化被隔離在需要變化的局部,而不擴散到系統的其他部分。這就需要整個IT架構本身是松散耦合的,一個服務的變化(功能、數據、過程、技術環境等)不影響其他服務。最后,我們希望這些反映業務元素的服務,是相對穩定、可以重用的,這對快速適應變化、減少成本是非常重要的。

          第三,在工程上,SOA的重點是服務建模和基于SOA的設計原則進行架構決策和設計。

          經常碰到客戶提出這樣的問題:SOA挺好,為什么好?怎么做才是SOA的方法?跟過去的方法,比如OO/CBD有什么不同?有時候一個J2EE服務器就好了,為什么那么復雜?

          從建模和設計的角度來說,SOA更多地側重在業務層次上,也就是通過服務建模將業務組件化為服務模型,它是業務架構的底層,是技術架構的頂層,承上啟下,是靈活的業務模型和IT之間的橋梁,保證二者之間的"可追溯性"。從這里往下,是基于已有的方法,比如OO/CBD來進行的。從架構的層次上,SOA更多地側重于如何將企業范圍內多個分布的系統(包括已有系統/遺留系統)連接起來(ESB,Adapter/Connector),如何將它們的功能、數據轉化為服務,如何通過服務中介機制(ESB,Service Registry)保證服務之間以松散耦合的方式交互,如何組裝(集成)服務為流程,如何管理服務和流程等。從這往下,對于實現服務的一個具體應用,它的架構、設計和實現是可以基于已有的實踐和方法的,比如J2EE或.NET。

          有些時候,由于業務需求比較簡單,所有這些東西都在一個J2EE的應用服務器上,有些要素不是那么突出,不過隨著系統規模的擴大,要解決的業務問題更復雜、范圍更大的時候,SOA的各種架構要素就會變得越來越重要。

          在下面的小節里就概括地討論一下SOA的若干個重要方面,包括:面向服務的計算環境,編程模型,架構風格,工程方法,以及相關的技術。





          回頁首


          1.2 計算環境的演變和面向服務的計算環境

          1.2.1 計算環境

          計算環境由一組計算機、軟件平臺和相互聯通的網絡組成,這個環境能夠處理和交換數字信息,允許外界訪問其內信息資源(1) 。不同的計算環境有不同的計算風格和編程模型,由一些特定于該計算環境的技術來支撐。如何在一個計算環境中分割和部署計算能力、數據資源,如何讓各個部分相互通信和協作,如何在概念上對問題域進行建模,然后映射到該計算環境,都會受到計算環境的影響和制約。因此,了解一下計算環境的歷史,會幫助我們理解面向服務的計算環境是如何演變而來的。

          1.2.2 計算環境的演變歷程

          計算環境的演變經歷了若干個階段,在早期的主機時代,絕大多數的計算功能和系統的組成部分,都包括在一臺機器里。在20世紀80年代,隨著PC的繁榮,計算環境發生很大的變化。通過局域網相互連接的計算設備構成客戶/服務器計算環境,計算資源和數據資源被適當地分割,客戶和服務器通過網絡協議、遠程調用或消息等方式來相互協作,完成計算。

          為了滿足更高的可伸縮性需求,多層架構出現,計算資源和數據資源的分布多樣化,與企業中原來已經存在的計算環境,尤其是主機及其遺留系統之間的集成也變得越來越重要。中間件迅速發展,開始出現分布式對象、組件和接口等概念,用于在計算環境中更好地分割運算邏輯和數據資源。計算環境中不同部分之間的交互,也從原有相對低層的網絡協議、遠程調用和消息機制的基礎上,發展到支持分布式對象、組件和接口之間的交互,這種交互在名字服務(Naming Service)等的支持下,通常是位置透明的。但由于缺乏普遍的標準化支持,很難做到技術透明,系統是緊耦合的。

          隨著互聯網(Internet)的發展,開放和標準的網絡協議被普遍支持,所有底層計算平臺都開始支持這些標準和協議,這導致一個計算環境內部和各個計算環境之間交互的藩籬被打破。數據和功能的表示與交互在XML、WEB服務(Web Service)技術與標準的基礎上,保證了通用性和最大的交互能力,這使得計算環境發展到一個全新的階段--基于標準、開放的互聯網技術的計算環境。在這樣的計算環境中,各個部分可以采用異構的底層技術,它們使用XML來描述和表示自己的數據和功能,采用開放的網絡協議(如HTTP)來握手,在此之上,基于Web服務來互操作和交換數據。在這里,一個很重要的新概念是"服務"(2),它是一個自包含的功能,使用者通過明確定義的接口(契約)來與一個服務交互,這個接口的描述基于WSDL(Web Service Description Language)這樣的開放標準。對象和組件重在表示一個事物本身的組成部分和相互關聯(也就是WHAT"THINGS"ARE的問題),而服務則表示一個事物做什么(也就是WHAT"THINGS"DO的問題)。Web服務是實現服務的技術手段,就如同各種編程語言中的對象是實現對象的技術手段,J2EE中的EJB是實現組件的技術手段一樣。這種基于標準、開放的互聯網技術,以服務為中心的計算環境,我們稱之為"面向服務的計算環境"。

          1.2.3 面向服務的計算環境

          在面向服務的計算環境中,系統可以是高度分布、異構的。它一般包括服務運行時環境(Service Runtime)、服務總線(Service Integration Infrastructure)、服務網關(Service Gateway)、服務注冊庫(Service Registry)和服務組裝引擎(Service Choreography Engine)等,如圖1-1所示。

          服務運行時環境提供服務(和服務組件)的部署、運行和管理能力,支持服務編程模型,保證系統的安全和性能等質量要素;服務總線提供服務中介的能力,使得服務使用者能夠以技術透明和位置透明的方式來訪問服務;服務注冊庫支持存儲和訪問服務的描述信息,是實現服務中介、管理服務的重要基礎;而服務組裝引擎,則將服務組裝為服務流程,完成一個業務過程;服務網關用于在不同服務計算環境的邊界進行服務翻譯,比如安全。

          面向服務的計算環境是開放的、標準的,由如圖1-2所示的技術標準協議棧所定義和支持。例如,Transport層的HTTP協議,Service Description層的WSDL,Business Process層的WS-CDL等,與Policy相關的WS-Policy。本書后面的章節將討論所有統稱為WS-*的標準和協議。


          圖1-1 SOA計算環境的組成要素
          圖1-1  SOA計算環境的組成要素

          圖1-2 SOA計算環境的標準協議棧
          圖1-2  SOA計算環境的標準協議棧

          面向服務的計算環境,為IBM所定義的隨需應變計算環境奠定了現實基礎。隨需應變計算環境應具備以下特點,如圖1-3所示。


          圖1-3 隨需應變的計算環境應該具備的特點
          圖1-3  隨需應變的計算環境應該具備的特點

          (1)整合:將人、過程、應用和數據全面整合起來。

          (2)虛擬化:將分布、異構的物理資源(服務器、存儲設備等)整合起來,呈現為統一的邏輯對象,以安全和可管理的方式供使用。

          (3)自主計算:如同生物體一樣,系統具備一些高級生物系統的能力,包括自我診斷和修復問題,自動配置和調整以適應環境的變化,自動優化資源的使用效率、增強工作負荷的處理的能力,自我保護數據和信息的安全。

          (4)開放標準:整個環境建立在開放的標準之上,保證系統的交互性。

          1.2.4 面向服務計算環境的現狀

          不同的服務計算環境,采用不同的技術和產品,這里主要結合IBM的產品和技術來介紹在J2EE平臺上實現的服務計算環境。

          主機通過增加對互聯網技術和標準的支持,來創建主機上的面向服務計算環境。比如IBM的CICS 3.1,提供了SOAP和Web服務的支持,可以將主機上的應用以Web服務的方式提供出來,供消費者使用。

          多年來,IT界的主要技術提供者,一直攜手努力定義和推動Web服務的相關標準,并且在主要的幾個計算平臺上實現了高度兼容,包括.NET,J2EE和開源平臺(如LAMPLinux,Apache,mySQL,PHP/Perl/Python)。

          IBM以J2EE為基礎,提供了全面的、強大的服務計算環境,如圖1-4所示。


          圖1-4 IBM提供的服務計算環境
          圖1-4  IBM提供的服務計算環境

          在這個計算環境中,它是服務的世界。其中,Access Services提供訪問已有應用或遺留系統的能力,將已有系統中的功能和信息轉化為服務,IBM提供了訪問不同系統的適配器和相應的框架來幫助轉化。Business App Services指那些通過新的計算平臺J2EE(如IBM的WebSphere Application Server)來實現的新應用,它們所實現的功能和信息也都轉化為服務提供出來。Partner Service指那些來自合作伙伴的服務,WebSphere Partner Gateway提供企業邊界處不同安全等差異的轉換。Information Service是那些跟信息(而不是活動)有關系的服務,比如將多個系統中異構的數據,聚合、轉換為業務需要的統一整齊的業務數據對象來訪問。Process Service是指把多個服務聚合成為一個服務流程對應業務過程的服務,這種復合服務通常是長時間運行的過程。Interaction Service是把人的活動,通過人機交互以服務的方式出現在整個業務過程中,作為Process Service中的一部分。

          在面向服務計算環境中,企業服務總線處于非常重要的位置,它提供服務的中介,解耦服務請求者和服務提供者,是服務計算環境中的核心。 ESB是過去消息中間件的發展,采用了"總線"這樣一種模式來管理和簡化應用之間的集成拓撲結構,以廣為接受的開放標準為基礎來支持應用之間在消息、事件和服務級別上的動態互聯互通。

          ESB的基本特征和能力包括:描述服務的元數據和服務注冊管理;在服務請求者和提供者之間傳遞數據及對這些數據進行轉換的能力,并支持由實踐中總結出來的一些模式如同步模式,異步模式等;發現、路由、匹配和選擇的能力,以支持服務之間的動態交互,解耦服務請求者和服務提供者。高級一些的能力,包括對安全的支持、服務質量保證、可管理性和負載平衡等。

          ESB所提供的基于標準的連接服務,將應用中實現的功能或者數據資源,轉化為服務請求者能以標準的方式來訪問的服務;當請求者來請求一個服務時,ESB中這種中介轉化過程可能簡單到什么也沒有,也可能要很復雜的中介服務支持,包括動態地查找、選擇一個服務,消息的傳遞、路由和轉換、協議的轉換。這種中介過程,是ESB借助于服務注冊管理及問題域相關的知識(如業務方面的一些規則等)自動進行的,不需要服務請求者和提供者介入,從而實現了解耦服務請求者和提供者的技術基礎。這使得服務請求者不需要關心服務提供者的位置和具體實現技術,雙方在保持接口不變的情況下,各自可以獨立地演變。

          所以,ESB采用總線結構模式簡化了應用之間的集成拓撲,通過源自實踐的模式,提供了基于標準的通用連接服務,使得服務請求者和服務提供者之間可以以松散耦合、動態的方式交互,從而在不同層次上使得SOA解決方案是一個松散耦合、靈活的架構。

          需要注意的是,ESB是一種架構模式,不能簡單地等同于特定的技術或產品,但實現ESB確實需要各種產品在運行時和工具方面的支持。IBM有很好的產品支持,運行時支持包括WebSphere ESB和WebSphere Message Broker;工具支持有WebSphere Integration Developer,支持用戶以圖形界面的方式來完成相關的開發任務,如發布服務、使用各種模式、轉換消息和定義路由等。

          1.2.5 面向服務的編程模型:服務組件架構(SCA)和服務數據對象(SDO)

          為了促進面向服務應用的開發,IT公司聯合起來,在2005年11月發布了服務組件架構(Service Component Architecture)和服務數據對象(Service Data Object)規范,這些公司包括IBM,BEA,Oracle,SAP等。

          SCA的目標是大大地簡化服務開發,直接采用Web服務和XML開發服務,使得程序員工作在底層技術上,需要應付各種異構環境下的具體實現細節。其中,SCA定義和規范了技術中立和實現透明的服務組件、服務及服務調用和組裝;而SDO定義和規范了服務世界里的數據,這些數據對象擁有清晰定義的信息模型,獨立于數據源和具體數據訪問技術,使得服務訪問數據和在服務之間交換數據更方便、有效。

          很多公司已經在J2EE平臺上支持了SCA/SDO,還提供了C++的版本。IBM WebSphere Process Server 6實現了SCA/SDO規范,提供了最新的SOA編程模型的支持,已經在很多實踐中被廣泛使用。





          回頁首


          1.3 軟件體系結構的演變和面向服務的設計原則

          軟件開發一直是一件很難的事情,因為我們要處理的問題越來越復雜,人們處理這種復雜性最主要的手段就是抽象。回顧歷史,我們的抽象層次越來越高,反映在各個方面,從編程語言、平臺、開發過程、工具到模式。尤其是模式,大量出現在那些結構上設計得很好的軟件系統中,無論是微觀層次上(對象、組件)穩定出現的結構范式,還是在宏觀層面上出現的架構模式。使用哪些抽象手段來為問題域建模?如何定義組成部分之間的協作和結構關系?如何定義從外界所看到的系統結構和行為?是什么設計原則在指導我們的架構決策?有什么最佳實踐和模式可供借鑒?所有這些,形成了不同設計風格和體系結構范式(Architecture Paradigm)。

          通常,一種體系結構范式,包括設計原則,來自實踐的結構式樣、組成要素和關系,以及在整個開發生命周期中它們是如何被識別、描述和控制的。體系結構從過去單個應用包羅一切的客戶/服務器的模式,逐漸演變到三層和多層結構的各種分布式計算模式。今天,人們開始談論和實踐面向服務、更加分布化的架構范式。

          從抽象手段而言,SOA在原有方法的基礎上,增加了服務、流程等元素。這些抽象手段之間的關系如圖1-5所示。

          如何利用這些抽象手段,將一個業務需求轉化為流程、服務,進一步建模為服務組件,然后結合具體實現環境,在重用已有系統的功能和數據資源的基礎上來實現?如圖1-6所示是IBM總結的SOA架構概念模式。

          SOA架構中,繼承了來自對象和組件設計的各種原則,如封裝、自我包含等。那些保證服務的靈活性、松散耦合和重用能力的設計原則,對SOA架構來說同樣是非常重要的。

          結構上,服務總線是SOA的架構模式之一。

          關于服務,一些常見和討論的設計原則如下:

          (1)無狀態。以避免服務請求者依賴于服務提供者的狀態。

          (2)單一實例。避免功能冗余。


          圖1-5 SOA中的重要抽象手段
          圖1-5  SOA中的重要抽象手段

          圖1-6 SOA的概念架構模式
          圖1-6  SOA的概念架構模式

          (3)明確定義的接口。服務的接口由WSDL定義,用于指明服務的公共接口與其內部專用實現之間的界線。WS-Policy用于描述服務規約,XML模式(Schema)用于定義所交換的消息格式(即服務的公共數據)。使用者依賴服務規約來調用服務,所以服務定義必須長時間穩定,一旦公布,不隨意更改;服務的定義應盡可能明確,減少使用者的不適當使用;不要讓使用者看到服務內部的私有數據。

          (4)自包含和模塊化。服務封裝了那些在業務上穩定、重復出現的活動和組件,實現服務的功能實體是完全獨立自主的,獨立進行部署、版本控制、自我管理和恢復。

          (5)粗粒度。服務數量不應該太大,依靠消息交互而不是遠程過程調用(RPC),通常消息量比較大,但是服務之間的交互頻度較低。

          (6)服務之間的松耦合性。服務使用者看到的是服務的接口,其位置、實現技術、當前狀態等對使用者是不可見的,服務私有數據對服務使用者是不可見的。

          (7)重用能力。服務應該是可以重用的。

          (8)互操作性、兼容和策略聲明。為了確保服務規約的全面和明確,策略成為一個越來越重要的方面。這可以是技術相關的內容,比如一個服務對安全性方面的要求;也可以是跟業務有關的語義方面的內容,比如需要滿足的費用或者服務級別方面的要求,這些策略對于服務在交互時是非常重要的。WS- Policy用于定義可配置的互操作語義,來描述特定服務的期望、控制其行為。在設計時,應該利用策略聲明確保服務期望和語義兼容性方面的完整和明確。

          1.4 軟件工程的演變和面向服務體系結構

          軟件工程方法和過程伴隨著軟件實踐不斷發展。軟件危機發生之后,從瀑布模型、原型方法等講究過程、文檔密集、控制較多的方法,逐漸發展到輕量級、敏捷和迭代的方法。這些方法更加人性化,避免因為過重的過程而扼殺人的主動性和創造性。這些方法更強調快速地交付對客戶有價值的軟件、直接的溝通、持續集成和持續質量保證。

          SOA和當前軟件工程過程的一個共同交叉點就是業務價值驅動(Business Centric),強調速度。SOA從軟件的靈活性和重用能力入手,而敏捷過程則從軟件交付效率出發。

          SOA的架構特性,使得敏捷過程非常適合SOA項目的實施。在SOA架構中,服務的獨立性,使得每個服務可以被單獨地開發、測試和集成。一個企業中的IT系統,如果是基于SOA的計算環境,那么這個環境就是一個服務的生態系統,每開發一個服務,馬上就可以獨立部署,成為這個生態系統中的一部分。這樣既很好地支持了持續集成、持續質量保證,又很好地使得這個服務馬上產生業務價值,而不是苦等其他服務的到位。服務的特性,使得敏捷過程和SOA架構可以有一個很好的結合,讓二者相得益彰。以我們與不同客戶合作的實踐,我們已經充分體會到這二者在實現過程中的風險控制、業務需求改變的適應能力方面相互配合的好處。比如我們在中遠集運,從瀑布過程轉向了迭代的開發過程,采用了敏捷方法的原則。

          在韓國的項目里,我們的團隊來自IBM中國,IBM韓國及韓國客戶自己的工程師,分處漢城和北京兩個地方,這些工程師怎樣協作才能很快地交付高質量的系統而不相互牽扯?對于北京的工程師,北京的團隊無法復制客戶在漢城的已有系統,如何測試自己開發的服務?通過服務建模,系統被分解為若干相互獨立的服務,我們將那些要重用已有系統來實現的服務交給漢城的隊員,其他的交給北京的隊員,并且要求每個服務開發人員提供一個簡單的"偽"實現(Mock Service)。一開始,這些簡單實現被部署在北京和漢城的測試環境中,然后各個服務開發小組開始各自獨立地開發自己所負責的服務,而流程開發人員也在同一時間開始開發他的流程,不過所基于的服務是在那些簡單實現之上,但是這些簡單實現足以支持有意義的單元和集成測試。隨后,一旦某個服務被實現,它就被部署到實際的環境中,通過調整ESB的服務中介配置,對此服務的請求被路由到真實實現。一旦真實實現有問題,還可以換回簡單實現,以避免影響其他服務、流程的單元和集成測試。這種靈活性帶來的隨時開發、隨時部署、隨時集成和測試對于采用敏捷過程是非常有利的。





          回頁首


          1.5 SOA技術概覽

          本節將討論目前SOA體系架構中用到的主要技術和標準。

          1.5.1 SOA的主要組件

          在前面關于計算環境的討論里,我們已經提到SOA計算環境的主要組件包括:服務運行時環境、服務總線、服務注冊庫、服務網關和流程引擎。通常,還會包括服務管理、業務活動監控(Business Activity Monitoring)和業務績效管理(Business Performance Management,BPM)。另外,在服務建模、開發和編排服務等方面,我們需要相應的工具來支持。在分析、設計方面,我們需要基于服務的分析、設計方法,就是我們通常說的服務建模,包括服務的識別、定義和實現策略,其輸出是一個服務模型(Service Model)。

          1.5.2 SOA主要技術和標準

          Web服務作為實現SOA中服務的最主要手段。我們首先來了解跟Web Service相關的標準,它們大多以"WS-"作為名字的前綴,所以統稱WS-*。 Web服務最基本的協議包括UDDI,WSDL和SOAP,通過它們,我們可以提供直接而又簡單的Web Service支持,如圖1-7所示。

          但是基本協議無法保證企業計算需要的安全性和可靠性,所以我們需要增加這方面的協議,比如WS-Security,WS-Reliability和WS-ReliableMessaging;對于復雜的業務場景,我們需要WS-BPEL和WS-CDL這樣的語言來將多個服務編排成為業務流程;管理服務的協議如WS-Manageability,WSDM等。跟Web服務相關的標準,還在快速發展當中。目前在SOA產品和實踐中,除了基本協議外,比較重要的還包括BPEL,WS-Security,WS-Policy和SCA/SDO。如表1-1所示給出了一個基本的總結,后面的章節會介紹重要的技術和標準。


          圖1-7 基本Web服務協議
          圖1-7  基本Web服務協議

          表1-1 當前Web服務協議棧
          表1-1  當前Web服務協議棧

          1.5.3 SOA技術在工業界的支持現狀

          目前,Web的標準和技術在演變當中,不同的技術環境的支持力度也不同,但是前面提到的基本核心協議,都有很好的支持。關于Web服務協議的接受和支持程度,如圖1-8所示。


          圖1-8 當前Web服務的接受情況
          圖1-8  當前Web服務的接受情況 
          posted on 2007-11-05 12:05 白切面片 閱讀(368) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 安吉县| 福海县| 普陀区| 沽源县| 星座| 岳池县| 湄潭县| 林芝县| 衡南县| 江津市| 合山市| 乐平市| 石景山区| 临城县| 伊宁市| 陆良县| 新蔡县| 邢台市| 吴川市| 三门县| 大化| 类乌齐县| 宁阳县| 长武县| 星子县| 茶陵县| 保亭| 黑龙江省| 措美县| 汾阳市| 沈阳市| 池州市| 山东省| 砀山县| 临高县| 霞浦县| 高邮市| 四子王旗| 伊春市| 天祝| 易门县|