導航:首頁 > 綜合知識 > soa是什麼

soa是什麼

發布時間:2022-08-10 13:57:21

『壹』 什麼是SOA

面向服務的體系結構(service-oriented architecture,SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的介面和契約聯系起來。介面是採用中立的方式進行定義的,它應該獨立於實現服務的硬體平台、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。

這種具有中立的介面定義(沒有強制綁定到特定的實現上)的特徵稱為服務之間的松耦合。松耦合系統的好處有兩點,一點是它的靈活性,另一點是,當組成整個應用程序的每個服務的內部結構和實現逐漸地發生改變時,它能夠繼續存在。而另一方面,緊耦合意味著應用程序的不同組件之間的介面與其功能和結構是緊密相連的,因而當需要對部分或整個應用程序進行某種形式的更改時,它們就顯得非常脆弱。

對松耦合的系統的需要來源於業務應用程序需要根據業務的需要變得更加靈活,以適應不斷變化的環境,比如經常改變的政策、業務級別、業務重點、合作夥伴關系、行業地位以及其他與業務有關的因素,這些因素甚至會影響業務的性質。我們稱能夠靈活地適應環境變化的業務為按需(On demand)業務,在按需業務中,一旦需要,就可以對完成或執行任務的方式進行必要的更改。

雖然面向服務的體系結構不是一個新鮮事物,但它卻是更傳統的面向對象的模型的替代模型,面向對象的模型是緊耦合的,已經存在二十多年了。雖然基於 SOA 的系統並不排除使用面向對象的設計來構建單個服務,但是其整體設計卻是面向服務的。由於它考慮到了系統內的對象,所以雖然 SOA 是基於對象的,但是作為一個整體,它卻不是面向對象的。不同之處在於介面本身。SOA 系統原型的一個典型例子是通用對象請求代理體系結構(Common Object Request Broker Architecture,CORBA),它已經出現很長時間了,其定義的概念與 SOA 相似。

然而,現在的 SOA 已經有所不同了,因為它依賴於一些更新的進展,這些進展是以可擴展標記語言(eXtensible Markup Language,XML)為基礎的。通過使用基於 XML 的語言(稱為 Web 服務描述語言(Web Services Definition Language,WSDL))來描述介面,服務已經轉到更動態且更靈活的介面系統中,非以前 CORBA 中的介面描述語言(Interface Definition Language,IDL)可比了。

Web 服務並不是實現 SOA 的惟一方式。前面剛講的 CORBA 是另一種方式,這樣就有了面向消息的中間件(Message-Oriented Middleware)系統,比如 IBM 的 MQseries。但是為了建立體系結構模型,您所需要的並不只是服務描述。您需要定義整個應用程序如何在服務之間執行其工作流。您尤其需要找到業務的操作和業務中所使用的軟體的操作之間的轉換點。因此,SOA 應該能夠將業務的商業流程與它們的技術流程聯系起來,並且映射這兩者之間的關系。例如,給供應商付款的操作是商業流程,而更新您的零件資料庫,以包括進新供應的貨物卻是技術流程。因而,工作流還可以在 SOA 的設計中扮演重要的角色。

此外,動態業務的工作流不僅可以包括部門之間的操作,甚至還可以包括與不為您控制的外部合作夥伴進行的操作。因此,為了提高效率,您需要定義應該如何得知服務之間的關系的策略,這種策略常常採用服務級協定和操作策略的形式。

最後,所有這些都必須處於一個信任和可靠的環境之中,以同預期的一樣根據約定的條款來執行流程。因此,安全、信任和可靠的消息傳遞應該在任何 SOA 中都起著重要的作用。

我可以用面向服務的體系結構做什麼?
對 SOA 的需要來源於需要使業務 IT 系統變得更加靈活,以適應業務中的改變。通過允許強定義的關系和依然靈活的特定實現,IT 系統既可以利用現有系統的功能,又可以准備在以後做一些改變來滿足它們之間交互的需要。

下面舉一個具體的例子。一個服裝零售組織擁有 500 家國際連鎖店,它們常常需要更改設計來趕上時尚的潮流。這可能意味著不僅需要更改樣式和顏色,甚至還可能需要更換布料、製造商和可交付的產品。如果零售商和製造商之間的系統不兼容,那麼從一個供應商到另一個供應商的更換可能就是一個非常復雜的軟體流程。通過利用 WSDL 介面在操作方面的靈活性,每個公司都可以將它們的現有系統保持現狀,而僅僅匹配 WSDL 介面並制訂新的服務級協定,這樣就不必完全重構它們的軟體系統了。這是業務的水平改變,也就是說,它們改變的是合作夥伴,而所有的業務操作基本上都保持不變。這里,業務介面可以作少許改變,而內部操作卻不需要改變,之所以這樣做,僅僅是為了能夠與外部合作夥伴一起工作。

另一種形式是內部改變,在這種改變中,零售組織現在決定它還將把連鎖零售商店內的一些地方出租給專賣流行衣服的小商店,這可以看作是採用店中店(store-in-store)的業務模型。這里,雖然公司的大多數業務操作都保持不變,但是它們現在需要新的內部軟體來處理這樣的出租安排。盡管在內部軟體系統可以承受全面的檢修,但是它們需要在這樣做的同時不會對與現有的供應商系統的交互產生大的影響。在這種情況下,SOA 模型保持原封不動,而內部實現卻發生了變化。雖然可以將新的方面添加到 SOA 模型中來加入新的出租安排的職責,但是正常的零售管理系統繼續如往常一樣。

為了延續內部改變的觀念,IT 經理可能會發現,軟體的新配置還可以以另外的一種方式加以使用,比如出租粘貼海報的地方以供廣告之用。這里,新的業務提議是通過在新的設計中重用靈活的 SOA 模型得出的。這是來自 SOA 模型的新成果,並且還是一個新的機會,而這樣的新機會在以前可能是不會有的。

垂直改變也是可能的,在這種改變中,零售商從銷售他們自己的服裝完全轉變到專門通過店中店模型出租地方。如果垂直改變完全從最底層開始的話,就會帶來 SOA 模型結構的顯著改變,與之一起改變的還可能有新的系統、軟體、流程以及關系。在這種情況下,SOA 模型的好處是它從業務操作和流程的角度考慮問題而不是從應用程序和程序的角度考慮問題,這使得業務管理可以根據業務的操作清楚地確定什麼需要添加、修改或刪除。然後可以將軟體系統構造為適合業務處理的方式,而不是在許多現有的軟體平台上常常看到的其他方式。

正如您可以看到的,在這里,改變和 SOA 系統適應改變的能力是最重要的部分。對於開發人員來說,這樣的改變無論是在他們工作的范圍之內還是在他們工作的范圍之外都有可能發生,這取決於是否有改變需要知道介面是如何定義的以及它們相互之間如何進行交互。與開發人員不同的是,架構師的作用就是引起對 SOA 模型大的改變。這種分工,就是讓開發人員集中精力於創建作為服務定義的功能單元,而讓架構師和建模人員集中精力於如何將這些單元適當地組織在一起,它已經有十多年的歷史了,通常用統一建模語言(Universal Modeling Language,UML),並且描述成模型驅動的體系結構(Model-Driven Architecture,MDA)。

『貳』 soa是什麼,先評一下我的理解

撥開SOA的面紗
--------------------------
發布時間:2006-03-20 08:03:09 作者:ever2004 出處:softhouse 語言:中文 閱讀次數:8984次
內容簡介

SOA是英文Service-Oriented Architecture,即面向服務架構的縮寫。這個詞彙最近一兩年頻頻出現在各種技術期刊上。但是一直以來對於 SOA到底是什麼沒有明確的回答;SOA有什麼特點?適合用於解決哪些問題?與其他的技術有什麼區別與聯系?Web Service和SOA又是什麼關系 ?SOA的出現對於軟體架構設計有什麼影響?本文將就上面提到的這些問題,嘗試根據作者自己的理解給出SOA的定義;總結出SOA特有的三個基 本特徵;然後以HTTP協議為例對這些特徵進行解釋;最後簡要的說明SOA對今後軟體架構設計可能帶來的影響。

SOA定義

下面是作者給SOA下的一個定義:SOA是指為了解決在Internet環境下業務集成的需要,通過連接能完成特定任務的獨立功能實體實現的一種 軟體系統架構。從這個定義中我希望表達的前提有下面兩點:

1) 軟體系統架構:SOA不是一種語言,也不是一種具體的技術而是一種軟體系統架構,它嘗試給出在特定環境下推薦採用的一種架構,從這 個角度上來說,它更像一種模式(Pattern)。因此它與很多已有的軟體技術比如面向對象技術,是互補的而非互斥的。它們分別面向不同的應用 場景,用來滿足不同的特定需求。

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

a) 大量異構系統並存,計算機硬體工作方式不同,操作系統不同、編程語言也不同;

b) 大量、頻繁的數據傳輸仍然速度緩慢並且不穩定;

c) 版本升級無法完成,我們根本就無法知道互聯網上有哪些機器直接或者間接的使用某個服務。

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

SOA三大基本特徵

1 獨立的功能實體

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

SOA架構中非常強調實體自我管理和恢復能力。常見的用來進行自我恢復的技術,比如事務處理(Transaction),消息隊列(Message Queue) ,冗餘部署(Rendant Deployment)和集群系統(Cluster)在SOA中都起到至關重要的作用。

2 大數據量低頻率訪問

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

3 基於文本的消息傳遞

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

此外,對於一個服務來說,Internet與區域網最大的一個區別就是在Internet上的版本管理極其困難,傳統軟體採用的升級方式在這種鬆散 的分布式環境中幾乎無法進行。採用基於文本的消息傳遞方式,數據處理端可以只選擇性的處理自己理解的那部分數據,而忽略其它的數據, 從而得到的非常理想的兼容性。

HTTP協議:一個典型的SOA實現

每一項新技術都是在一些舊的技術基礎上發展出來的。正如XML根本思想來自於在60年代就已經出現的早期標記性語言一樣,SOA雖然這兩年 才出現,但是它所表達的觀念應該說在網路這種分布式系統結構出現不久就已經廣泛應用了。例如我們最熟悉的HTTP協議就是一個非常典型的 SOA架構設計。HTTP協議的工作過程簡單敘述如下:

1) 客戶端,通常是通過瀏覽器,向伺服器端以文本的方式發送一個請求,索取一個Web頁面;

『叄』 SOA到底是什麼作用是什麼"

對於SOA,目前我聽到有兩種說法:一種講它是"顛覆性的革命架構",一種是"謹慎觀望"。但無疑,SOA最近幾年發展得非常快,各主要軟體廠商紛紛高調跟進,關於SOA的報道可以說是不絕於耳。對"SOA熱",程序員們有的興奮和期待,有的則感到困惑,最近我在金蝶中間件於廣州、上海等城市舉行的"Java俱樂部"上和程序員們交流時,他們或是以一種朝聖者的表情說:"以前面向對象的技術過時了,SOA時代來了",或者一再懇切地追問我:"
那麼,SOA是什麼?到底能解決什麼問題、解決得怎樣?我們和客戶都准備好了嗎?我給出的答案是"Just Processing,SOA-現在進行中"。SOA到底是什麼?SOA(Service-Oriented Architecture)的定義是面向服務的架構,就是說將軟體按照功能設計成一個個服務,這些服務用標準的方式定義介面、並通過標準的協議進行調用。SOA所定義的介面和調用方式是獨立於編程語言和運行平台的,廣義上講SOA可以基於不同的底層技術實現,比如CORBA和Web Services。但CORBA由於過於復雜和臃腫已很少使用,所以目前所說的SOA絕大多數是基於Web Services技術實現。在Web Services的實現方式下,SOA服務的介面用XML進行定義。在SOA架構下,軟體開發從業務流程分析開始,使用組件化業務建模的方法識別和分析各種業務模型,將各種實踐融入其中,在這個基礎上建立用例,用例直接產生BPEL,這些BPEL則可以被融入一個服務整合框架中,其描述了各種服務的信息,從而把ESB上的各個模塊統一起來,形成一個巨大的服務倉。這樣,SOA甚至是所有軟體人員的一個夢:將中間層再進行抽離,在中間層作一個跨技術架構的元數據和業務邏輯,使之成為跨技術架構的、可長期繼承、並不斷積累的企業業務庫和最寶貴的信息資產,也就是面向服務的組件庫,而且這個服務組件庫也可以被其它企業復用,且不依賴於任何一種技術架構。誇張一點說,如果所有軟體企業都使用SOA架構,那麼世界軟體業將會發生徹底的改變。顯然,這樣一個框架不是一種產品,也不僅僅是一種技術,而是一種解決問題的方法論。SOA可能應用的兩個場景及現有問題那麼,SOA要解決的問題是什麼?我認為,從技術本質上講,SOA可能應用於兩個場景:第一種是業務互通互聯;第二種是封閉交易系統,即將元數據和業務邏輯抽離,形成可復用。舉個例子,在第一種場景中,當不同企業之間的業務需要相互調用,這時就可能採用SOA技術;在第二種場景中,在企業內部需要將系統進行遷移時,利用SOA技術定義的原有數據和業務流程,可以很快完成。無疑,SOA是一個偉大的思想,它試圖定義一個大家(各種軟體廠商)都"認"的、都"遵循"的法則,大家都使用這樣的方法來進行互聯互通,從而實現無界限的聯通,以及服務組件庫的繼承和復用,解放無效和重復勞動。打一個不那麼恰當的比喻,就像人類的語言一樣。SOA或許就像《聖經》中那個著名的"通天塔"的故事:人們用同一種語言交流產生的威力是如此之大,以至於他們在巴比倫幾乎要修成一個"通天塔",直達上帝所在的天庭。但是,在SOA應用的兩個場景中,現存的問題同樣也是明顯的:第一種場景:業務互聯互通,就是應用系統互聯。業務互聯,與其說是技術問題,不如講是業務問題,例如ERP、CRM的非同步整合,數據層面整合都不能很好將兩個系統整合,SOA僅僅是一種實現工具之一,整合效果並不會好不到那裡去。我們可以說,在沒有其他選項之前,SOA是一種最"不壞"的方式,但它並不能解決所有的問題,實際上EAI的牽涉面很廣,而我們知道,有些問題並不是單純靠技術就能解決的。第二種場景:封閉交易系統,缺點是性能慢,而且基於Web Services的交易沒有形成明確的規范。使用XML作信息交互比較慢是大家都承認的,性能問題將對SOA的發展造在一定的阻力。同時SOA規範本身沒有完善,比如Transaction規范還在不斷完善,而且Web Service多年來收效甚微。總的來說,SOA現在還處在一個發展階段,很多標准還在制定,不同廠商間還存在不兼容的現象,因此SOA還不能說已經是一個成熟的技術,還需要時間的檢驗,還在"進行中"。當然,金蝶中間件作為JCP組織成員,也會推動SOA規范在J2EE平台上的實現。中國用戶的現實選擇之惑在憧憬SOA技術可能帶來的前景之餘,我們不得不回過頭來冷靜地說:SOA和我們大家的共同客戶――中國企業還有距離。中國信息化進程與歐美不同,大量的基礎業務系統還沒建立起來,整合需求並不如想像的那麼大。從我們對客戶的了解,發現很少有客戶有SOA的需求。簡單地總結就是,互通無基礎,以新建系統為主,需求並不強烈。而歐美市場大量業務系統已建立起來需要整合,從這個角度講,SOA是適用於他們的。同時,在成功案例極少的前提下,SOA還處於培育期,新建封閉交易系統使用SOA技術還是有一定風險的。一項新技術需要市場的消化,大型企業出於保護企業投資,不會輕易地轉移到新的技術平台;而即使像J2EE這樣成熟的技術經過了這么多年的發展,也不敢說佔有統治地位的市場份額。SOA還需要整個IT界的用戶和供應商共同促進。中國信息化需要什麼樣的技術架構、能夠接受什麼樣的成本價位?這不僅僅是我們的客戶需要考慮,我們軟體廠商要比客戶考慮得更清楚、更進一步。在這個充滿變數的激烈競爭市場,只有冷靜務實才能生存、發展。

閱讀全文

與soa是什麼相關的資料

熱點內容
word中化學式的數字怎麼打出來 瀏覽:439
乙酸乙酯化學式怎麼算 瀏覽:1110
沈陽初中的數學是什麼版本的 瀏覽:1020
華為手機家人共享如何查看地理位置 瀏覽:744
一氧化碳還原氧化鋁化學方程式怎麼配平 瀏覽:585
數學c什麼意思是什麼意思是什麼 瀏覽:1075
中考初中地理如何補 瀏覽:1026
360瀏覽器歷史在哪裡下載迅雷下載 瀏覽:456
數學奧數卡怎麼辦 瀏覽:1054
如何回答地理是什麼 瀏覽:779
win7如何刪除電腦文件瀏覽歷史 瀏覽:819
大學物理實驗干什麼用的到 瀏覽:1164
二年級上冊數學框框怎麼填 瀏覽:1374
西安瑞禧生物科技有限公司怎麼樣 瀏覽:521
武大的分析化學怎麼樣 瀏覽:953
ige電化學發光偏高怎麼辦 瀏覽:1050
學而思初中英語和語文怎麼樣 瀏覽:1272
下列哪個水飛薊素化學結構 瀏覽:1112
化學理學哪些專業好 瀏覽:1198
數學中的棱的意思是什麼 瀏覽:731