倪 奕
(中國電子科技集團公司第三十研究所,四川 成都 610041)
傳統的通信業務通常是由諸如SIP消息之類的信令消息觸發。而通信類的 Web服務則通常是一般電信功能的 Web服務接口,由SOAP消息進行觸發,它們能利用電信域的各種網絡資源,并在互聯網上發布和使用。
以下就是一些電信業務暴露為通信Web服務的例子:
第三方呼叫:提供由第三方發起和管理的、在兩個用戶間建立會話的能力。
多媒體會議:提供在一個會話中發起兩個或多個用戶的音/視頻會議的能力。
消息:提供發送即時消息、SMS和MMS能力的一系列Web服務。
呈現:提供獲取用戶在網絡中的可達信息的能力。
使用標準的Web服務來抽象電信網絡能力,業務提供者能為電信領域之外的 IT開發人員提供創建創新型業務的新的可能性。
Web服務標準也使得電信運營商能為第三方提供可控、可靠的電信網絡能力,如狀態呈現和呼叫控制等能力。
多個國際組織對如何在電信領域使用 Web服務提交了各自的標準:
ParlayX標準:該標準是基于Web Services的簡化版本的電信API集,已經標準化了一些最常見的信令業務,如第三方呼叫控制、呼叫通知、SMS、MMS等[1]。
OMA建議了一些OMA Web Services引擎,并且它規范了移動終端與Web Services的交互方式。
W3C提供了 WS-Addressing 規范,該規范提供了描述Web Services和消息的機制。
OASIS論壇定義了一系列規范,如 WS-Notification及WS-ResourceFramework等,這些規范是開發通信 Web Services的重要基礎。
JBoss是一個用純Java編寫、開源、遵循J2EE規范、得到廣泛使用的應用服務器軟件。JBoss起初只是一個 EJB容器,后來逐步發展成為一個具有復雜功能的應用服務器,包含內置的Web服務器Tomcat、EJB容器、內置的Java關系型數據庫Hypersonic、Java消息服務(JMS)、Java事務接口/Java事務服務等功能[2]。
另外,JBoss還支持通信業務服務器 Mobicents。“Mobicents是目前第一個也是唯一一個被JSLEE1.1規范認證的開源VoIP平臺,Mobicents為電信應用提供了強有力的組件模型和執行環境,通過支持 J2EE促進語音、視頻、數據在下一代智能應用中的融合”[3]。JSLEE包含諸如業務構建塊(SBB),資源適配器(RA)、業務(Service)以及事件(Event)等組件。SBB是可重用的組件,并對特定事件敏感,它們接收這些事件并處理它們。RA是連接SLEE平臺到特定協議棧的連接器,如SIP RA和HTTP RA。事件定義了在JSLEE組件之間交互的消息。
Web服務是一種建立分布式應用的平臺,其主要目標是在已經存在的不同平臺和系統的基礎上建立一個與平臺和開發語言無關的統一平臺,其他各種應用通過該平臺實現相互連接和集成[4]。通過Web Services技術,可以使由不同廠商開發、運行在不同操作系統上、部署在不同的設備之上、采用不同的編程語言的所部署的軟件和系統都能夠通過Web Services構筑的通用平臺實現交互,實現分布式計算和處理。其體系結構如圖1所示。

圖1 Web Services體系結構
Web Services體系結構是3種角色之間進行的交互,即服務提供者、服務請求者、服務注冊中心,交互包括發布、發現、綁定這3個動作。
XML是Web Services中表示數據的基本格式,它解決了數據表示的問題。
SOAP描述了數據類型的消息格式和一套串行化規則,包括結構化類型和數組。
WSDL是描述 Web Services功能的協議,描述了Web Services所采用的協議和格式。
UDDI的核心是UDDI服務注冊中心,它使用XML文檔描述企業及其提供的Web Services。
Web服務通常都被認為是通過同步的請求-響應機制來進行訪問的,這樣使得Web服務的實現與使用都很簡單。與之相反,通信業務從本質上來說是異步的和事件驅動的,是通過一系列的消息發送和接收來實現業務的交付過程。比如說,如搜索這樣的Web服務可以通過簡單的搜索請求來訪問,但對第三方呼叫這樣的通信業務來說就需要完成一系列的事件傳遞(發送makeCall事件,接收處理中、等待中以及響應事件并交換媒體能力)。所以,把通信業務作為同步的Web服務進行付就會遇到一些問題。
研究的體系架構以同步Web服務的方式交付通信業務,并簡化通信業務與普通Web服務和web應用的整合過程。體系主要包含通信業務服務器(采用 Mobicents,用于部署通信業務),Web服務器(采用Tomcat,用于部署Web服務及應用),企業服務總線 ESB[5]使用 JBoss ESB,并采用OpenIMS構建 IMS核心網。提出的體系的部署架構如圖 2所示。

圖2 體系部署架構
首先,Web服務作為通信業務(如第三方呼叫控制業務)的代理先向服務注冊中心進行注冊。業務流程從 http客戶端開始。客戶端向Web服務器上部署的Web應用發送請求以執行某個服務。Web應用通過UDDI協議查詢適合的Web服務并與之綁定,并請求特定的Web服務的執行。Web服務是同步服務,但它以異步的方式與通信業務進行交互以觸發通信業務。這樣通信業務開始執行,并在兩個IMS UA之間發起呼叫。呼叫的狀態輸出給Web服務客戶端以及HTTP客戶端,這樣它們就能控制、檢測、改變呼叫,并最終結束呼叫。
通信業務器采用 Mobicents。從技術背景中知道 JSLEE包含多種組件。在建議的體系架構中,需要實現這些組件的新類型。Web服務接收到某個請求以觸發服務,它必須要先發送一個事件來啟動該服務。所以需要定義一些事件(如makeCall、endCall等),這些事件被Web服務用于與JSLEE平臺和通信業務進行交互。因此,就需要研究Web服務與通信業務間消息傳遞方式,即 Web服務如何發送事件,Mobicents如何接收這些事件并把它們傳遞給SBB。
2.2.1 業務/服務單機部署
如果通信業務與 Web服務是部署在同一 JBoss服務器上,即通信業務執行環境由部署在JBoss上的Mobicents提供,Web服務執行環境由JBoss內部的Tomcat提供,兩者之間可以采用遠程方法調用(RMI)來實現通信,這里采用JSLEE提供的SLEE Connection接口[3],如圖3所示。Web服務器負責將用戶請求封裝成Mobicents中自定義的事件,并通過SLEE Connection接口來完成與Mobicents的交互。該接口允許Web服務組件創建一個與特定JAIN SLEE中的業務實例的連接,并使用它來向業務實例發送事件,從而觸發通信業務邏輯的執行。

圖3 業務/服務單機部署
2.2.2 業務/服務分離部署
如果Web服務和通信業務部署在不同JBoss服務器上,有兩種通信機制,如圖4所示。

圖4 業務/服務分離部署
SLEE Connection方式:Mobicents JSLEE同樣提供一個遠程的SLEE Connection(使用方式同本地方式相同),從而實現Web服務組件與通信業務組件之間的跨主機通信。
SOAP RA方式:可以直接通過在Mobicents上部署SOAP RA來實現Web服務組件與通信業務組件之間的通信消息適配。SOAP請求從SOAP客戶端通過Web服務實現獲取,并被SOAP RA以SOAP事件的方式,通過JSLEE的事件路由器傳遞給注冊這些事件的通信業務組件(SBB)處理。
為了把通信業務封裝為Web服務,需要把它的相關功能描述到WSDL文檔中,給出將對它的客戶端提供的操作。以第三方呼叫控制為例,以下是對其 Web服務進行描述的WSDL文件片段:

可以看到,makeCall操作有兩個類型為string的參數,即兩個UA 的SIP URI,并有一個string類型的返回值,它是呼叫的引用id。
為了實現第三方呼叫控制業務的Web服務化,業務需要三個SBB:RecvSoapSBB為業務的根SBB,處理呼叫控制SOAP事件;CallControlSbb處理 SIP消息;SendSoapSBB發送業務響應。當 MakeCall事件被傳遞給 SLEE后,RecvSoapSBB進行初始化,接收MakeCall事件,根據事件構建INVITE消息并發送給被叫IMS UA以發起呼叫,并創建及初始化CallControlSbb。接著CallControlSbb就會處理后續SIP消息以在兩個IMS UA之間建立呼叫。
Web服務將通過向 SOAP RA發送諸如 CancelCall,EndCall此類的事件來控制呼叫,這些事件也會傳遞給RecvSoapSBB,處理這些事件需要進行一些SIP消息的傳遞,而這是CallControlSbb的處理范圍。因此RecvSoapSBB就通過調用CallControlSbb的輸出方法來委托CallControlSbb處理這些事件,CallControlSbb通過發送適當的 SIP消息來建立、中止或者取消呼叫。在CallControlSbb完成呼叫信令過程后調用SendSoapSBB返回相應的業務響應。
融合Web和通信應用的另一個需求是在Web應用中監視通信業務的狀態。比如需要在Web應用中顯示呼叫的狀態(如進行中、取消、保持等),這樣用戶就能了解呼叫的情況,并對其進行控制。對此的一個解決方法是在通信業務、Web服務和 Web應用之間把呼叫狀態作為共享對象,實現HTTP和SIP會話之間的1對1的映射,這樣Web應用就能檢測業務狀態。該項內容非本次研究重點不作詳述。
本體系結構總體的實現原理如圖5所示。

圖5 體系結構的實現原理
第三方呼叫控制業務與服務整合的試驗環境如圖 6所示。在該環境中,使用專用的Web服務測試工具SoapUI進行了測試。SoapUI根據實現的Web服務的WSDL文件創建了呼叫請求,請求方法為makeCall,并帶有主被叫終端UA1和UA2的SIP地址。通過SoapUI發送該請求到第三方呼叫控制業務的 Web服務實現 endpoint,最終實現兩個終端的通信。

圖6 試驗環境示意
文中研究根據NGN/IMS的通信業務與Web服務融合的概念,采用ParlayX標準,基于JBoss,提出了兩者整合的體系架構,把Web服務作為通信業務的代理,以Web服務的同步的請求-響應機制方式交付異步的事件驅動的通信業務。NGN 架構對 Web 服務的引入將充分利用 Web 服務的優勢,使 NGN 應用業務平臺具備更好的開放性和互操作性, 從而使下一代網絡融合業務的開發和部署更加快速和便捷[6]。
[1] 陳霄,汪學明.下一代網絡開放業務接口的研究[J].通信技術,2010,43(12):109-111.
[2] 楊成剛.午餐免費 服務增值——談 JBoss的技術架構與服務[J].中國計算機用戶, 2004(13):56-57.
[3] ALEXANDRE M, AMIT B, BARTOSZ B. Mobicents JAIN SLEE User Guide.[EB/OL].(2010-10-09)[2011-06-09].http://www.mobicents.org/slee/docs.html.
[4] 趙謹謹.用WebServices實施企業應用集成的方法研究[D].武漢:華中科技大學,2009:6-9.
[5] 金碧芳,薛質,宋濤.基于SOA的信息比對系統的研究與實現[J]. 信息安全與通信保密,2010 (06):43-44.
[6] 趙慧玲,徐向輝. 基于Web服務的下一代網絡融合業務模型[J].郵電設計技術,2008 (07):1-5.