陳建虎+肖成龍+宋好+魏春林
摘要:Web Service體系的日趨成熟化使得該技術(shù)廣泛應(yīng)用于網(wǎng)絡(luò)信息的傳輸,該文在深入研究Web Service體系架構(gòu)及所對應(yīng)技術(shù)框架的基礎(chǔ)上,通過分析Web Service體系的優(yōu)點(diǎn)以及SOA系統(tǒng)架構(gòu)面向服務(wù)的設(shè)計(jì)思想,從面向服務(wù)的技術(shù)架構(gòu)出發(fā),提出了一種基于SOA的Web Service框架體系。
關(guān)鍵詞:Web Service體系;SOA;面向服務(wù);層次模型
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)29-0026-03
1 概述
近些年,隨著B2B、B2C等電商模式的迅猛發(fā)展,越來越多的傳統(tǒng)企業(yè)都加入到該行列中,當(dāng)然這種發(fā)展離不開Internet的普及,更離不開Web Service技術(shù)的支持,Web Service正在改變著Internet,而Internet正改變著世界。Web Service技術(shù)將不同類型 、構(gòu)建于不同時(shí)期的異構(gòu)系統(tǒng)進(jìn)行靈活的整合,這使得跨平臺(tái)的操作更加容易。
同時(shí),逐漸興起的軟件工程方法SOA(面向服務(wù)的架構(gòu))具有松散耦合、粗粒度、共享服務(wù)等特點(diǎn),這為多業(yè)務(wù)、跨平臺(tái)間的應(yīng)用通信提供了一種很好的解決方案。而Web Service體系的成功應(yīng)用使得SOA這一理論架構(gòu)模型得到很好的驗(yàn)證。
2 Web Service
2.1 Web Service的邏輯架構(gòu)
利用層次化的方法進(jìn)行分析,我們可以將Web Service的工作流程抽象為一個(gè)三層結(jié)構(gòu)的模型,其結(jié)構(gòu)如圖1所示。
其中每一層次都對應(yīng)著本層的工作核心,它們可以由一個(gè)或多個(gè)工作核心并行組成。在這個(gè)抽象模型中,每個(gè)層次都有其獨(dú)立的接口,各層服務(wù)通過接口向下調(diào)用服務(wù)并向上提供服務(wù),各層功能如下所示。
1) 應(yīng)用層。提供使用界面,方便用戶進(jìn)行操作。將Web Service的業(yè)務(wù)邏輯進(jìn)行封裝,使其成為傳統(tǒng)的桌面應(yīng)用程序,并對系統(tǒng)功能的提供者進(jìn)行隔離。
2) 業(yè)務(wù)層。是整個(gè)Web Service系統(tǒng)的核心。實(shí)現(xiàn)具體的業(yè)務(wù)流程以及對傳輸?shù)臄?shù)據(jù)進(jìn)行處理,并將處理結(jié)果返回給應(yīng)用層。
3) 數(shù)據(jù)層。提供Web Service系統(tǒng)中的數(shù)據(jù)服務(wù),實(shí)現(xiàn)所有數(shù)據(jù)的存儲(chǔ)和驗(yàn)證,保證整個(gè)系統(tǒng)中有充足的數(shù)據(jù)信息和數(shù)據(jù)邏輯[1]。
層次化的模型,使非常抽象的Web Service系統(tǒng)具體化,可視化,從而讓系統(tǒng)的搭建、擴(kuò)展、維護(hù)更加方便。但為了更加具體的研究Web service系統(tǒng),我們將業(yè)務(wù)層及數(shù)據(jù)層進(jìn)行更詳細(xì)的層次劃分。
2.1.1 業(yè)務(wù)層及技術(shù)架構(gòu)
業(yè)務(wù)層是整個(gè)Web Service系統(tǒng)的核心。在此對該層進(jìn)行詳細(xì)的劃分,各層分別實(shí)現(xiàn)不同的功能,高層調(diào)用下層服務(wù),而下層向高層提供服務(wù)。具體業(yè)務(wù)層及技術(shù)架構(gòu)如圖2所示。
1) 服務(wù)工作流層。此層主要利用Web Service工作流語言(WSFL)對Web Service在工作流中如何相互作用進(jìn)行描述,并對系統(tǒng)中處理服務(wù)到服務(wù)的通信進(jìn)行標(biāo)準(zhǔn)化定義。
2) 服務(wù)發(fā)現(xiàn)層。服務(wù)發(fā)現(xiàn)層通過靜態(tài)方式獲取WSDL文檔從而發(fā)現(xiàn)服務(wù)。WSDL文檔是服務(wù)發(fā)布層所發(fā)布的以本地文件形式存在的一種文檔。該層是基于服務(wù)發(fā)布層的,只有服務(wù)通過發(fā)布層發(fā)布,才能發(fā)現(xiàn)該服務(wù)。
3) 服務(wù)發(fā)布層。該層主要用于服務(wù)的發(fā)布,服務(wù)提供者將WSDL文檔發(fā)送給服務(wù)客戶端,或者,服務(wù)提供者也可以將WSDL文檔發(fā)布到本地的WSDL注冊庫或UDDI注冊中心。服務(wù)客戶端也可以通過這些注冊庫來獲取該文檔。
4) 服務(wù)描述層。該層提供了Web Service具體的調(diào)用方法。雖然WSDL已經(jīng)對服務(wù)進(jìn)行了描述,但這種描述僅是一個(gè)基本的服務(wù)描述手段,它僅僅將服務(wù)分為服務(wù)實(shí)現(xiàn)和服務(wù)接口這兩部分。所以該層給出了更為詳細(xì)的服務(wù)調(diào)用方法。
5) 消息層。該層又稱為基于XML的消息層,即該層使用的是基于XML的消息協(xié)議SOAP。通過SOAP協(xié)議,對Web Service系統(tǒng)中的服務(wù)消息進(jìn)行發(fā)布(Publish)、查找(Find)、綁定(Bind)等操作。
6) 數(shù)據(jù)模型層。該層主要采用基礎(chǔ)的數(shù)據(jù)表現(xiàn)方式XML來對Web Service系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)進(jìn)行模型化的描述。
7) 數(shù)據(jù)表現(xiàn)層。該層使用全球通用的可擴(kuò)展標(biāo)注語言XML對整個(gè)Web Service上層協(xié)議所提供的數(shù)據(jù)或信息進(jìn)行統(tǒng)一的描述,保證了數(shù)據(jù)在傳輸過程中格式的一致性,對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。
8) 網(wǎng)絡(luò)傳輸層。該層是Web Service的基礎(chǔ)。Web Service要進(jìn)行服務(wù)的共享和數(shù)據(jù)的傳輸,前提是保證不同數(shù)據(jù)從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī)之前其格式是能被相互識別的,而網(wǎng)絡(luò)傳輸層就是在數(shù)據(jù)傳輸前利用統(tǒng)一的、標(biāo)準(zhǔn)的HTTP、SMTP、FTP等網(wǎng)絡(luò)協(xié)議對數(shù)據(jù)進(jìn)行最后的封裝,從而對所傳輸?shù)臄?shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化的分類。
2.1.2 數(shù)據(jù)層及技術(shù)架構(gòu)
數(shù)據(jù)層是Web Service的底層基礎(chǔ),它為整個(gè)系統(tǒng)提供了數(shù)據(jù)支持。數(shù)據(jù)層可以詳細(xì)劃分為數(shù)據(jù)訪問層和數(shù)據(jù)存儲(chǔ)層。數(shù)據(jù)層邏輯架構(gòu)及技術(shù)如圖3所示。
1) 數(shù)據(jù)訪問層。該層又叫做DAL(Data Access Layer)層,其主要功能是實(shí)現(xiàn)對數(shù)據(jù)庫的訪問并通過數(shù)據(jù)訪問接口對數(shù)據(jù)表進(jìn)行增、刪、改、查等操作。
2) 數(shù)據(jù)存儲(chǔ)層。該層主要負(fù)責(zé)對數(shù)據(jù)進(jìn)行存儲(chǔ),通過數(shù)據(jù)訪問層既可以將數(shù)據(jù)存儲(chǔ)到該層,也可以對該層的數(shù)據(jù)進(jìn)行訪問,從而將數(shù)據(jù)返回到數(shù)據(jù)訪問層進(jìn)行處理。傳統(tǒng)意義上該層主要使用SQL、Oracle等數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的存儲(chǔ)。
2.2 Web Service的優(yōu)點(diǎn)
Web Service系統(tǒng)的優(yōu)點(diǎn)使得Web Service在各個(gè)平臺(tái)上都能得到廣泛的應(yīng)用,我們通過對 Web Service系統(tǒng)框架的研究并對其進(jìn)行詳細(xì)的層次劃分,可以很明顯看出這種框架及技術(shù)體系所具有的巨大優(yōu)勢,其主要優(yōu)點(diǎn)如下。endprint
1) 跨平臺(tái)性。Web Service這種分層的體系結(jié)構(gòu)使得該結(jié)構(gòu)更注重服務(wù)的模塊化與功能化,而不再關(guān)注具體技術(shù)的實(shí)現(xiàn)細(xì)節(jié),從而保證了 Web Service系統(tǒng)的跨平臺(tái)性,比如使用Ubuntu操作系統(tǒng)的用戶,即能夠訪問一臺(tái)Windows服務(wù)器上的Web服務(wù),也能夠請求一臺(tái)Linux服務(wù)器上的Web服務(wù)。
2) 跨防火墻的通信。利用Web Service進(jìn)行信息的傳輸,這樣用戶就可以在客戶端直接調(diào)用中間層組件與服務(wù)器端進(jìn)行通信,此時(shí)Web Service作為通信過程中的中間層組件,從而可以跨越客戶端和服務(wù)器之間的防火墻或者代理服務(wù)器。
3) 應(yīng)用程序集成。Web Service將應(yīng)用程序的邏輯部分進(jìn)行分類并加以整合,這樣就可以讓不同平臺(tái)上不同的服務(wù)重用這些應(yīng)用程序。這種形式充分體現(xiàn)了Web Service系統(tǒng)模塊化、分層的思想,使得在開發(fā)過程中更加高效。
3 基于SOA的Web Service
3.1 SOA的概念
從概念上來講,面向服務(wù)的架構(gòu)(SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口系起來。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互[2]。
同以往以技術(shù)實(shí)現(xiàn)為核心的組件模式、對象模式相比,SOA不再考慮這種細(xì)粒度的方式,而是更注重以服務(wù)為模塊的粗粒度的實(shí)現(xiàn)。它根據(jù)用戶所需的服務(wù)對服務(wù)組件進(jìn)行松散耦合的粗粒度的分布式部署,從而對不同的服務(wù)模塊進(jìn)行組合和使用。
SOA是一種松散耦合的、粗粒度的服務(wù)框架。該框架不涉及底層編程和底層通信,它只是對服務(wù)之間的通信進(jìn)行簡單、精確的接口定義。所以SOA框架可以快速、高效的設(shè)計(jì)出Web Service所需的各種組件及部署形式,從而可以搭建出一個(gè)更加可靠、更具有重用性的業(yè)務(wù)系統(tǒng)。
3.2 SOA的體系結(jié)構(gòu)
SOA是一種松散藕合的軟件體系結(jié)構(gòu),在這種體系結(jié)構(gòu)中,由各自獨(dú)立可重用的服務(wù)去構(gòu)成系統(tǒng)功能。這些服務(wù)向外公布的接口有著明確的意義,軟件的開發(fā)是通過對這些實(shí)現(xiàn)透明的接口的調(diào)用來完成。其體系結(jié)構(gòu)由服務(wù)請求者、服務(wù)提供者、服務(wù)注冊中心這三層構(gòu)成,如圖4所示[3]。
在SOA體系結(jié)構(gòu)中,層次體系包括服務(wù)請求者、服務(wù)注冊中心、服務(wù)提供者這三層。
服務(wù)請求者一般是指進(jìn)行服務(wù)請求的應(yīng)用程序或服務(wù),包括瀏覽器、客戶端等。它對注冊中心所記錄的服務(wù)信息進(jìn)行查詢后,若找到所需服務(wù)便會(huì)根據(jù)查詢到的接口說明信息將與服務(wù)提供者所對應(yīng)的服務(wù)進(jìn)行綁定并調(diào)用該服務(wù)。
服務(wù)注冊中心處于中心位置,該層提供了展示服務(wù)的功能[4]。服務(wù)請求者通過查詢存儲(chǔ)有服務(wù)信息的注冊中心發(fā)現(xiàn)所要調(diào)用服務(wù)的接口信息,并將查詢結(jié)果返回給服務(wù)請求者。同時(shí),服務(wù)注冊中心存儲(chǔ)服務(wù)提供者所發(fā)布的服務(wù)信息,且服務(wù)提供者可以對服務(wù)注冊中心進(jìn)行相關(guān)操作。
服務(wù)提供者是創(chuàng)建服務(wù)的實(shí)體。該層向服務(wù)注冊中心發(fā)布服務(wù)接口信息以供服務(wù)請求者在服務(wù)注冊中心發(fā)現(xiàn)該服務(wù),同時(shí),從服務(wù)請求者處接受服務(wù)綁定請求,若綁定請求通過則向服務(wù)請求者提供服務(wù),并且可以遠(yuǎn)程執(zhí)行所請求的服務(wù)。
3.3 兩者結(jié)合的可行性
Web Service是一種自描述、自包含、模塊化的軟件組件系統(tǒng),它使用通用、標(biāo)準(zhǔn)的可擴(kuò)展標(biāo)記語言(XML)來描述服務(wù)功能,提供數(shù)據(jù)信息,以簡單對象訪問協(xié)議(SOAP)在分布式環(huán)境下進(jìn)行信息交換,形成一個(gè)在線應(yīng)用服務(wù)API。
SOA系統(tǒng)架構(gòu)是一種模型,它的出現(xiàn)克服了面向?qū)ο蠹軜?gòu)模型以功能為核心的緊密耦合的缺點(diǎn)。SOA的整體設(shè)計(jì)思想是面向服務(wù)的,所以說SOA是更高層次意義上的架構(gòu)。
這種基于標(biāo)準(zhǔn)、松散藕合、共享服務(wù)、粗粒度的架構(gòu)思想與Web Service體系結(jié)構(gòu)有著高度的一致性[5]??梢哉fWeb Service是SOA架構(gòu)的具體實(shí)現(xiàn),而SOA為Web Service提供了架構(gòu)理論基礎(chǔ)[6]。所以依據(jù)SOA體系架構(gòu)將Web Service層次進(jìn)行重組,進(jìn)而讓W(xué)eb Service系統(tǒng)架構(gòu)與SOA體系架構(gòu)保持高度的一致性,這樣使得在以后搭建Web Service系統(tǒng)時(shí)更加高效、迅速,這樣的結(jié)合在Web Service系統(tǒng)的傳播方面有著非常高的實(shí)用價(jià)值。
3.4 基于SOA的Web 框架
Web Service系統(tǒng)執(zhí)行流程從邏輯上總體可分為應(yīng)用層、業(yè)務(wù)層和數(shù)據(jù)層,對應(yīng)的業(yè)務(wù)層和數(shù)據(jù)層也可劃分為更加詳細(xì)的層次,但這種分層從本質(zhì)上來說是面向功能的分層,它更注重的是需求的實(shí)現(xiàn),所以我們將SOA架構(gòu)與Web Service體系相結(jié)合,將Web Service重新劃分為一個(gè)基于SOA的三層模型結(jié)構(gòu),使其面向流程,并且可以很好地適應(yīng)需求的變化,在需求改變的基礎(chǔ)上,只需要增加新需求的功能模塊,而不是將整個(gè)體統(tǒng)都進(jìn)行重新搭建?;赟OA的Web系統(tǒng)架構(gòu)如圖5所示,這樣就為具體的Web Service系統(tǒng)的搭建提供了一個(gè)定義良好、可操作的技術(shù)框架。
4 結(jié)束語
本文在深入研究 Web Service系統(tǒng)架構(gòu)的基礎(chǔ)上,分析Web Service系統(tǒng)存在的優(yōu)缺點(diǎn),結(jié)合已有的SOA體系架構(gòu),通過研究這兩者之間的關(guān)系,提出了一種基于SOA的Web Service體系架構(gòu)。該架構(gòu)將Web Service系統(tǒng)于SOA架構(gòu)相結(jié)合,使得新的架構(gòu)結(jié)構(gòu)合理,簡單實(shí)用,能夠滿足各子系統(tǒng)的業(yè)務(wù)異構(gòu)性和靈活性的需求,這樣保證了系統(tǒng)的易擴(kuò)展性。并且該系統(tǒng)架構(gòu)利用多接口的數(shù)據(jù)調(diào)用可以有效地緩解數(shù)據(jù)處理的壓力,減少了對業(yè)務(wù)的干擾,提高了系統(tǒng)的魯棒性,有利于系統(tǒng)的擴(kuò)展、重組和維護(hù),進(jìn)一步將Web Service系統(tǒng)的工作集中在服務(wù)和應(yīng)用的封裝上。
參考文獻(xiàn):
[1] 郭文越,陳虹,劉萬軍.基于SOA的數(shù)據(jù)共享與交換平臺(tái)[J].計(jì)算機(jī)工程,2010(10).
[2] 邢少敏,周伯生.SOA研究進(jìn)展[J].計(jì)算機(jī)科學(xué),2008,35(9):185-188.
[3] 郎炯,劉宴兵,熊仕勇.基于SOA軟件架構(gòu)的數(shù)據(jù)集成方法[J].計(jì)算機(jī)應(yīng)用,2010,30(9):102-105.
[4] 陳剛,馬志遠(yuǎn),郭昊翾.SOA技術(shù)在標(biāo)準(zhǔn)資源服務(wù)平臺(tái)中的應(yīng)用研究[J].標(biāo)準(zhǔn)科學(xué),2013(1).
[5] 王先平,張永芬.基于SOA架構(gòu)的分布式聚類算法的Web服務(wù)模型研究[J].數(shù)字技術(shù)與應(yīng)用,2014(4).
[6] 劉永慶.一種基于SOA架構(gòu)的訪問控制安全服務(wù)模型研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2016(5).endprint