.Net下的SOA的應(yīng)用
LeapSoft
SOA(Service-oriented architecture,面向服務(wù)架構(gòu))是指為了解決在Internet環(huán)境下業(yè)務(wù)集成的需要,通過(guò)連接能完成特定任務(wù)的獨(dú)立功能實(shí)體實(shí)現(xiàn)的一種 軟件系統(tǒng)架構(gòu)。它嘗試給出在特定環(huán)境下推薦采用的一種架構(gòu),從這 個(gè)角度上來(lái)說(shuō),它更像一種模式(Pattern)。因此它與很多已有的軟件技術(shù)(比如面向?qū)ο蠹夹g(shù)),是互補(bǔ)的而非互斥的。它們分別面向不同的應(yīng)用 場(chǎng)景,用來(lái)滿足不同的特定需求。
SOA的特點(diǎn)
需求決定的同時(shí)也限制功能。SOA最主要的應(yīng)用在于解決在Internet環(huán)境下的不同商業(yè)應(yīng)用之間的業(yè)務(wù)集成問(wèn)題。SOA具有三大基本特征:
1、獨(dú)立的功能實(shí)體
在Internet這樣松散的使用環(huán)境中,任何訪問(wèn)請(qǐng)求都有可能出錯(cuò),因此任何企圖通過(guò)Internet進(jìn)行控制的結(jié)構(gòu)都會(huì)面臨嚴(yán)重的穩(wěn)定性問(wèn)題。SOA非常強(qiáng)調(diào)架構(gòu)中提供服務(wù)的功能實(shí)體的完全獨(dú)立自主的能力。傳統(tǒng)的組件技術(shù),如.NET Remoting,EJB,COM或者CORBA,都需要有一個(gè)宿主(Host或者Server)來(lái)存放和管理這些功能實(shí)體;當(dāng)這些宿主運(yùn)行結(jié)束時(shí)這些組件的壽命也隨之結(jié)束。這樣當(dāng)宿主本身或者其它功能部分出現(xiàn)問(wèn)題的時(shí)候,在該宿主上運(yùn)行的其它應(yīng)用服務(wù)就會(huì)受到影響。
SOA架構(gòu)中非常強(qiáng)調(diào)實(shí)體自我管理和恢復(fù)能力。常見(jiàn)的用來(lái)進(jìn)行自我恢復(fù)的技術(shù),比如事務(wù)處理(Transaction),消息隊(duì)列(Message Queue),冗余部署(Redundant Deployment)和集群系統(tǒng)(Cluster)在SOA中都起到至關(guān)重要的作用。
2、大數(shù)據(jù)量低頻率訪問(wèn)
對(duì)于.NET Remoting,EJB或者XML-RPC這些傳統(tǒng)的分布式計(jì)算模型而言,他們的服務(wù)提供都是通過(guò)函數(shù)調(diào)用的方式進(jìn)行的,一個(gè)功能的完成往往需要通過(guò)客戶端和服務(wù)器來(lái)回很多次函數(shù)調(diào)用才能完成。在Intranet的環(huán)境下,這些調(diào)用給系統(tǒng)的響應(yīng)速度和穩(wěn)定性帶來(lái)的影響都可以忽略不計(jì),但是在Internet環(huán)境下這些因素往往是決定整個(gè)系統(tǒng)是否能正常工作的一個(gè)關(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ù)器端傳往客戶端的是一個(gè)二進(jìn)制編碼的對(duì)象,在客戶端通過(guò)調(diào)用這個(gè)對(duì)象的方法來(lái)完成某些功能;但是在Internet環(huán)境下,不同語(yǔ)言,不同平臺(tái)對(duì)數(shù)據(jù)、甚至是一些基本數(shù)據(jù)類型定義不同,給不同的服務(wù)之間傳遞對(duì)象帶來(lái)的很大困難。由于基于文本的消息本身是不包含任何處理邏輯和數(shù)據(jù)類型的,因此服務(wù)間只傳遞文本,對(duì)數(shù)據(jù)的處理依賴于接收端的方式可以幫忙繞過(guò)兼容性這個(gè)的大泥坑。
此外,對(duì)于一個(gè)服務(wù)來(lái)說(shuō),Internet與局域網(wǎng)最大的一個(gè)區(qū)別就是在Internet上的版本管理極其困難,傳統(tǒng)軟件采用的升級(jí)方式在這種松散的分布式環(huán)境中幾乎無(wú)法進(jìn)行。采用基于文本的消息傳遞方式,數(shù)據(jù)處理端可以只選擇性的處理自己理解的那部分?jǐn)?shù)據(jù),而忽略其它的數(shù)據(jù),從而得到的非常理想的兼容性。
SOA的出現(xiàn)對(duì)于軟件架構(gòu)設(shè)計(jì)產(chǎn)生什么影響?
無(wú)論現(xiàn)在的IT系統(tǒng)是否牽涉到基于Internet的業(yè)務(wù)集成,采用SOA推薦的架構(gòu)都對(duì)提高系統(tǒng)的擴(kuò)展性有很大幫助。
使用基于文本方式的SOAP調(diào)用,擺脫遠(yuǎn)程調(diào)用中出現(xiàn)的函數(shù)參數(shù)類型等與數(shù)據(jù)無(wú)關(guān)的信息,保證所有SOAP傳遞的都是有意義的商業(yè)數(shù)據(jù)。依賴于Schema,而不是類定義對(duì)這些數(shù)據(jù)進(jìn)行解釋。傳統(tǒng)的三層Web應(yīng)用將可能變成四層結(jié)構(gòu):傳統(tǒng)意義上的商業(yè)邏輯層將被進(jìn)一步劃分為存放每個(gè)會(huì)話(Session)信息的客戶邏輯層和與狀態(tài)無(wú)關(guān)Sateless的SOA層。
“基于構(gòu)件技術(shù)的軟件開(kāi)發(fā)方法是未來(lái)的主流技術(shù),而基于構(gòu)件的SOA架構(gòu)是一次信息系統(tǒng)架構(gòu)上的變革,也是現(xiàn)實(shí)信息服務(wù)的客觀需求?!蔽④洿笾腥A區(qū)企業(yè)服務(wù)部總經(jīng)理辛兒倫在接受采訪時(shí)表示。
事實(shí)上,目前微軟的大多數(shù)軟件特別是新的版本都是在基于構(gòu)件的SOA概念設(shè)計(jì)上研發(fā)出來(lái)的。除了做內(nèi)核部分還要通過(guò)編碼之外,其余都是通過(guò)構(gòu)件化開(kāi)發(fā)的。同時(shí),微軟內(nèi)部的IT系統(tǒng)也是SOA架構(gòu),比如公文審批、報(bào)銷、跟ERP等應(yīng)用系統(tǒng)的整合。因此,可見(jiàn)SOA對(duì)于微軟來(lái)說(shuō),本身就已經(jīng)是SOA概念的身體力行者。
SOA能解決哪些問(wèn)題?
我們最怕遇到的兩件事,一是公司進(jìn)行業(yè)務(wù)整合,二是公司開(kāi)展新業(yè)務(wù)。因?yàn)閷?duì)這對(duì)我們來(lái)說(shuō),兩件事都意味一個(gè)結(jié)果——持續(xù)熬夜加班。有人將異構(gòu)系統(tǒng)環(huán)境與需求的不斷變化,看作多年來(lái)應(yīng)用軟件的兩大“癌癥”,使得軟件從業(yè)人員長(zhǎng)年累月陷入“修修補(bǔ)補(bǔ)、窮于應(yīng)付”的工作狀態(tài),企業(yè)也根本無(wú)法做到對(duì)市場(chǎng)變化作出快速響應(yīng)。
追本溯源,是因?yàn)橛诋?dāng)初的軟件設(shè)計(jì)思想和軟件架構(gòu)有問(wèn)題。過(guò)去,應(yīng)用軟件基本上是按照業(yè)務(wù)流程逐一對(duì)應(yīng)開(kāi)發(fā)的,每一個(gè)應(yīng)用自成體系、自立門戶。
事實(shí)上,任何應(yīng)用都包含最基本的三個(gè)內(nèi)容:界面、業(yè)務(wù)邏輯和數(shù)據(jù)展現(xiàn),應(yīng)該可以重復(fù)利用。但就因?yàn)槊總€(gè)應(yīng)用自成體系,每開(kāi)發(fā)一個(gè)新應(yīng)用,就需要重開(kāi)發(fā)一遍界面與數(shù)據(jù)展現(xiàn),重寫一遍業(yè)務(wù)代碼,浪費(fèi)了大量的時(shí)間和人力。
而SOA就是力求改變過(guò)去縱向開(kāi)發(fā)應(yīng)用的模式,將軟件按照業(yè)務(wù)需求,定義成大小合適的“組件”,作為企業(yè)共享資源,隨時(shí)調(diào)用。SOA的核心就是找到將軟件組織在一起的方法。
SOA能給企業(yè)帶來(lái)什么好處?
SOA帶給用戶的好處很明顯,除了前面提到的可以降低開(kāi)發(fā)成本,提高系統(tǒng)集成度和響應(yīng)速度等,還能幫助解決因?yàn)橄到y(tǒng)升級(jí)帶來(lái)的煩惱。對(duì)于傳統(tǒng)的軟件升級(jí)對(duì)用戶就意味著每三年來(lái)一次革命,不僅需耗費(fèi)大量金錢,還會(huì)鬧得人仰馬翻。現(xiàn)有的ERP等企業(yè)軟件幾乎都是鐵板一塊,當(dāng)某一點(diǎn)業(yè)務(wù)變化時(shí),某一點(diǎn)功能需要調(diào)整時(shí),必須全部升級(jí),這不但造成升級(jí)TCO成本太高,而且牽一發(fā)動(dòng)全身,質(zhì)量無(wú)法保證。而未來(lái)SOA構(gòu)架下的企業(yè)軟件就像是一個(gè)不斷進(jìn)化的生態(tài)過(guò)程,某些“服務(wù)(業(yè)務(wù)組件)”不斷地局部升級(jí),新的“服務(wù)”不斷地加入,只有這樣的系統(tǒng)才能真正做到RTE實(shí)時(shí)企業(yè),快速適應(yīng)業(yè)務(wù)變化。
關(guān)鍵詞:.Net下的SOA的應(yīng)用
相關(guān)文章:
.Net下的SOA的應(yīng)用

