SOA概覽
當(dāng)前位置:點(diǎn)晴教程→閑情逸致
→『 微信好文 』
最近半年以來(lái),在企業(yè)級(jí)應(yīng)用開(kāi)發(fā)領(lǐng)域,談?wù)撟疃嗟囊粋€(gè)詞,恐怕非soa(service-oriented architecture,面向服務(wù)架構(gòu))莫屬。那么soa究竟擁有什么樣的魔力,能夠讓眾多的軟件廠商對(duì)他趨之若騖,掀起新的一輪企業(yè)架構(gòu)浪潮。讓我們?cè)诒疚闹幸惶絪oa的究竟。[br]那么什么是soa,讓我們先從基本概念開(kāi)始講起。[br][br]什么是soa?[br][br]soa是一種架構(gòu)模型,它可以根據(jù)需求通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用。服務(wù)層是soa的基礎(chǔ),可以直接被應(yīng)用調(diào)用,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性。[br][br]soa的關(guān)鍵是“服務(wù)”的概念,w3c將服務(wù)定義為:“服務(wù)提供者完成一組工作,為服務(wù)使用者交付所需的最終結(jié)果。最終結(jié)果通常會(huì)使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化”。[br][br]service-architecture.com將soa定義為:“本質(zhì)上是服務(wù)的集合。服務(wù)間彼此通信,這種通信可能是簡(jiǎn)單的數(shù)據(jù)傳送,也可能是兩個(gè)或更多的服務(wù)協(xié)調(diào)進(jìn)行某些活動(dòng)。服務(wù)間需要某些方法進(jìn)行連接。所謂服務(wù)就是精確定義、封裝完善、獨(dú)立于其他服務(wù)所處環(huán)境和狀態(tài)的函數(shù)。”[br]looselycoupled.com將soa定義為:“按需連接資源的系統(tǒng)。在soa中,資源被作為可通過(guò)標(biāo)準(zhǔn)方式訪問(wèn)的獨(dú)立服務(wù),提供給網(wǎng)絡(luò)中的其他成員。與傳統(tǒng)的系統(tǒng)結(jié)構(gòu)相比,soa規(guī)定了資源間更為靈活的松散耦合關(guān)系。”[br][br]gartner則將soa描述為:“客戶端/服務(wù)器的軟件設(shè)計(jì)方法,一項(xiàng)應(yīng)用由軟件服務(wù)和軟件服務(wù)使用者組成……soa與大多數(shù)通用的客戶端/服務(wù)器模型的不同之處,在于它著重強(qiáng)調(diào)軟件組件的松散耦合,并使用獨(dú)立的標(biāo)準(zhǔn)接口。”[br][br]gartner相信bpm和soa的結(jié)合對(duì)所有類型的應(yīng)用集成都大有助益??“soa極大的得益于bpm技術(shù)和方法論,但是soa面臨的真正問(wèn)題是確立正確的企業(yè)意識(shí),即:強(qiáng)化戰(zhàn)略化的soa計(jì)劃(針對(duì)供應(yīng)和使用)并鼓勵(lì)重用。”[br][br]雖然不同廠商或個(gè)人對(duì)soa有著不同的理解,但是我們?nèi)匀豢梢詮纳鲜龅亩x中看到soa的幾個(gè)關(guān)鍵特性:一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過(guò)簡(jiǎn)單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。[br][br]需著重注意的是,soa并不是新生事物??大型it組織成功構(gòu)建和部署soa應(yīng)用已有多年的歷史??這要比現(xiàn)有的xml和web服務(wù)長(zhǎng)很多。ibm cics和bea tuxedo就是過(guò)去被用于構(gòu)建soa應(yīng)用的兩種技術(shù)范例。[br][br]重點(diǎn)說(shuō)明的是soa并不是一種現(xiàn)成的技術(shù),而是一種架構(gòu)和組織it基礎(chǔ)結(jié)構(gòu)及業(yè)務(wù)功能的方法。soa是一種在計(jì)算環(huán)境中設(shè)計(jì)、開(kāi)發(fā)、部署和管理離散邏輯單元(服務(wù))的模型。這一定義闡明了soa的范圍。[br][br]soa要求開(kāi)發(fā)人員將應(yīng)用設(shè)計(jì)為服務(wù)的集合。soa要求開(kāi)發(fā)人員跳出應(yīng)用本身進(jìn)行思考,考慮現(xiàn)有服務(wù)的重用,或思索他們的服務(wù)如何能夠被其他項(xiàng)目重用。“單獨(dú)的”、“獨(dú)立的”、“封裝完善的”服務(wù)所具有的一個(gè)關(guān)鍵的好處是,可以采用多種不同方法將它們組合成較大型的服務(wù),由此來(lái)實(shí)現(xiàn)重用。[br][br]但是,soa并不僅僅是一種開(kāi)發(fā)方法??它還具有管理上的優(yōu)點(diǎn)。例如,現(xiàn)在管理員可直接管理開(kāi)發(fā)人員所構(gòu)建的相同服務(wù),這遠(yuǎn)勝于以往管理單個(gè)應(yīng)用的方式。通過(guò)分析服務(wù)間的交互,soa可以幫助企業(yè)了解何時(shí)以及為什么業(yè)務(wù)邏輯被切實(shí)執(zhí)行了,這使管理員或分析師能夠有針對(duì)性的優(yōu)化業(yè)務(wù)流程。[br][br]soa的基本特征[br][br]soa的實(shí)施具有幾個(gè)鮮明的基本特征。實(shí)施soa的關(guān)鍵目標(biāo)是實(shí)現(xiàn)企業(yè)it資產(chǎn)的最大化重用。要實(shí)現(xiàn)這一目標(biāo),就要在實(shí)施soa的過(guò)程中牢記以下特征:
可從企業(yè)外部訪問(wèn) 隨時(shí)可用 粗粒度的服務(wù)接口 分級(jí) 松散耦合 可重用的服務(wù) 服務(wù)接口設(shè)計(jì)管理 標(biāo)準(zhǔn)化的服務(wù)接口 支持各種消息模式 [li]精確定義的服務(wù)契約 [/li] [p][br]我們現(xiàn)在開(kāi)始依次討論以上概念。 [br][br]1 可從企業(yè)外部訪問(wèn)[br][br]通常被稱為業(yè)務(wù)伙伴的外部用戶也能像企業(yè)內(nèi)部用戶一樣訪問(wèn)相同的服務(wù)。業(yè)務(wù)伙伴采用先進(jìn)的b2b協(xié)議(ebxml或rosettanet)相互合作。當(dāng)業(yè)務(wù)伙伴基于業(yè)務(wù)目的交換業(yè)務(wù)信息時(shí),他們就參與了一次會(huì)話。會(huì)話是業(yè)務(wù)伙伴間一系列的一條或多條業(yè)務(wù)信息的交換。會(huì)話類型(會(huì)話復(fù)雜或簡(jiǎn)單、長(zhǎng)或短等)取決于業(yè)務(wù)目的。[br][br]除了b2b協(xié)議外,外部用戶還可以訪問(wèn)以web服務(wù)方式提供的企業(yè)服務(wù)。[br][br]2 隨時(shí)可用[br][br]當(dāng)有服務(wù)使用者請(qǐng)求服務(wù)時(shí),soa要求必須有服務(wù)提供者能夠響應(yīng)。大多數(shù)soa都能夠?yàn)殚T(mén)戶應(yīng)用之類的同步應(yīng)用和b2b之類的異步應(yīng)用提供服務(wù)。同步應(yīng)用對(duì)于其所使用的服務(wù)具有很強(qiáng)的依賴性。[br]許多同步應(yīng)用通常部署在前臺(tái),其最終用戶很容易受到服務(wù)提供者短缺的影響。很多情況下,同步應(yīng)用利用分布式服務(wù)提供者,這樣可以響應(yīng)更多的用戶請(qǐng)求。但是,隨著提供特定服務(wù)功能的服務(wù)器數(shù)量的增長(zhǎng),出現(xiàn)短缺的可能性也呈指數(shù)級(jí)上升。[br]相比之下,異步應(yīng)用要更為穩(wěn)健,因?yàn)槠洳捎藐?duì)列請(qǐng)求設(shè)計(jì),因此可以容許出現(xiàn)服務(wù)提供者短缺或遲滯的情況。異步應(yīng)用大多數(shù)情況下部署在后臺(tái),用戶通常不會(huì)覺(jué)察到短暫的短缺。大部分情況下異步應(yīng)用能夠穩(wěn)健應(yīng)對(duì)短時(shí)間短缺,但是長(zhǎng)時(shí)間短缺則會(huì)引發(fā)嚴(yán)重問(wèn)題。在服務(wù)短缺解決、隊(duì)列引擎將罕見(jiàn)的大量工作推到共享的應(yīng)用資源中時(shí),可能會(huì)出現(xiàn)隊(duì)列溢出甚至服務(wù)死鎖。[br]服務(wù)使用者要求提供同步服務(wù)時(shí),通常是基于其自身理解或使用習(xí)慣。在多數(shù)情況下,采用異步模型可以達(dá)到同樣的效果,但更能夠體現(xiàn)soa的最佳特性。[br]當(dāng)然,并不是所有情況下都應(yīng)當(dāng)采用異步設(shè)計(jì)模式。但大多數(shù)情況下,異步消息可以確保系統(tǒng)在不同負(fù)荷下的伸縮性,在接口響應(yīng)時(shí)間不是很短時(shí)尤其如此。[br][br]3 粗粒度服務(wù)接口[br][br]粗粒度服務(wù)提供一項(xiàng)特定的業(yè)務(wù)功能,而細(xì)粒度服務(wù)代表了技術(shù)組件方法。舉個(gè)例說(shuō)明最為清楚??向計(jì)費(fèi)系統(tǒng)中添加一個(gè)客戶是典型的粗粒度服務(wù),而你可以使用幾個(gè)細(xì)粒度服務(wù)實(shí)現(xiàn)同一功能,如:將客戶名加入到計(jì)費(fèi)系統(tǒng)中,添加詳細(xì)的客戶聯(lián)系方式、添加計(jì)費(fèi)信息等等。[br]采用粗粒度服務(wù)接口的優(yōu)點(diǎn)在于使用者和服務(wù)層之間不必再進(jìn)行多次的往復(fù),一次往復(fù)就足夠。internet環(huán)境中有保障的tcp/ip會(huì)話已不再占據(jù)主導(dǎo)、建立連接的成本也過(guò)高,因此在該環(huán)境中進(jìn)行應(yīng)用開(kāi)發(fā)時(shí)粗粒度服務(wù)接口的優(yōu)點(diǎn)更為明顯。[br]除去基本的往復(fù)效率,事務(wù)穩(wěn)定性問(wèn)題也很重要。在一個(gè)單獨(dú)事務(wù)中包含的多段細(xì)粒度請(qǐng)求可能使事務(wù)處理時(shí)間過(guò)長(zhǎng)、導(dǎo)致后臺(tái)服務(wù)超時(shí),從而中止。與此相反,從事務(wù)的角度來(lái)看,向后臺(tái)服務(wù)請(qǐng)求大塊數(shù)據(jù)可能是獲取反饋的唯一途徑。[br][br]4 分級(jí)[br][br]一個(gè)關(guān)于粗粒度服務(wù)的爭(zhēng)論是此類服務(wù)比細(xì)粒度服務(wù)的重用性差,因?yàn)榇至6确?wù)傾向于解決專門(mén)的業(yè)務(wù)問(wèn)題,因此通用性差、重用性設(shè)計(jì)困難。解決該爭(zhēng)論的方法之一就是允許采用不同的粗粒度等級(jí)來(lái)創(chuàng)建服務(wù)。這種服務(wù)分級(jí)包含了粒度較細(xì)、重用性較高的服務(wù),也包含粒度較粗、重用性較差的服務(wù)。[br]在服務(wù)分級(jí)方面,須注意服務(wù)層的公開(kāi)服務(wù)通常由后臺(tái)系統(tǒng)(bes's)或soa平臺(tái)中現(xiàn)有的本地服務(wù)組成。因此允許在服務(wù)層創(chuàng)建私有服務(wù)是非常重要的。正確的文檔、配置管理和私有服務(wù)的重用對(duì)于it部門(mén)在soa服務(wù)層快速開(kāi)發(fā)新的公開(kāi)服務(wù)的能力具有重要影響。[br][br]5 松散耦合[br][br]soa具有“松散耦合”組件服務(wù),這一點(diǎn)區(qū)別于大多數(shù)其他的組件架構(gòu)。該方法旨在將服務(wù)使用者和服務(wù)提供者在服務(wù)實(shí)現(xiàn)和客戶如何使用服務(wù)方面隔離開(kāi)來(lái)。[br]服務(wù)提供者和服務(wù)使用者間松散耦合背后的關(guān)鍵點(diǎn)是服務(wù)接口作為與服務(wù)實(shí)現(xiàn)分離的實(shí)體而存在。這是服務(wù)實(shí)現(xiàn)能夠在完全不影響服務(wù)使用者的情況下進(jìn)行修改。[br]大多數(shù)松散耦合方法都依靠基于服務(wù)接口的消息。基于消息的接口能夠兼容多種傳輸方式(如http、jms、tcp/ip、mom等)。基于消息的接口可以采用同步和異步協(xié)議實(shí)現(xiàn),web服務(wù)對(duì)于soa服務(wù)接口來(lái)講是一個(gè)重要的標(biāo)準(zhǔn)。[br]當(dāng)使用者調(diào)用一個(gè)web服務(wù)時(shí),被調(diào)用的對(duì)象可以是cics事務(wù)、dcom或corba對(duì)象、j2ee ejb或tuxedo服務(wù)等,但這與服務(wù)使用者無(wú)關(guān)。底層實(shí)現(xiàn)并不重要。[br]消息類web服務(wù)通常是松散耦合和文檔驅(qū)動(dòng)的,這要優(yōu)于與服務(wù)特定接口的連接。當(dāng)客戶調(diào)用消息類web服務(wù)時(shí),客戶通常會(huì)發(fā)送的是一個(gè)完整的文檔(如采購(gòu)訂單),而非一組離散的參數(shù)。web服務(wù)接收整個(gè)文檔、進(jìn)行處理、而后可能或者不會(huì)返回結(jié)果信息。由于客戶和web服務(wù)間不存在緊密耦合請(qǐng)求響應(yīng),消息類web服務(wù)在客戶和服務(wù)器間提供了更為松散的耦合。[br][br]6 可重用的服務(wù)及服務(wù)接口設(shè)計(jì)管理[br][br]如果完全按照可重用的原則設(shè)計(jì)服務(wù),soa將可以使應(yīng)用變得更為靈活。可重用服務(wù)采用通用格式提供重要的業(yè)務(wù)功能,為開(kāi)發(fā)人員節(jié)約了大量時(shí)間。設(shè)計(jì)可重用服務(wù)是與數(shù)據(jù)庫(kù)設(shè)計(jì)或通用數(shù)據(jù)建模類似的最有價(jià)值的工作。由于服務(wù)設(shè)計(jì)是成功的關(guān)鍵因此,因此soa實(shí)施者應(yīng)當(dāng)尋找一種適當(dāng)?shù)姆椒ㄟM(jìn)行服務(wù)設(shè)計(jì)過(guò)程管理。[br]服務(wù)設(shè)計(jì)管理根本上講是服務(wù)設(shè)計(jì)問(wèn)題,服務(wù)設(shè)計(jì)需要在兩點(diǎn)間折衷??走捷徑的項(xiàng)目戰(zhàn)術(shù)與企業(yè)構(gòu)建可重用通用服務(wù)的長(zhǎng)期目標(biāo)。[br]超越項(xiàng)目短期目標(biāo)進(jìn)行服務(wù)接口的開(kāi)發(fā)和評(píng)估是邁向精確定義服務(wù)接口的重要一步,同時(shí)還需要為接口文檔、服務(wù)實(shí)現(xiàn)文檔及所有重要的非功能性特征設(shè)立標(biāo)準(zhǔn)。[br]在大型組織中實(shí)現(xiàn)重用的一個(gè)先決條件是建立通用(設(shè)計(jì)階段)服務(wù)庫(kù)和開(kāi)發(fā)流程,以保證重用的正確性和通用性。此外,對(duì)記述服務(wù)設(shè)計(jì)和開(kāi)發(fā)的服務(wù)文檔進(jìn)行評(píng)估也是成功利用服務(wù)庫(kù)的關(guān)鍵。[br]簡(jiǎn)言之,不按規(guī)則編寫(xiě)服務(wù)將無(wú)法保證可提供重用性的soa的成功實(shí)施。在執(zhí)行規(guī)則的過(guò)程中會(huì)產(chǎn)生財(cái)務(wù)費(fèi)用,需要在制定soa實(shí)施計(jì)劃時(shí)加以考慮。[br][br]7 標(biāo)準(zhǔn)化的接口[br][br]近年來(lái)出現(xiàn)的兩個(gè)重要標(biāo)準(zhǔn)xml和web服務(wù)增加了全新的重要功能,將soa推向更高的層面,并大大提升了soa的價(jià)值。盡管以往的soa產(chǎn)品都是專有的、并且要求it部門(mén)在其特定環(huán)境中開(kāi)發(fā)所有應(yīng)用,但xml和web服務(wù)標(biāo)準(zhǔn)化的開(kāi)放性使企業(yè)能夠在所部署的所有技術(shù)和應(yīng)用中采用soa。這具有巨大的意義![br]web服務(wù)使應(yīng)用功能得以通過(guò)標(biāo)準(zhǔn)化接口(wsdl)提供,并可基于標(biāo)準(zhǔn)化傳輸方式(http和jms)、采用標(biāo)準(zhǔn)化協(xié)議(soap)進(jìn)行調(diào)用。例如,開(kāi)發(fā)人員可以采用最適于門(mén)戶開(kāi)發(fā)的工具輕松創(chuàng)建一個(gè)新的門(mén)戶應(yīng)用,并可以重用erp系統(tǒng)和定制化j2ee應(yīng)用中的現(xiàn)有服務(wù),而完全無(wú)須了解這些應(yīng)用的內(nèi)部工作原理。采用xml,門(mén)戶開(kāi)發(fā)人員無(wú)須了解特定的數(shù)據(jù)表示格式,便能夠在這些應(yīng)用間輕松地交換數(shù)據(jù)。[br]你也可以不采用web服務(wù)或xml來(lái)創(chuàng)建soa應(yīng)用,但是這兩種標(biāo)準(zhǔn)的重要性日益增加、應(yīng)用日趨普遍。盡管目前只有幾種服務(wù)使用者支持該標(biāo)準(zhǔn),但未來(lái)大多數(shù)的服務(wù)使用者都會(huì)將其作為企業(yè)的服務(wù)訪問(wèn)方法。[br][br]8 支持各種消息模式[br][br]soa中可能存在以下消息模式。在一個(gè)soa實(shí)現(xiàn)中,常會(huì)出現(xiàn)混合采用不同消息模式的服務(wù)。[br]q 無(wú)狀態(tài)的消息。使用者向提供者發(fā)送的每條消息都必須包含提供者處理該消息所需的全部信息。這一限定使服務(wù)提供者無(wú)須存儲(chǔ)使用者的狀態(tài)信息,從而更易擴(kuò)展。[br]q 有狀態(tài)的消息。使用者與提供者共享使用者的特定環(huán)境信息,此信息包含在提供者和使用者交換的消息中。這一限定使提供者與使用者間的通信更加靈活,但由于服務(wù)提供者必須存儲(chǔ)每個(gè)使用者的共享環(huán)境信息,因此其整體可擴(kuò)展性明顯減弱。該限定增強(qiáng)了服務(wù)提供者和使用者的耦合關(guān)系,提高了交換服務(wù)提供者的服務(wù)難度。[br]q 等冪消息。向軟件代理發(fā)送多次重復(fù)消息的效果和發(fā)送單條消息相同。這一限定使提供者和消費(fèi)者能夠在出現(xiàn)故障時(shí)簡(jiǎn)單的復(fù)制消息,從而改進(jìn)服務(wù)可靠性。[br][br]9 精確定義的服務(wù)接口[br][br]服務(wù)是由提供者和使用者間的契約定義的。契約規(guī)定了服務(wù)使用方法及使用者期望的最終結(jié)果。此外,還可以在其中規(guī)定服務(wù)質(zhì)量。此處需要注意的關(guān)鍵點(diǎn)是,服務(wù)契約必須進(jìn)行精確定義。[br]meta將soa定義為:“一種以通用為目的、可擴(kuò)展、具有聯(lián)合協(xié)作性的架構(gòu),所有流程都被定義為服務(wù),服務(wù)通過(guò)基于類封裝的服務(wù)接口委托給服務(wù)提供者,服務(wù)接口根據(jù)可擴(kuò)展標(biāo)識(shí)符、格式和協(xié)議單獨(dú)描述。”該定義的最后部分表明在服務(wù)接口和其實(shí)現(xiàn)之間有明確的分界。[br][br]soa的優(yōu)點(diǎn)[br][br]了解了soa的定義和基本特征,最后我們?cè)賮?lái)看看soa潛在的優(yōu)點(diǎn):[br][br]編碼靈活性[br][br]可基于模塊化的低層服務(wù)、采用不同組合方式創(chuàng)建高層服務(wù),從而實(shí)現(xiàn)重用,這些都體現(xiàn)了編碼的靈活性。此外,由于服務(wù)使用者不直接訪問(wèn)服務(wù)提供者,這種服務(wù)實(shí)現(xiàn)方式本身也可以靈活使用。[br][br]明確開(kāi)發(fā)人員角色[br][br]例如,熟悉bes的開(kāi)發(fā)人員可以集中精力在重用訪問(wèn)層,協(xié)調(diào)層開(kāi)發(fā)人員則無(wú)須特別了解bes的實(shí)現(xiàn),而將精力放在解決高價(jià)值的業(yè)務(wù)問(wèn)題上。[br][br]支持多種客戶類型[br][br]借助精確定義的服務(wù)接口和對(duì)xml、web服務(wù)標(biāo)準(zhǔn)的支持,可以支持多種客戶類型,包括pda、手機(jī)等新型訪問(wèn)渠道。[br][br]更易維護(hù)[br][br]服務(wù)提供者和服務(wù)使用者的松散耦合關(guān)系及對(duì)開(kāi)放標(biāo)準(zhǔn)的采用確保了該特性的實(shí)現(xiàn)。[br][br]更好的伸縮性[br][br]依靠服務(wù)設(shè)計(jì)、開(kāi)發(fā)和部署所采用的架構(gòu)模型實(shí)現(xiàn)伸縮性。服務(wù)提供者可以彼此獨(dú)立調(diào)整,以滿足服務(wù)需求。[br][br]更高的可用性[br][br]該特性在服務(wù)提供者和服務(wù)使用者的松散耦合關(guān)系上得以體現(xiàn)。使用者無(wú)須了解提供者的實(shí)現(xiàn)細(xì)節(jié),這樣服務(wù)提供者就可以在weblogic集群環(huán)境中靈活部署,使用者可以被轉(zhuǎn)接到可用的例程上。[br][br]soa可以看作是b/s模型、xml/web service技術(shù)之后的自然延伸。soa將能夠幫助我們站在一個(gè)新的高度理解企業(yè)級(jí)架構(gòu)中的各種組件的開(kāi)發(fā)、部署形式,它將幫助企業(yè)系統(tǒng)架構(gòu)者以更迅速、更可靠、更具重用性架構(gòu)整個(gè)業(yè)務(wù)系統(tǒng)。較之以往,以soa架構(gòu)的系統(tǒng)能夠更加從容地面對(duì)業(yè)務(wù)的急劇變化。[/p] 該文章在 2010/5/12 23:40:57 編輯過(guò) |
相關(guān)文章
正在查詢... |