□劉海蘭
?
廣西電視臺新聞消息中樞平臺的接口規范及函數調用方法
□劉海蘭
摘要:本文介紹了廣西電視臺新聞消息中樞平臺的項目背景、結構組成、接口規范和調用方法,并通過實例說明如何按公共服務接口IceService的要求對接口執行函數進行XML格式封裝。
關鍵詞:接口;Web Service;XML
2013年,新聞頻道啟用全新大洋高清非編制播系統,計劃實現新聞全數字化制播,使大洋非編軟件制作、生成的視頻文件,最終能夠輸送到硬盤播出服務器進行播出。在大洋非編網原有的結構中,使用大洋公司研發的文稿系統來完成這一工作,稿件的提交、審核、送播等等,由文稿系統發起命令,再由后臺服務軟件根據命令,分別完成打包、遷移、審核、送播等等一系統流程。
但是由于各方面的原因,頻道領導決定不使用大洋公司提供的文稿系統,而是將新聞頻道原有的文稿系統重新按流程定制升級,作為新聞業務流程軟件。這樣在大洋非編系統與新聞頻道原有文稿系統之間,必須有一個消息平臺實現雙方系統的握手,完成消息傳遞和信息共享,于是新聞消息中樞平臺就此誕生了。
在本文中對于新聞消息中樞平臺如何設計和實現不做說明,只是簡單介紹一下其結構和組成。
由于涉及到兩個系統的對接,經雙方協商,為了保證各自系統的安全性和保密性,約定由各方提出本方所需的數據和功能,由對方提供一組函數庫完成對接,函數庫以DLL、Active、COM組件、Web Service等方式提供,實現細節由雙方制定。
這樣項目將由兩組接口函數庫組成,考慮到接口函數庫開發過程中變數太大,如果采用DLL、Active、COM組件等方式,需要經常在客戶端進行升級,因此約定以Web Service方式提供接口,它的優點是Web Service函數并不是以文件的形式存在,而是部署在網絡服務器上,以服務的方式存在,對Web Service函數進行升級時,只要函數名稱、出入參數不改變,調用者不需關心其函數內部的變化。
Web Service服務器采用Dell R720,安裝Windows 2008 Server系統。大洋的Web Service服務使用80端口,文稿的Web Service服務使用8080端口。
接口采用動態彈性封裝設計,雙方接口都只有一個相同的函數名:Invoke,而真正的執行函數封裝在Invoke函數的入參中進行傳遞,由Invkde對入參進行解析,再分發到不同的內部函數中執行,內部函數由雙方自行定義,可以根據需要彈性增加、刪減。
函數返回值封閉為XML結構,因其結構狀態是多樣性的,調用方需根據內部函數說明文檔進行解析。另外考慮到安全性,部分重要函數調用時,需將約定密碼與調用時間作為明文進行DES加密,將產生的DES加密串作為入參傳輸進來,接口執行方采用約定的64位密鑰解開,判斷是否正確方允許執行。
(一)接口規范
以WebService方式提供接口;接口函數只有一個,名稱為Invoke;全部功能函數封閉在接口函數Invoke的入參中執行;接口函數入參以XML結構進行封裝,根據不同的內部函數要求,入參XML的封裝結構以及調用內部函數的XML返回值可以不同;內部函數的設計要有一定彈性,今后如有內部函數升級時,只需要提供入參XML結構即可,接口函數不需改變,這樣可以減少雙方升級系統的開發工作量;調用對方系統時,按照對方提供的文檔格式進行調用,對于系統有重要影響的函數,需要設置接口密碼方可執行調用,并且接口密碼必須根據時間戳、約定密碼進行DES加密。
(二)公用服務接口:IceService
接口說明:用于各系統向IceService發送請求,返回IceService的處理結果。IceService只擔負路由的功能,具體實現由服務插件完成。
(三)輸入參數定義
輸入參數名稱:IceServiceRequest
參數存儲文件名稱:IceServiceRequest.xsd
IceServiceRequest參數定義如下:

注:Param帶屬性類型,可標識參數的類型.
(四)輸出參數定義
輸出參數名稱:IceServiceResponse
參數存儲文件名稱:IceServiceResponse.xsd
IceServiceResponse參數定義如下:


前面提到雙方都只提供一個相同的接口函數:Invoke,真正的執行函數封裝在Invoke函數的入參中進行傳遞,在delphi中看到如下接口函數Invoke的定義:
function invoke(const XmlData: WideString): WideString; stdcall;
調用說明:按IceService規范將執行函數、密碼、時間戳、方法參數生成XML字符串并存儲在XmlData變量,調用Invoke(XmlData),返回的也是IceService結構的XML字符串,之后根據MessageType進行不同的解碼,得到所需數據。
這里的執行函數就是上節“執行函數功能說明”中列出的ReadAudioList、ReadTotatx等函數,我們舉個例子說明,如何執行ReadAudioList這個功能呢,按IceService規范生成的XML串內容如下:
廣西新聞
將以上內容以字符串的方式存儲,并賦予XmlData變量,之后執行Invokd(XmlData),這個例子是請求《廣西新聞》欄目配音表。不同的執行函數返回的數據結構是不同的,但必須也按IceService規范返回字符串,下面是返回數據:
!.....第2-N個
真正的數據存儲在XML結構的塊區,由接收方按約定格式進行解碼,得到配音表的元數據。所有的執行函數都采用這種方式封裝和返回數據。
(作者單位:廣西電視臺)