最近半年以來,在企業(yè)級應(yīng)用開發(fā)領(lǐng)域,談?wù)撟疃嗟囊粋€詞,恐怕非SOA(Service-Oriented Architecture,面向服務(wù)架構(gòu))莫屬。那么SOA究竟擁有什么樣的魔力,能夠讓眾多的軟件廠商對他趨之若騖,掀起新的一輪企業(yè)架構(gòu)浪潮。讓我們在本文中一探SOA的究竟。 什么是SOA? SOA是一種架構(gòu)模型,它可以根據(jù)需求通過網(wǎng)絡(luò)對松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用。服務(wù)層是SOA的基礎(chǔ),可以直接被應(yīng)用調(diào)用,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性。 SOA的關(guān)鍵是“服務(wù)”的概念,W3C將服務(wù)定義為:“服務(wù)提供者完成一組工作,為服務(wù)使用者交付所需的最終結(jié)果。最終結(jié)果通常會使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化”。 Service-architecture.com將SOA定義為:“本質(zhì)上是服務(wù)的集合。服務(wù)間彼此通信,這種通信可能是簡單的數(shù)據(jù)傳送,也可能是兩個或更多的服務(wù)協(xié)調(diào)進(jìn)行某些活動。服務(wù)間需要某些方法進(jìn)行連接。所謂服務(wù)就是精確定義、封裝完善、獨立于其他服務(wù)所處環(huán)境和狀態(tài)的函數(shù)。” Gartner則將SOA描述為:“客戶端/服務(wù)器的軟件設(shè)計方法,一項應(yīng)用由軟件服務(wù)和軟件服務(wù)使用者組成……SOA與大多數(shù)通用的客戶端/服務(wù)器模型的不同之處,在于它著重強(qiáng)調(diào)軟件組件的松散耦合,并使用獨立的標(biāo)準(zhǔn)接口?!?/p> Gartner相信BPM和SOA的結(jié)合對所有類型的應(yīng)用集成都大有助益??“SOA極大的得益于BPM技術(shù)和方法論,但是SOA面臨的真正問題是確立正確的企業(yè)意識,即:強(qiáng)化戰(zhàn)略化的SOA計劃(針對供應(yīng)和使用)并鼓勵重用?!?/p> 雖然不同廠商或個人對SOA有著不同的理解,但是我們?nèi)匀豢梢詮纳鲜龅亩x中看到SOA的幾個關(guān)鍵特性:一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過簡單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。 需著重注意的是,SOA并不是新生事物??大型IT組織成功構(gòu)建和部署SOA應(yīng)用已有多年的歷史??這要比現(xiàn)有的XML和Web服務(wù)長很多。IBM CICS和BEA TUXEDO就是過去被用于構(gòu)建SOA應(yīng)用的兩種技術(shù)范例。 重點說明的是SOA并不是一種現(xiàn)成的技術(shù),而是一種架構(gòu)和組織IT基礎(chǔ)結(jié)構(gòu)及業(yè)務(wù)功能的方法。SOA是一種在計算環(huán)境中設(shè)計、開發(fā)、部署和管理離散邏輯單元(服務(wù))的模型。這一定義闡明了SOA的范圍。 SOA要求開發(fā)人員將應(yīng)用設(shè)計為服務(wù)的集合。SOA要求開發(fā)人員跳出應(yīng)用本身進(jìn)行思考,考慮現(xiàn)有服務(wù)的重用,或思索他們的服務(wù)如何能夠被其他項目重用?!皢为毜摹?、“獨立的”、“封裝完善的”服務(wù)所具有的一個關(guān)鍵的好處是,可以采用多種不同方法將它們組合成較大型的服務(wù),由此來實現(xiàn)重用。 但是,SOA并不僅僅是一種開發(fā)方法??它還具有管理上的優(yōu)點。例如,現(xiàn)在管理員可直接管理開發(fā)人員所構(gòu)建的相同服務(wù),這遠(yuǎn)勝于以往管理單個應(yīng)用的方式。通過分析服務(wù)間的交互,SOA可以幫助企業(yè)了解何時以及為什么業(yè)務(wù)邏輯被切實執(zhí)行了,這使管理員或分析師能夠有針對性的優(yōu)化業(yè)務(wù)流程。 SOA的基本特征 SOA的實施具有幾個鮮明的基本特征。實施SOA的關(guān)鍵目標(biāo)是實現(xiàn)企業(yè)IT資產(chǎn)的最大化重用。要實現(xiàn)這一目標(biāo),就要在實施SOA的過程中牢記以下特征: q 可從企業(yè)外部訪問 1? 可從企業(yè)外部訪問 通常被稱為業(yè)務(wù)伙伴的外部用戶也能像企業(yè)內(nèi)部用戶一樣訪問相同的服務(wù)。業(yè)務(wù)伙伴采用先進(jìn)的B2B協(xié)議(ebXML或RosettaNet)相互合作。當(dāng)業(yè)務(wù)伙伴基于業(yè)務(wù)目的交換業(yè)務(wù)信息時,他們就參與了一次會話。會話是業(yè)務(wù)伙伴間一系列的一條或多條業(yè)務(wù)信息的交換。會話類型(會話復(fù)雜或簡單、長或短等)取決于業(yè)務(wù)目的。 除了B2B協(xié)議外,外部用戶還可以訪問以Web服務(wù)方式提供的企業(yè)服務(wù)。 2 隨時可用 當(dāng)有服務(wù)使用者請求服務(wù)時,SOA要求必須有服務(wù)提供者能夠響應(yīng)。大多數(shù)SOA都能夠為門戶應(yīng)用之類的同步應(yīng)用和B2B之類的異步應(yīng)用提供服務(wù)。同步應(yīng)用對于其所使用的服務(wù)具有很強(qiáng)的依賴性。 3? 粗粒度服務(wù)接口 粗粒度服務(wù)提供一項特定的業(yè)務(wù)功能,而細(xì)粒度服務(wù)代表了技術(shù)組件方法。舉個例說明最為清楚??向計費系統(tǒng)中添加一個客戶是典型的粗粒度服務(wù),而你可以使用幾個細(xì)粒度服務(wù)實現(xiàn)同一功能,如:將客戶名加入到計費系統(tǒng)中,添加詳細(xì)的客戶聯(lián)系方式、添加計費信息等等。 4 分級 一個關(guān)于粗粒度服務(wù)的爭論是此類服務(wù)比細(xì)粒度服務(wù)的重用性差,因為粗粒度服務(wù)傾向于解決專門的業(yè)務(wù)問題,因此通用性差、重用性設(shè)計困難。解決該爭論的方法之一就是允許采用不同的粗粒度等級來創(chuàng)建服務(wù)。這種服務(wù)分級包含了粒度較細(xì)、重用性較高的服務(wù),也包含粒度較粗、重用性較差的服務(wù)。 5? 松散耦合 SOA具有“松散耦合”組件服務(wù),這一點區(qū)別于大多數(shù)其他的組件架構(gòu)。該方法旨在將服務(wù)使用者和服務(wù)提供者在服務(wù)實現(xiàn)和客戶如何使用服務(wù)方面隔離開來。 6? 可重用的服務(wù)及服務(wù)接口設(shè)計管理 如果完全按照可重用的原則設(shè)計服務(wù),SOA將可以使應(yīng)用變得更為靈活??芍赜梅?wù)采用通用格式提供重要的業(yè)務(wù)功能,為開發(fā)人員節(jié)約了大量時間。設(shè)計可重用服務(wù)是與數(shù)據(jù)庫設(shè)計或通用數(shù)據(jù)建模類似的最有價值的工作。由于服務(wù)設(shè)計是成功的關(guān)鍵因此,因此SOA實施者應(yīng)當(dāng)尋找一種適當(dāng)?shù)姆椒ㄟM(jìn)行服務(wù)設(shè)計過程管理。 7? 標(biāo)準(zhǔn)化的接口 近年來出現(xiàn)的兩個重要標(biāo)準(zhǔn)XML和Web服務(wù)增加了全新的重要功能,將SOA推向更高的層面,并大大提升了SOA的價值。盡管以往的SOA產(chǎn)品都是專有的、并且要求IT部門在其特定環(huán)境中開發(fā)所有應(yīng)用,但XML和Web服務(wù)標(biāo)準(zhǔn)化的開放性使企業(yè)能夠在所部署的所有技術(shù)和應(yīng)用中采用SOA。這具有巨大的意義! 8? 支持各種消息模式 SOA中可能存在以下消息模式。在一個SOA實現(xiàn)中,常會出現(xiàn)混合采用不同消息模式的服務(wù)。 9? 精確定義的服務(wù)接口 服務(wù)是由提供者和使用者間的契約定義的。契約規(guī)定了服務(wù)使用方法及使用者期望的最終結(jié)果。此外,還可以在其中規(guī)定服務(wù)質(zhì)量。此處需要注意的關(guān)鍵點是,服務(wù)契約必須進(jìn)行精確定義。 SOA的優(yōu)點 了解了SOA的定義和基本特征,最后我們再來看看SOA潛在的優(yōu)點: 編碼靈活性 可基于模塊化的低層服務(wù)、采用不同組合方式創(chuàng)建高層服務(wù),從而實現(xiàn)重用,這些都體現(xiàn)了編碼的靈活性。此外,由于服務(wù)使用者不直接訪問服務(wù)提供者,這種服務(wù)實現(xiàn)方式本身也可以靈活使用。 明確開發(fā)人員角色 例如,熟悉BES的開發(fā)人員可以集中精力在重用訪問層,協(xié)調(diào)層開發(fā)人員則無須特別了解BES的實現(xiàn),而將精力放在解決高價值的業(yè)務(wù)問題上。 支持多種客戶類型 借助精確定義的服務(wù)接口和對XML、Web服務(wù)標(biāo)準(zhǔn)的支持,可以支持多種客戶類型,包括PDA、手機(jī)等新型訪問渠道。 更易維護(hù) 服務(wù)提供者和服務(wù)使用者的松散耦合關(guān)系及對開放標(biāo)準(zhǔn)的采用確保了該特性的實現(xiàn)。 更好的伸縮性 依靠服務(wù)設(shè)計、開發(fā)和部署所采用的架構(gòu)模型實現(xiàn)伸縮性。服務(wù)提供者可以彼此獨立調(diào)整,以滿足服務(wù)需求。 更高的可用性 該特性在服務(wù)提供者和服務(wù)使用者的松散耦合關(guān)系上得以體現(xiàn)。使用者無須了解提供者的實現(xiàn)細(xì)節(jié),這樣服務(wù)提供者就可以在WebLogic集群環(huán)境中靈活部署,使用者可以被轉(zhuǎn)接到可用的例程上。 SOA可以看作是B/S模型、XML/Web Service技術(shù)之后的自然延伸。SOA將能夠幫助我們站在一個新的高度理解企業(yè)級架構(gòu)中的各種組件的開發(fā)、部署形式,它將幫助企業(yè)系統(tǒng)架構(gòu)者以更迅速、更可靠、更具重用性架構(gòu)整個業(yè)務(wù)系統(tǒng)。較之以往,以SOA架構(gòu)的系統(tǒng)能夠更加從容地面對業(yè)務(wù)的急劇變化。 |
? |
? | 出處:作者:崔曉波 BEA系統(tǒng)(中國)有限公司資深技術(shù)顧問????日期:2005-08-04 |