广西电视台新闻消息中枢平台的接口规范及函数调用方法
2016-05-13刘海兰
□刘海兰
广西电视台新闻消息中枢平台的接口规范及函数调用方法
□刘海兰
摘要:本文介绍了广西电视台新闻消息中枢平台的项目背景、结构组成、接口规范和调用方法,并通过实例说明如何按公共服务接口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结构的块区,由接收方按约定格式进行解码,得到配音表的元数据。所有的执行函数都采用这种方式封装和返回数据。
(作者单位:广西电视台)