enetor

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            2 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
          SOA

          Service-Oriented Architecture
          面向服務(wù)的架構(gòu)

          軟件業(yè)從最初的面向過程、面向?qū)ο?,到后來的面向組件、面向集成,直到現(xiàn)在的面向服務(wù),走過了一條螺旋上升的曲線。
          其實(shí),自從上世紀(jì)70年代提出“軟件危機(jī)”,誕生軟件工程學(xué)科以來,為了徹底擺脫軟件系統(tǒng)開發(fā)泥潭,我們一直也沒有放棄努力。
          SOA的定義
          SOA,面向服務(wù)的架構(gòu)是一個組件模型,它將應(yīng)用程序的不同功能單元----服務(wù)(service),通過服務(wù)間定義良好的接口和契約(contract)聯(lián)系起來。接口采用中立的方式定義,獨(dú)立于具體實(shí)現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言,使得構(gòu)建在這樣的系統(tǒng)中的服務(wù)可以使用統(tǒng)一和標(biāo)準(zhǔn)的方式進(jìn)行通信。
          這種具有中立的接口定義(沒有強(qiáng)制綁定到特定的實(shí)現(xiàn)上)的特征稱為服務(wù)之間的松耦合
          軟件系統(tǒng)架構(gòu)
          SOA不是一種語言,也不是一種具體的技術(shù),更不是一種產(chǎn)品,而是一種軟件系統(tǒng)架構(gòu),它嘗試給出在特定環(huán)境下推薦采用的一種架構(gòu)。
          從這個角度上來說,它其實(shí)更像一種架構(gòu)模式(Pattern),是一種理念架構(gòu),是人們面向應(yīng)用服務(wù)的解決方案框架。


           ?????? 服務(wù)是一個自包含的、無狀態(tài)的實(shí)體,可以由多個組件組成。它通過事先定義的界面響應(yīng)服務(wù)請求。它也可以執(zhí)行諸如編輯和處理事務(wù)等離散性任務(wù)。服務(wù)本身并不依賴于其他函數(shù)和過程的狀態(tài)。用什么技術(shù)實(shí)現(xiàn)服務(wù),并不在其定義中加以限制。


          ?????????? 服務(wù)提供者提供符合契約的服務(wù),并將它們發(fā)布到服務(wù)代理。


          ??????????? 服務(wù)請求者也叫服務(wù)使用者,它發(fā)現(xiàn)并調(diào)用其他的軟件服務(wù)來提供商業(yè)解決方案。從概念上來說,SOA 本質(zhì)上是將網(wǎng)絡(luò)、傳輸協(xié)議和安全細(xì)節(jié)留給特定的實(shí)現(xiàn)來處理。服務(wù)請求者通常稱為客戶端,但是,也可以是終端用戶應(yīng)用程序或別的服務(wù)。

          服務(wù)是整個SOA實(shí)現(xiàn)的核心
          SOA架構(gòu)的基本元素是服務(wù),SOA 指定一組實(shí)體(服務(wù)提供者、服務(wù)消費(fèi)者、服務(wù)注冊表、服務(wù)條款、服務(wù)代理和服務(wù)契約),這些實(shí)體詳細(xì)說明了如何提供和消費(fèi)服務(wù)。
          遵循 SOA 觀點(diǎn)的系統(tǒng)必須要有服務(wù),這些服務(wù)是可互操作的、獨(dú)立的、模塊化的、位置明確的、松耦合的并且可以通過網(wǎng)絡(luò)查找其地址。


          ?????????? 服務(wù)代理者作為儲存庫、電話黃頁或票據(jù)交換所,產(chǎn)生由服務(wù)提供者發(fā)布的軟件接口。


          ????????? 這三種 SOA 參與者:服務(wù)提供者、服務(wù)代理者以及服務(wù)請求者通過 3 個基本操作:發(fā)布、查找、綁定相互作用。服務(wù)提供者向服務(wù)代理者發(fā)布服務(wù)。服務(wù)請求者通過服務(wù)代理者查找所需的服務(wù),并綁定到這些服務(wù)上。服務(wù)提供者和服務(wù)請求者之間可以交互。


          ??????????? 所謂服務(wù)的無狀態(tài),是指服務(wù)不依賴于任何事先設(shè)定的條件,是狀態(tài)無關(guān)的(state-free)。在SOA架構(gòu)中,一個服務(wù)不會依賴于其他服務(wù)的狀態(tài)。 它們從客戶端接受服務(wù)請求。因?yàn)榉?wù)是無狀態(tài)的,它們可以被編排(orchestrated)和序列化(sequenced)成多個序列 (有時還采用流水線機(jī)制) ,以執(zhí)行商業(yè)邏輯。編排指的是序列化服務(wù)并提供數(shù)據(jù)處理邏輯。但不包括數(shù)據(jù)的展現(xiàn)功能。
          SOA的一些重要特征
          ?????????? 服務(wù)的封裝(encapsulation)。將服務(wù)封裝成用于業(yè)務(wù)流程的可重用組件的應(yīng)用程序函數(shù)。它提供信息或簡化業(yè)務(wù)數(shù)據(jù)從一個有效的、一致的狀態(tài)向另一個狀態(tài)的轉(zhuǎn)變。封裝隱藏了復(fù)雜性。服務(wù)的API保持不變,使得用戶遠(yuǎn)離具體實(shí)施上的變更。

          SOA的一些重要特征
          ?????????? 服務(wù)的重用(reuse)。服務(wù)的可重用性設(shè)計(jì)顯著地降低了成本。為了實(shí)現(xiàn)可重用性,服務(wù)只工作在特定處理過程的上下文(context)中,獨(dú)立于底層實(shí)現(xiàn)和客戶需求的變更。

          SOA的一些重要特征
          ??????????? 服務(wù)的互操作?;ゲ僮鞑⒉皇且粋€新概念。在CORBA、DCOM、Web Service中就已經(jīng)采用互操作技術(shù)了。在SOA中,通過服務(wù)之間既定的通信協(xié)議進(jìn)行互操作。主要有同步和異步兩種通信機(jī)制。SOA提供服務(wù)的互操作特性更利于其在多個場合被重用。

          SOA的一些重要特征
          ?????????? 服務(wù)是自治的(Autonomous)功能實(shí)體。服務(wù)是由組件組成的組合模塊,是自包含和模塊化的。

          SOA的一些重要特征
          ?????????? SOA非常強(qiáng)調(diào)架構(gòu)中提供服務(wù)的功能實(shí)體的完全獨(dú)立自主的能力。傳統(tǒng)的組件技術(shù),都需要有一個宿主(Host或者Server)來存放和管理這些功能實(shí)體;當(dāng)這些宿主運(yùn)行結(jié)束時這些組件的壽命也隨之結(jié)束。這樣當(dāng)宿主本身或者其它功能部分出現(xiàn)問題的時候,在該宿主上運(yùn)行的其它應(yīng)用服務(wù)就會受到影響。
          SOA的一些重要特征
          ?????????? SOA架構(gòu)中非常強(qiáng)調(diào)實(shí)體自我管理和恢復(fù)能力。常見的用來進(jìn)行自我恢復(fù)的技術(shù),比如事務(wù)處理,消息隊(duì)列等在SOA中都起到至關(guān)重要的作用。
          SOA的一些重要特征
          ?????????? 服務(wù)之間的松耦合度。服務(wù)請求者到服務(wù)提供者的綁定與服務(wù)之間應(yīng)該是松耦合的。這就意味著,服務(wù)請求者不知道提供者實(shí)現(xiàn)的技術(shù)細(xì)節(jié),比如程序設(shè)計(jì)語言、部署平臺,等等。服務(wù)請求者往往通過消息調(diào)用操作,請求消息和響應(yīng),而不是通過使用 API 和文件格式。
          SOA的一些重要特征
          ?????????? 松耦合使會話一端的軟件可以在不影響另一端的情況下發(fā)生改變,前提是消息模式保持不變。在一個極端的情況下,服務(wù)提供者可以將以前基于遺留代碼的實(shí)現(xiàn)完全用基于 Java 語言的新代碼取代,同時又不對服務(wù)請求者造成任何影響。這種情況是真實(shí)的,只要新代碼支持相同的通信協(xié)議。
          SOA的一些重要特征
          ???????? 服務(wù)是位置透明的。服務(wù)是針對業(yè)務(wù)需求設(shè)計(jì)的,需要反應(yīng)需求的變化,即所謂敏捷設(shè)計(jì)。要想真正實(shí)現(xiàn)業(yè)務(wù)與服務(wù)的分離。就必須使得服務(wù)的設(shè)計(jì)和部署對用戶來說是完全透明的。也就是說,用戶完全不必知道響應(yīng)自己需求的服務(wù)的位置,甚至不必知道具體是哪個服務(wù)參與了響應(yīng)。
          抽象級別1:操作
          ?????????? 代表單個邏輯工作單元的事務(wù)。執(zhí)行操作通常會導(dǎo)致讀、寫或修改一個或多個持久性數(shù)據(jù)。SOA 操作可以直接與面向?qū)ο蟮姆椒ㄏ啾?。它們都有特定的結(jié)構(gòu)化接口,并且返回結(jié)構(gòu)化的響應(yīng)。完全同方法一樣,特定操作的執(zhí)行可能涉及調(diào)用附加的操作。
          抽象級別2:服務(wù)
          ?????????? 代表操作的邏輯分組。服務(wù)可以分層,以降低耦合度和復(fù)雜性。一個服務(wù)的粒度大小也與系統(tǒng)的性能息息相關(guān)。粒度太小,會增加服務(wù)間互操作通訊的開銷;粒度太大,又會影響服務(wù)面對需求變化的敏捷性。
          抽象級別3:業(yè)務(wù)流程
          ?????????? 為實(shí)現(xiàn)特定業(yè)務(wù)目標(biāo)而執(zhí)行的一組長期運(yùn)行的動作或活動。業(yè)務(wù)流程通常包括多個業(yè)務(wù)調(diào)用。
          業(yè)務(wù)流程
          ?????????? 在SOA中,業(yè)務(wù)流程包括依據(jù)一組業(yè)務(wù)規(guī)則按照有序序列執(zhí)行的一系列操作。操作的排序、選擇和執(zhí)行稱為服務(wù)或流程編排。典型的情況是調(diào)用已編排服務(wù)來響應(yīng)業(yè)務(wù)事件。從建模的觀點(diǎn)來看,描述設(shè)計(jì)良好的操作、服務(wù)和流程抽象的特征以及系統(tǒng)地構(gòu)造它們是重要的。

          posted on 2006-05-22 17:31 鄧璠 閱讀(462) 評論(1)  編輯  收藏

          Feedback

          # re: SOA 2006-06-01 14:09 韋伯
          ppt轉(zhuǎn)過來的,痕跡清晰,呵呵  回復(fù)  更多評論
            


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 霍邱县| 德格县| 左云县| 威海市| 海兴县| 洪江市| 锡林浩特市| 道真| 长宁区| 萍乡市| 新邵县| 宜阳县| 澄城县| 白河县| 高陵县| 通海县| 武城县| 竹溪县| 富阳市| 且末县| 白玉县| 南平市| 博客| 秭归县| 舒兰市| 冕宁县| 灌南县| 江津市| 巨鹿县| 齐河县| 察雅县| 盖州市| 张家界市| 漾濞| 高碑店市| 中阳县| 新巴尔虎左旗| 东莞市| 眉山市| 左贡县| 象州县|