蘋果屋

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            2 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
          SOA是英文Service-Oriented Architecture,即面向服務(wù)架構(gòu)的縮寫。這個詞匯最近一兩年頻頻出現(xiàn)在各種技術(shù)期刊上。但是一直以來對于 SOA到底是什么沒有明確的回答;SOA有什么特點?適合用于解決哪些問題?與其他的技術(shù)有什么區(qū)別與聯(lián)系?Web Service和SOA又是什么關(guān)系 ?SOA的出現(xiàn)對于軟件架構(gòu)設(shè)計有什么影響?本文將就上面提到的這些問題,嘗試根據(jù)作者自己的理解給出SOA的定義;總結(jié)出SOA特有的三個基 本特征;然后以HTTP協(xié)議為例對這些特征進(jìn)行解釋;最后簡要的說明SOA對今后軟件架構(gòu)設(shè)計可能帶來的影響。

          SOA定義

          下面是作者給SOA下的一個定義:SOA是指為了解決在Internet環(huán)境下業(yè)務(wù)集成的需要,通過連接能完成特定任務(wù)的獨立功能實體實現(xiàn)的一種 軟件系統(tǒng)架構(gòu)。從這個定義中我希望表達(dá)的前提有下面兩點:

          1) 軟件系統(tǒng)架構(gòu):SOA不是一種語言,也不是一種具體的技術(shù)而是一種軟件系統(tǒng)架構(gòu),它嘗試給出在特定環(huán)境下推薦采用的一種架構(gòu),從這 個角度上來說,它更像一種模式(Pattern)。因此它與很多已有的軟件技術(shù)比如面向?qū)ο蠹夹g(shù),是互補的而非互斥的。它們分別面向不同的應(yīng)用 場景,用來滿足不同的特定需求。

          2) SOA的使用范圍:需求決定同時也限制功能。SOA并不是包治百病的萬靈丹,它最主要的應(yīng)用場合在于解決在Internet環(huán)境下的不同商業(yè) 應(yīng)用之間的業(yè)務(wù)集成問題。在下面我們會詳細(xì)討論Internet的各種特點如何決定SOA的特點,這里我們只需要先簡單回顧一下Internet環(huán)境區(qū)別 于Intranet環(huán)境的幾個特點:

          a) 大量異構(gòu)系統(tǒng)并存,計算機(jī)硬件工作方式不同,操作系統(tǒng)不同、編程語言也不同;

          b) 大量、頻繁的數(shù)據(jù)傳輸仍然速度緩慢并且不穩(wěn)定;

          c) 版本升級無法完成,我們根本就無法知道互聯(lián)網(wǎng)上有哪些機(jī)器直接或者間接的使用某個服務(wù)。

          基于上面的前提,下面就讓我們一起看一下SOA的基本特征。

          SOA三大基本特征

          1 獨立的功能實體

          在Internet這樣松散的使用環(huán)境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進(jìn)行控制的結(jié)構(gòu)都會面臨嚴(yán)重的穩(wěn)定性問題。 SOA非常強調(diào)架構(gòu)中提供服務(wù)的功能實體的完全獨立自主的能力。傳統(tǒng)的組件技術(shù),如.NET Remoting,EJB,COM或者CORBA,都需要有一個宿主 (Host或者Server)來存放和管理這些功能實體;當(dāng)這些宿主運行結(jié)束時這些組件的壽命也隨之結(jié)束。這樣當(dāng)宿主本身或者其它功能部分出現(xiàn)問 題的時候,在該宿主上運行的其它應(yīng)用服務(wù)就會受到影響。

          SOA架構(gòu)中非常強調(diào)實體自我管理和恢復(fù)能力。常見的用來進(jìn)行自我恢復(fù)的技術(shù),比如事務(wù)處理(Transaction),消息隊列(Message Queue) ,冗余部署(Redundant Deployment)和集群系統(tǒng)(Cluster)在SOA中都起到至關(guān)重要的作用。

          2 大數(shù)據(jù)量低頻率訪問

          對于.NET Remoting,EJB或者XML-RPC這些傳統(tǒng)的分布式計算模型而言,他們的服務(wù)提供都是通過函數(shù)調(diào)用的方式進(jìn)行的,一個功能的完成 往往需要通過客戶端和服務(wù)器來回很多次函數(shù)調(diào)用才能完成。在Intranet的環(huán)境下,這些調(diào)用給系統(tǒng)的響應(yīng)速度和穩(wěn)定性帶來的影響都可以忽 略不計,但是在Internet環(huán)境下這些因素往往是決定整個系統(tǒng)是否能正常工作的一個關(guān)鍵決定因素。因此SOA系統(tǒng)推薦采用大數(shù)據(jù)量的方式一次 性進(jìn)行信息交換。

          3 基于文本的消息傳遞

          由于Internet中大量異構(gòu)系統(tǒng)的存在決定了SOA系統(tǒng)必須采用基于文本而非二進(jìn)制的消息傳遞方式。在COM、CORBA這些傳統(tǒng)的組件模型中, 從服務(wù)器端傳往客戶端的是一個二進(jìn)制編碼的對象,在客戶端通過調(diào)用這個對象的方法來完成某些功能;但是在Internet環(huán)境下,不同語言, 不同平臺對數(shù)據(jù)、甚至是一些基本數(shù)據(jù)類型定義不同,給不同的服務(wù)之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處 理邏輯和數(shù)據(jù)類型的,因此服務(wù)間只傳遞文本,對數(shù)據(jù)的處理依賴于接收端的方式可以幫忙繞過兼容性這個的大泥坑。

          此外,對于一個服務(wù)來說,Internet與局域網(wǎng)最大的一個區(qū)別就是在Internet上的版本管理極其困難,傳統(tǒng)軟件采用的升級方式在這種松散 的分布式環(huán)境中幾乎無法進(jìn)行。采用基于文本的消息傳遞方式,數(shù)據(jù)處理端可以只選擇性的處理自己理解的那部分?jǐn)?shù)據(jù),而忽略其它的數(shù)據(jù), 從而得到的非常理想的兼容性。

          HTTP協(xié)議:一個典型的SOA實現(xiàn)

          每一項新技術(shù)都是在一些舊的技術(shù)基礎(chǔ)上發(fā)展出來的。正如XML根本思想來自于在60年代就已經(jīng)出現(xiàn)的早期標(biāo)記性語言一樣,SOA雖然這兩年 才出現(xiàn),但是它所表達(dá)的觀念應(yīng)該說在網(wǎng)絡(luò)這種分布式系統(tǒng)結(jié)構(gòu)出現(xiàn)不久就已經(jīng)廣泛應(yīng)用了。例如我們最熟悉的HTTP協(xié)議就是一個非常典型的 SOA架構(gòu)設(shè)計。HTTP協(xié)議的工作過程簡單敘述如下:

          1) 客戶端,通常是通過瀏覽器,向服務(wù)器端以文本的方式發(fā)送一個請求,索取一個Web頁面;
          posted on 2007-03-07 21:12 錢磊 閱讀(328) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 成安县| 永州市| 平远县| 乾安县| 禄劝| 宁远县| 屏东市| 安庆市| 南丹县| 江达县| 太原市| 喀喇沁旗| 亳州市| 长泰县| 宜阳县| 广州市| 南昌市| 榆社县| 萍乡市| 顺义区| 曲麻莱县| 华亭县| 桓台县| 娱乐| 普宁市| 长子县| 萨迦县| 扎鲁特旗| 南木林县| 阿瓦提县| 尤溪县| 连山| 宁武县| 海阳市| 林芝县| 塘沽区| 额济纳旗| 连云港市| 驻马店市| 洪江市| 建始县|