趙鑫
摘 要:SOA是一種對(duì)未來軟件架構(gòu)設(shè)計(jì)有巨大影響的技術(shù)。文章從軟件體系結(jié)構(gòu)角度出發(fā),深入分析了SOA的產(chǎn)生背景,什么是SOA,SOA的五個(gè)特征,SOA包括的角色、操作、構(gòu)件,以及使用SOA架構(gòu)的優(yōu)勢(shì)。最后對(duì)SOA進(jìn)行了總結(jié)論述。
關(guān)鍵詞:SOA;面向服務(wù);架構(gòu)
引言
軟件開發(fā)經(jīng)歷了不同體系結(jié)構(gòu)的變革,從傳統(tǒng)軟件體系結(jié)構(gòu)階段到基于組件的體系結(jié)構(gòu)階段,再到面向服務(wù)的體系結(jié)構(gòu)階段。隨著軟件應(yīng)用規(guī)模的逐步擴(kuò)大,應(yīng)用層次的不斷深入,軟件開發(fā)的難度、復(fù)雜度也隨之增加。如何盡可能多得利用已有的資源而增加修改,提高軟件的可重用性,減少開發(fā)成本,成為了亟待解決的問題。
1.SOA的產(chǎn)生背景
隨著網(wǎng)絡(luò)的普及化,越來越破功需要將現(xiàn)有多個(gè)應(yīng)用系統(tǒng)集成,以便實(shí)現(xiàn)更強(qiáng)的信息處理功能。如電子商務(wù)的供應(yīng)鏈,智能交通、電子政務(wù)、數(shù)字地球等。而傳統(tǒng)的三層體系結(jié)構(gòu)雖有力的提供了一種分布式系統(tǒng)的解決方案,實(shí)現(xiàn)了一種緊耦合的分布式系統(tǒng),組成了一個(gè)自成體系的單個(gè)應(yīng)用軟件,而如何將現(xiàn)有的多個(gè)應(yīng)用軟件,通過網(wǎng)絡(luò)將其整合成一個(gè)集成系統(tǒng),早期的技術(shù)是無法解決的,所以迫于亟待解決的多應(yīng)用集成問題,SOA是當(dāng)前 最理想的解決方案。SOA就是為了適應(yīng)復(fù)雜多變的應(yīng)用環(huán)境,用一種不同于以往的方式來快速、簡(jiǎn)便的開發(fā)企業(yè)應(yīng)用系統(tǒng),為企業(yè)在激烈的市場(chǎng)競(jìng)爭(zhēng)中搶得先機(jī)。
2.什么是面向服務(wù)的體系結(jié)構(gòu)SOA
SOA(Service-Oriented Architecture),即面向服務(wù)的架構(gòu),是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。
SOA是一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過簡(jiǎn)單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。SOA的關(guān)鍵是“服務(wù)”的概念,W3C將服務(wù)定義為:“服務(wù)提供者完成一組工作,為服務(wù)使用者交付所需的最終結(jié)果。最終結(jié)果通常會(huì)使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化”。
3.SOA的特征
SOA具有以下五個(gè)特征:
(1)可重用
一個(gè)服務(wù)創(chuàng)建后能用于多個(gè)應(yīng)用和業(yè)務(wù)流程。
(2)松耦合
服務(wù)請(qǐng)求者到服務(wù)提供者的綁定與服務(wù)之間應(yīng)該是松耦合的。因此,服務(wù)請(qǐng)求者不需要知道服務(wù)提供者實(shí)現(xiàn)的技術(shù)細(xì)節(jié),例如程序語(yǔ)言、底層平臺(tái)等等。
(3)明確定義的接口
服務(wù)交互必須是明確定義的。Web服務(wù)描述語(yǔ)言(Web Services Description Language,WSDL)是用于描述服務(wù)請(qǐng)求者所要求的綁定到服務(wù)提供者的細(xì)節(jié)。WSDL不包括服務(wù)實(shí)現(xiàn)的任何技術(shù)細(xì)節(jié)。服務(wù)請(qǐng)求者不知道也不關(guān)心服務(wù)究竟是由哪種程序設(shè)計(jì)語(yǔ)言編寫的。
(4)無狀態(tài)的服務(wù)設(shè)計(jì)
服務(wù)應(yīng)該是獨(dú)立的、自包含的請(qǐng)求,在實(shí)現(xiàn)時(shí)它不需要獲取從一個(gè)請(qǐng)求到另一個(gè)請(qǐng)求的信息或狀態(tài)。服務(wù)不應(yīng)該依賴于其他服務(wù)的上下文和狀態(tài)。當(dāng)產(chǎn)生依賴時(shí),它們可以定義成通用業(yè)務(wù)流程、函數(shù)和 數(shù)據(jù)模型。
(5)基于開放標(biāo)準(zhǔn)
當(dāng)前SOA的實(shí)現(xiàn)形式是Web服務(wù),基于的是公開的W3C及其他公認(rèn)標(biāo)準(zhǔn).采用第一代Web服務(wù)定義的SOAP、WSDL和UDDI以及第二代Web服務(wù)來實(shí)現(xiàn)SOA。
4.SOA包括的元素
面向服務(wù)的體系結(jié)構(gòu)中的角色包括服務(wù)請(qǐng)求者、服務(wù)提供者、服務(wù)注冊(cè)中心。服務(wù)請(qǐng)求者是一個(gè)應(yīng)用程序、一個(gè)軟件模塊或需要一個(gè)服務(wù)的另一個(gè)服務(wù)。它發(fā)起對(duì)注冊(cè)中心中的服務(wù)的查詢,通過傳輸綁定服務(wù),并且執(zhí)行服務(wù)功能。服務(wù)請(qǐng)求者根據(jù)接口契約來執(zhí)行服務(wù)。服務(wù)提供者是一個(gè)可通過網(wǎng)絡(luò)尋址的實(shí)體,它接受和執(zhí)行來自請(qǐng)求者的請(qǐng)求。它將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊(cè)中心,以便服務(wù)請(qǐng)求者可以發(fā)現(xiàn)和訪問該服務(wù)。服務(wù)注冊(cè)中心是服務(wù)發(fā)現(xiàn)的支持者。它包含一個(gè)可用服務(wù)的存儲(chǔ)庫(kù),并允許感興趣的服務(wù)請(qǐng)求者查找服務(wù)提供者接口。
面向服務(wù)的體系結(jié)構(gòu)中的每個(gè)實(shí)體都扮演著服務(wù)提供者、請(qǐng)求者和注冊(cè)中心這三種角色中的某一種(或多種)。面向服務(wù)的體系結(jié)構(gòu)中的操作包括發(fā)布、查找和綁定。
發(fā)布:為了使服務(wù)可訪問.需要發(fā)布服務(wù)描述以使服務(wù)請(qǐng)求者可以發(fā)現(xiàn)和調(diào)用它。
查找:服務(wù)請(qǐng)求者定位服務(wù).方法是查詢服務(wù)注冊(cè)中心來找到滿足其標(biāo)準(zhǔn)的服務(wù)。
綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)請(qǐng)求者繼續(xù)根據(jù)服務(wù)描述中的信息來調(diào)用服務(wù)。
面向服務(wù)的體系結(jié)構(gòu)中的構(gòu)件包括服務(wù)和服務(wù)描述。服務(wù)可以通過已發(fā)布接口使用服務(wù),并且允許服務(wù)使用者調(diào)用服務(wù)。服務(wù)描述指定服務(wù)使用者與服務(wù)提供者交互的方式。它指定來自服務(wù)的請(qǐng)求和響應(yīng)的格式。服務(wù)描述可以指定一組前提條件、后置條件和/或服務(wù)質(zhì)量(Q0S)級(jí)別。
5.面向服務(wù)SOA架構(gòu)的優(yōu)勢(shì)
SOA不同于現(xiàn)有的分布式技術(shù)之處在于大多數(shù)軟件商接受它并有可以實(shí)現(xiàn)SOA的平臺(tái)或應(yīng)用程序。SOA伴隨著無處不在的標(biāo)準(zhǔn),為企業(yè)的現(xiàn)有資產(chǎn)或投資帶來了更好的重用性。SOA能夠在最新的和現(xiàn)有的應(yīng)用之上創(chuàng)建應(yīng)用;SOA能夠使客戶或服務(wù)消費(fèi)者免予服務(wù)實(shí)現(xiàn)的改變所帶來的影響;SOA能夠升級(jí)單個(gè)服務(wù)或服務(wù)消費(fèi)者而無須重寫整個(gè)應(yīng)用,也無須保留已經(jīng)不再適用于新需求的現(xiàn)有系統(tǒng)??偠灾?,SOA以借助現(xiàn)有的應(yīng)用來組合產(chǎn)生新服務(wù)的敏捷方式,提供給企業(yè)更好的靈活性來構(gòu)建應(yīng)用程序和業(yè)務(wù)流程。其優(yōu)勢(shì)主要體現(xiàn)在如下幾個(gè)方面:(1)利用現(xiàn)有的資產(chǎn);(2)更易于集成和管理復(fù)雜性;(3)更快地整合現(xiàn)實(shí);(4)減少成本和增加重用。
SOA業(yè)務(wù)流程是由一系列業(yè)務(wù)服務(wù)組成的,可以更輕松地創(chuàng)建、修改和管理它來滿足不同時(shí)期的需要。SOA能夠在最新的和現(xiàn)有的應(yīng)用之上創(chuàng)建應(yīng)用;SOA能夠使客戶或服務(wù)消費(fèi)者免予服務(wù)實(shí)現(xiàn)的改變所帶來的影響;SOA能夠升級(jí)單個(gè)服務(wù)或服務(wù)消費(fèi)者而無需重寫整個(gè)應(yīng)用,也無需保留已經(jīng)不再適用于新需求的現(xiàn)有系統(tǒng)??偠灾?,SOA以借助現(xiàn)有的應(yīng)用來組合產(chǎn)生新服務(wù)的敏捷方式,提供給企業(yè)更好的靈活性來構(gòu)建應(yīng)用程序和業(yè)務(wù)流程。
結(jié)束語(yǔ)
SOA作為一種超技術(shù)的理念,需通過對(duì)具體技術(shù)的包容來體現(xiàn)它無所不包無所不通,唯一不變的就是其核心理念?;赟OA的企業(yè)業(yè)務(wù)系統(tǒng)不是一次建成的,SOA不僅僅是軟件系統(tǒng)的一種體系架構(gòu)思想,它也正成為一種文化。
參考文獻(xiàn)
[1] 張春霞 李旭東 徐濤.淺談面向服務(wù)架構(gòu)_SOA_的核心理念[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010.
[2] 尚建嘎.軟件系體結(jié)構(gòu)與設(shè)計(jì)實(shí)用教程[M].科學(xué)出版社2016.
[3] 陳旺.面向服務(wù)架構(gòu)SOA[J].IT技術(shù)應(yīng)用,2013.
[4] 張一清.面向服務(wù)的軟件體系架構(gòu)SOA[J].福建電腦,2007.
(作者單位:河南大學(xué)軟件學(xué)院)