張鋒軍,陳宇雷
(中國電子科技集團公司第三十研究所,四川成都610041)
服務發布和發現在SOA架構中的應用分析
張鋒軍,陳宇雷
(中國電子科技集團公司第三十研究所,四川成都610041)
SOA目前已成為一種主流的軟件架構,服務發布和發現作為實現SOA架構的一項重要基礎設施,其重要性不言而喻。介紹了基于UDDI(Universal Description,Discovery,Integration,統一描述、發現和集成協議)的服務發布和發現技術實現原理,對服務發布和發現協議、信息模型、與安全服務和管理服務的集成等實現技術進行了重點研究,提出了設計思路和方法。
服務 發布 發現 UDDI 安全服務
Web Services作為實現SOA架構的主要技術標準,得到了廣泛的研究和應用。在基于Web Services的SOA軟件架構中,服務消費者需要知道如何獲取服務、誰提供了服務、服務類型是什么、服務的質量如何、服務的安全策略等信息。服務提供者需要一個代理來實現額外信息的補充說明,同時服務消費者需要從這個代理那里獲取額外的信息。為了滿足這樣的需求,主流IT廠商和相關組織提出了ebXML、UDDI、Konark等多種服務發布發現實現機制。
根據其實現方式的不同,服務發布與發現的架構分為集中式(有中心,基于目錄,適用于企業級信息系統)、分布式(無中心,P2P架構,適用于移動網絡環境)和混合式(基于目錄的分布式架構,兼具前兩種方式的特點)三種,三種方式各有其適用場合和優缺點[1]。其中集中式架構以UDDI為代表,在企業級信息系統中應用最為廣泛。UDDI提供了一種發布與發現Web服務的標準方法,用于建立一個開發并且與平臺無關的框架以描述、發現和集成服務。
1.1 服務發布與發現在SOA架構中的作用
在基于Web Services的SOA系統服務交互過程中,有服務提供者、服務消費者和服務注冊中心三種角色。三種角色的交互具體涉及到服務發布、查找和綁定操作。一般情況下,服務提供者負責提供可通過網絡訪問的服務,服務提供者定義好Web Services的服務描述,并將它發布到服務注冊中心或者直接發布給服務消費者(在調用關系明確不變和服務數量少、關系簡單的情況下適用)。服務消費者從本地或者服務注冊中心進行服務查找操作,搜索到服務描述,然后根據服務描述完成與服務提供者綁定的操作,以調用相應的Web Services并與之交互。
UDDI作為服務注冊中心,對服務發布者和服務消費者分別提供了相應的發布者API和發現者API,供開發者使用。通過UDDI,SOA系統可以實現服務的重用、互操作、位置透明和服務之間的松耦合。
1.2 服務發布與發現的需求
服務發現的需求主要包含:服務的發布,服務的查詢,服務元數據的管理和安全集成[2]。
(1)服務發布
服務發布需要將諸如服務提供者、服務、服務實例及其相關元數據放入注冊機中。需要支持以下的機制:
1)手工服務發布——用戶或者操作員作為服務發布者,使用服務發布用戶界面把服務實體發布到注冊機。這是最直接的服務發布方式。
2)自動服務發布——服務發布者是一個應用程序(可能是服務自己本身),它使用注冊機提供的服務發布Web service或者API把服務實體發布到注冊機上。注冊機可以通過審查WSDL文件定義來獲得該服務的大部分信息。
3)動態更新服務實體——除了自動發布,服務可能需要動態更新它在注冊機中的服務定義和元數據,以便于注冊機中的服務實體能與實際服務運行狀態保持同步。
(2)服務查詢
1)手工,面向用戶的服務查詢:用戶和開發者需要能夠通過基于web的用戶界面瀏覽,搜索和審查服務和其他實體。
2)動態,運行時服務查詢:服務消費者可能需要在運行時使用注冊機提供的查詢Web Services接口發現服務。動態查詢可以獲取位置透明的服務,允許服務消費者在服務位置改變了的情況下,能夠連接到服務提供者。
3)持久化服務查詢:在某些情況下,服務消費者可能想要保持對注冊機上發布的某個特定發現實體的最新情況跟蹤,服務消費者應該能夠把該需求傳送給發現實體,并能近實時的收到該變化的通知。
4)除了查詢機制,服務查詢還應該有充分的表達能力來支持基于名字和ID的查詢,和基于任意元數據的復雜查詢。
(3)服務元數據管理
服務發現對服務提供者、服務本身和服務實體三者起到一個協調作用,對發布和查詢來說,需要支持以下等級的元數據[2-3]:
1)“白頁”元數據,主要是基本的資源定義,如身份標識,名字,位置和接口定義等。
2)“黃頁”元數據,主要指跟服務內容有關的元數據,描述了服務可以提供的功能等。這類元數據屬性包括主題,關鍵字,服務類型,目錄,時間和空間約束條件,或其它核心屬性。
3)“棕頁”元數據,這是指語義層面的元數據,描述了服務的業務/功能能力。這類元數據可以是定義良好的業務辭典、分類辭典、語義本體(ontologies)、XML schemas、領域數據模型或者業務規則等。這種元數據對上層業務應用消費者非常重要。
4)“綠頁”元數據,主要指服務的訪問能力屬性,即訪問該服務時所需要的技術和環境相關的元數據,這類元數據包括但不限于安全或QoP(Quality of Protection)需求,QoS屬性,傳輸協議等。
所有上述元數據都可以用XML表達。
1.3 發現服務協議
圖1給出了通用的發現服務協議棧。

圖1 通用服務發現協議棧Fig.1 Protocol stack of universal service discovery
如圖1所示,在Web Services技術體制中, SOAP作為消息傳輸協議,同時需要單播和多播綁定,多播可以基于SOAP-over-UDP和http over UDP。通過SOAP-over-UDP和http over UDP協議,只要在IP網絡環境下,底層傳輸不管是有線信道、無線信道都可以支持。SOAP之上是通用發現協議,可以執行服務發布、查詢和發現的通用操作。由于服務注冊節點要執行更多的功能,所以需要定義一些協議輪廓信息,包括統計報告、注冊節點列表信息的交換、上傳服務分類方法以及服務注冊信息模型擴展等。協議棧的最上層是服務描述模型和注冊信息模型,其中服務描述模型可能同時存在多種,如基于UDDI和ebXML Registry的混合模型[4]。
在UDDI服務發現標準體系下,服務消費者實現查詢API,其主要操作包括:通過UUID查找服務、通過UUID獲取服務、通過類型查找服務、通過名稱查找服務等。服務提供者實現服務發布的API,其主要操作為發布、更新、刪除服務發布信息及相關內容。
在實際工程應用中,由于僅依賴關鍵字匹配進行服務查詢的查全率和查準率比較低,在具體實現中,可以進行元數據的擴展(上文中提到的棕頁和綠頁元數據),采用多種實現手段提高UDDI服務發現的智能性、高效性和準確性。如在服務元數據信息模型中采用OWL-S等語義本體描述語言和推理機制,通過服務關鍵字的匹配、語義的匹配和QoS屬性(如服務的響應時間、可用性、可靠性、安全性、信譽度等)的匹配來實現基于服務QoS的、高效智能的服務查詢和動態服務組合等[5-7]。
1.4 發布與發現服務的信息模型
UDDI注冊機以XML的格式存儲四類核心數據,這些數據定義了要使用某個Web服務所需的各種信息。這四類數據的層次關系如圖2所示。

圖2 UDDI的四種核心數據Fig.2 Four core data structures of UDDI
UDDI有兩類頂層數據。一個是業務實體(Bussiness Entity),另一個是技術模型(tModel)。一個業務實體內包含若干個業務服務(Bussineess Service),一個業務服務內又包含若干個綁定模板(Binding Template)。對于一個綁定模板而言,它又包含一個或多個技術模型的引用,從而跟某個技術模型關聯起來。
目前的信息模型研究熱點在于采用本體來進行服務行為模型、多屬性關系模型和協作上下文模型的定義。在語義化模型中,依據本體的形式化表示方法對服務的靜態描述和動態交互模型進行統一的語義模型定義,從而為用戶提供按需匹配和基于QoS評價選擇的服務發現方法,以及基于協作上下文模型的服務組合方法[8]。
基于UDDI的發布與發現服務定義了兩類服務接口:一類是查詢服務,另一類是發布服務。
(1)查詢服務
查詢服務InquiryService用于查詢UDDI注冊機中存儲的各類數據實體。InquiryService主要包括對綁定模板、業務實體、服務實體和技術模型進行find_xxx和get_xxxDetail的操作。
(2)發布服務
發布服務PublishService用于刪除或更新UDDI注冊機中存儲的各類數據實體,此外還發布服務相關的安全操作。PublishService主要包括對綁定模板、業務實體、服務實體和技術模型等數據的刪除操作和保存操作,以及discard_authToken、get_authToken、get_registeredInfo等安全操作。
2.1 基于服務發布與發現的SOA系統集成
基于UDDI的典型SOA集成框架如圖3所示。
服務提供者通過UDDI發布服務發布Web Service注冊信息到UDDI注冊機。
應用開發者到UDDI服務查詢門戶瀏覽或查找需要訪問的服務。UDDI服務查詢門戶發起服務查詢請求,UDDI查詢服務返回匹配的服務實例或組合服務實例(必要時UDDI查詢服務需要進行語義模型的訪問、匹配和解析)。
開發者在開發中使用獲得的目標服務實例的端點信息配置它的應用訪問地址。配置好的應用被部署到門戶服務器。當應用運行起來后,最終用戶登錄到該門戶開始使用該應用。該應用作為Web Service消費者,綁定到目標服務實例,并在用戶端發起SOAP請求,使用該服務提供的功能。
在該典型應用場景中,服務查詢是在開發階段發生的,被發現的服務信息是靜態的、硬編碼到服務消費者應用中的。

圖3 基于UDDI的SOA集成框架Fig.3 SOA integration framework based on UDDI
2.2 發布與發現服務與安全服務的集成
對于安全敏感的企業級應用來說,服務發現與服務安全緊密相關,這種相關性分為兩個方面:一方面,服務發布和查詢API和注冊機本身需要安全機制和策略來進行保護;另一方面,在服務消費者和服務提供者之間要發現彼此的安全特性,才能建立信任關系。這需要在SOA架構實現中,滿足以下需求[2,3,9]:
(1)保護發現服務接口
對于發布和查詢來說,服務接口需要以下技術手段進行安全防護:
1)建立發布者、查詢者和發現服務提供者的身份標識。
2)服務發布和查詢的請求和響應是經過鑒別的,其消息完整性是經過檢查的。
3)請求和響應需要經過訪問控制策略授權。
4)發現實體是可信的。服務擁有者(通常是服務發布者)要能夠保證所發布的實體可信。可采用數字簽名等手段,以便服務消費者能對這些實體有某種程度的信任。
(2)對敏感的發現實體的保護
注冊機要與安全服務、策略進行集成,以采取措施保證服務注冊機中的服務元數據包含的敏感信息不被未授權的團體得到。
2.2.1 保護服務接口
圖4分析了使用SOAP消息句柄來保護UDDI服務注冊中心查詢服務的流程。
消息鑒別句柄校驗了查詢請求的簽名,Policy Enforcement Handler基于服務級別的授權策略對該請求授權,Message Signing Handler簽名查詢請求。另外,Service Filtering Handler被用來提供基于角色的數據級別的訪問控制。
2.2.2 保護發現實體
另一方面的安全是要保證發布到UDDI注冊機的發現實體的完整性和真實性。UDDI3.0允許在UDDI數據結構(如businessService,bindingTemplates及tModels等UDDI數據結構)中使用數字簽名。服務查詢者可以通過過濾查詢,只請求經過簽名的數據。這樣服務查詢者和服務提供者都可以信任發現實體數據的完整性和正確性。
2.3 發布與發現服務與管理服務的集成
管理服務是指對基于Web Services的SOA系統的管理,這對于企業級SOA系統的運行維護尤為重要。管理服務以“管理者-代理模型”為基礎,在WSDL中定義管理接口,將管理應用作為Web服務,用WSDL描述可管理Web服務,并且使用服務注冊中心和WSDL來發現Web服務。因此管理Web服務的時候,必須遵守以下一些特定的原則:
1)分離管理接口。Web服務的發現和綁定過程是由接口來驅動的。在WSDL文件中接口被描述為端口類型,當在UDDI注冊機上查詢一個Web服務的時候,它的目標就是找到在WSDL文件中描述的接口,所以管理服務的管理操作應當通過分離的接口描述和發布Web服務接口來暴露給用戶。
2)通過運行時框架收集數據。Web服務通過SOAP協議來調用和發送數據。SOAP消息處理器和相關的Web服務基礎結構形成了一個控制端,它應允許自動地采集管理信息。
3)使用事件收集器。對一個管理系統而言, Web服務需要為發生的一些重要事件發送信息:包括故障事件、配置數據的改變、操作的調用等。
2.3.1 管理服務接口標準
服務管理基于WSDM(Web Services Distributed Management)標準來實現。WSDM標準分為兩部分:MUWS(Management Using Web Services)和MOWS(Management Of Web Services)。MOWS提供了管理Web服務的標準接口定義。MOWS基于MUWS標準定義的概念和系統,同時也添加了管理Web服務特別需要的資源和功能。MOWS組件提供了支持遠程管理Web服務的方法。
MOWS標準提供了將Web服務作為資源來管理的相關定義,并且在MOWS標準中還使用了許多由MUWS標準定義的概念和結構,添加了管理Web服務所特別需要的資源和功能[10-11]。
2.3.2 服務管理與發現服務集成
在對服務的管理中,服務管理與發現服務集成的實現框架如圖5所示。

圖5 服務管理與發現服務集成的實現框架Fig.5 Implementation framework of service management and service discovery integration
圖5對標準的基于UDDI的服務查詢方式進行了基于策略和語義本體的模型和功能擴展。服務策略主要用于描述服務的非功能的、靜態的狀態或能力,如QoS級別等。其中,主要組件是基于策略的發現代理、策略服務器、本體查詢模塊、規則推理模塊以及WSDM管理服務,即動態數據采集模塊。其運行過程如下:
基于策略的發現代理負責接收來自服務查詢客戶端的請求,發現代理根據服務的功能需求查詢UDDI注冊機,得到服務的WSDL的訪問地址。根據地址獲取到WSDL后,提取WSDL中以擴展WSPolicy形式提供、以OWL描述的服務策略地址,發現代理將來自客戶端的請求策略和通過UDDI查詢到的服務策略地址組合成策略決策請求發往策略服務器[12]。
策略服務器收到策略決策請求后,從提供策略的地址下載策略,并將得到的策略(包括請求策略和服務策略)發往本體查詢模塊進行本體推理,最終得到基于策略相關元素組成的策略集合,反饋給策略服務器。然后,策略服務器根據策略集合中對服務QoS狀態等信息或能力的需求,訪問WSDM管理服務,獲取服務的QoS狀態等動態管理參數。
策略服務器將從本體查詢模塊得到最終策略集合,以及從WSDM管理服務中得到服務的QoS等動態參數轉發給規則推理模塊進行規則推理,并由規則推理模塊返回推理結果。策略服務器根據推理結果得到符合服務請求的服務地址,將其返回給基于策略的發現代理。基于策略的發現代理再向服務的請求者反饋得到的服務WSDL地址,服務請求者就可以根據返回的WSDL地址進行服務的調用了。
文中對基于SOA架構的企業級信息系統中,服務發布與發現的應用和實現技術進行了分析和研究,介紹了服務發布和發現技術的實現策略和方法,并在相關項目中進行了驗證和實現。后續將繼續對基于語義的服務元數據的管理和策略模型實現進行深入研究,實現基于服務質量、安全特性和訪問控制策略的服務發布和發現機制。
[1] 魏強,金芝,李戈,等.物聯網服務發現初探:傳統SOA的可行性和局限性[J].計算機科學與探索,2013, 7(02):97-110.
WEI Qiang,JIN Zhi,LI Ge.Preliminary Study of Service Discovery in Internet of Things:Feasibility and Limitation of SOA[J].Journal of Frontiers of Computer Science and Technology,2013,7(02):97-110.
[2] OASIS.uddi_v3,UDDI Spec Technical Committee Draft, Dated 20041019,UDDI version 3.0.2[S].America: OASIS Open,2004.
[3] Booz A H.Service Discovery Core Enterprise Services (CES)Architecture[R].DISA:America,2004.
[4] Tommy G.Assessing Dynamic Service Discovery in the Network Centric Battlefield[C]//Military Communications Conference,MILCOM 2007,IEEE.Orlando,FL, USA:[s.n.],2007.
[5] 魏娟杰.基于Web服務發現的企業應用集成研究[D].東營:中國石油大學,2009.
WEI Juan-jie.Research on Enterprise Application Integration Based on Web Service Discovery[D].China University of Petroleum:China.2009.
[6] 劉莉平.動態Web服務組合關鍵技術研究[D].長沙:中南大學,2011.
LIU Li-ping.Research on Key Technologies of Dynamic Web Service Composition[D].China:Central South University,2011.
[7] 劉昌鑫,歐陽春娟,譚云蘭.基于Web Service的QoS本體研究[J].通信技術,2012,43(02):160-162.
LIU Chang-xin,OUYANG Chun-juan,TAN Yun-lan.A-nalysis on QoS Ontologies for Web Services[J].Communications Technology,2012,43(02):160-162.
[8] 曲明.基于本體的服務發現與組合方法研究[D].吉林:吉林大學,2012.
QU Ming.Research on Ontology-based Service Discoveryand Composition[D].China:Jilin University,2012.
[9] OASIS.{WSS:SOAP Message Security}-{1.0}.Web Services Security:SOAP Message Security 1.0(WS-Security 2004)OASIS Standard 200401[S].America: OASIS Open,2004.
[10] OASIS.cd-wsdm-muws-part1-1.0,Web Services Distributed Management:Management Using Web Services(MUWS 1.0)Part 1 Committee Draft,January 11th 2005[S].America:OASIS Open,2004.
[11] OASIS.cd-wsdm-mows-1.0,Web Services Distributed Management:Management of Web Services(WSDMMOWS)1.0 CommitteeDraft[S].America:OASIS Open,2004.
[12] NATENAPA S,TWITTIE S,KUNAL V.On Using WSPolicy,Ontology and Rule Reasoning to Discover Web Services[C]//IFIP International Conference.Thailand: Bangkok,2004.
ZHANG Feng-jun(1975-),male,senior engineer,majoring in network management, software engineering.
陳宇雷(1971—),女,高級工程師,主要研究方向為網絡管理,軟件工程。
CHEN Yu-lei(1971-),female,senior engineer,majoring in network management,software engineering.
Application Analysis on Service Published and Discovery Technology in SOA
ZHANG Feng-jun,CHEN Yu-lei
(No.30 Institute of CETC,Chengdu Sichuan 610041,China)
SOA now becomes a mainstream software architecture.As a very important infrastructure of SOA,the service release and discovery is significant indeed.This paper describes the technical mechanism of UDDI,with emphasis on UDDI protocol,information model and the integration with security service and management service,and finally provides some design ideas and design methods.
service;publish;discovery;UDDI;security service
TP311
A
1002-0802(2014)03-0275-06
10.3969/j.issn.1002-0802.2014.03.009

張鋒軍(1975—),男,高級工程師,主要研究方向為網絡管理,軟件工程;