APP下载

统一通信中网络通讯录关键技术实现

2014-01-01陈莹莹

无线电通信技术 2014年4期
关键词:通讯录联系人客户端

张 庚,陈 广,杨 莹,陈莹莹

(1.中国电力科学研究院,北京100192;2.四川省电力公司,四川成都610041;3.河北远东哈里斯通信有限公司,河北石家庄050200;4.华北电力大学,北京102206)

0 引言

统一通信(Unified Communication,UC)是指融合了通信技术(Communication Technology,CT)和信息技术(Information Technology,IT)应用的综合解决方案,通过融合多种通信方式,为用户创造随时随地、使用任何设备和网络进行自由沟通的应用环境,以满足办公的移动性和灵活性的需求。

通讯录是统一通信的基本业务功能,它不但能提供给企业用户和个人用户所需的通信目录信息,而且还可以作为触发统一通信其他相关业务的入口[1]。但在实际统一通信中应用网络通讯录时,存在信息更新不及时、格式混杂和隐私泄露等问题,从而导致用户体验不佳[2]。

为了解决以上问题,从统一通信的企业应用环境出发,基于XMPP协议,对网络通讯录业务在统一通信下的信息同步、格式转换和隐私保护等关键技术进行了软件设计实现。对网络通讯录在统一通信系统中的应用有一定的实践意义。

1 系统框架

网络通讯录是一种基于客户端/服务器结构的通讯录,利用网络来实现通讯录存储和备份的服务,通过在不同设备间联系人信息的同步,使得不同终端可以共享统一的通讯录,获取相同的用户体验。

1.1 服务器

统一通信系统服务器端采用开源的Openfire服务器框架进行二次开发,Openfire是基于XMPP协议开源的实时协作服务器,采用Java语言进行开发,具有跨平台的特点,同时Openfire实现了插件机制,方便扩展[3]。因此,网络通讯录的服务器部分采用插件开发的形式进行实现。

服务器端负责对客户端进行验证,管理实体间的连接,处理实体间消息的解析和转发等。服务器存储和管理与网络通讯录相关的XML文档,如网络通讯录列表和访问权限列表等[4]。

网络通讯录可以按照单位、部门和组织名称进行多级分组,不同组内及组间有不同的访问权限,访问权限机制的运行是在服务器端实现的,服务器根据收到的消息判断此客户端的角色并给予相应的访问权限。

在ASP.NET平台下通过封装的DOM类库解析和存取XML文档,完成对XML文档的数据提取,将解析后的数据导入数据库作为网络通讯录中联系人的描述信息。

1.2 客户端

客户端是在.Net开发环境下,利用WPF技术进行设计开发。客户端获取服务器所提供的所有功能并通过图形化界面、良好的接口呈现给用户。

客户端与服务器通过XML在TCP套接字的5222端口进行通信,而不需要客户端之间直接进行通信。

1.3 XMPP协议栈

XMPP协议是一种以XML为基础的开放式实时通信协定,为客户端与服务器之间的通信提供了规则和数据结构等相关约定[5]。

本系统使用开源的agsXMPP来完成对系统的协议栈支持。asgXMPP是基于XMPP协议的C#开源库,通过异步套接字、与工厂模式结合的快速XML解析器以及自有的轻量级XML DOM3项技术,创建了一个轻量和快速的跨平台类库。

2 系统功能

网络通讯录应该具有如下功能[6]:

①显示用户在线状态;

②显示所有联系人和联系人分组;

③搜索联系人;

④管理联系人列表:添加新的联系人、可以删除已有的联系人、创建和删除分组,把联系人归类到指定的分组等。

客户端可以向任意拥有统一通信账号的用户发起添加好友请求。添加好友是相互的,向一个用户发出添加好友请求后,需要等待对方同意才能建立双向的好友关系,XMPP服务器会在各自的联系人列表里添加对方的账号,相互之间可以设置分组,可以看到对方的在线状态。

对于XMPP协议的统一通信客户端,只要对方所在的服务器也遵循XMPP协议,双方可以在不同的服务器上、不同的企业组织里以及不同的客户端进行信息交流。这个过程主要由XMPP服务器完成。

3 关键技术实现

3.1 数据同步技术

假定用户A和B同为网络通讯录的使用者,数据同步流程如图1所示。

在A与B互相添加好友成功后,XMPP服务器会在各自的网络通讯录中添加对方的信息,包括姓名、账号和联系方式等。每个人的信息均有时间戳来标识其创建时间或修改时间,若A在客户端修改了其联系方式并保存成功,这时服务器会发现其时间戳有变动,则认为A的信息有更新,将自动更新网络通讯录中与A有关的信息,而无需通过广播等方式通知A的好友。这样,无论B通过任何终端使用网络通讯录时,都将会得到更新后的A的联系方式。

这样的同步策略使用户的网络通讯录自动更新,克服了一般通讯录因联系人信息改变而使数据失效的问题,同时避免了通过广播等方式通知时信息传递丢失的情况,保证了用户持有的各个终端的通讯录数据同步更新,方便用户对网络通讯录的管理,使得信息无阻碍地在系统内进行流转。

3.2 格式转换技术

在使用网络通讯录时,除了手工录入数据之外,数据的来源大多取自于用户的导入过程,目前主流的通讯录使用的格式包括.vcf、.csv、.xls和 xml等。由于原始数据格式不可控,因此需要兼容多种格式的通讯录[7]。

3.2.1 通讯录格式

(1)vCard格式(.vcf)

Outlook Express和大部分智能手机通讯录的使用是vCard格式,这是一种采用纯文本的类XML格式[8],使用( )换行表示多个键,冒号(:)把键名和键值分开。分号(;)用来加入参数,如:

Name[;Attribute=AttributeValue]:Value[;MoreValue]其中[]内容为可选。

(2).csv格式

.csv格式是逗号分隔值来标示的通讯录格式[9],通常都是纯文本文件。第一行是键名,以半角逗号分开,其他行都是该键名对应的键值,同样以半角逗号分开。使用( )换行表示多条记录。

(3).xml格式

.xml格式以 <?xml version="1.0"? > 为信息记录的开始,以<>元素标签内部的信息标示键名,以同名元素标签</>标示结尾,之间为键值,如<tag>Value</tag>。所有标签必须成对出现。

(4).xls

.xls通讯录文件格式是Microsoft Excel工作表格式,可以使用Excel工具转换为.csv格式。

3.2.2 格式转换过程

在统一通信系统企业通讯录模块中,用户数据采用XML语言定义,XML允许使用者自定义标记描述数据元素,突破了HTML固定标记集合的约束。XML格式可扩展性和内容标准化的优点,可有效携带文本和图片等信息,便于客户端与服务器间的信息交流。本文在通讯录格式互通性方面采取统一转换为xml格式的方法,将数据格式统一为xml格式文档,进行客户端与服务器的信息传输。

根据3.1节的格式规范分析,系统设计的不同通讯录的格式转换互通的步骤如下:

①区分键名和对应键值,如图2所示;

②建立键名与xml元素的映射关系;

网络通讯录部分识别其他通讯录的格式,但由于具体手机通讯录的字段名称有差异,因此需要用户手动选择字段的映射关系,系统将用户已经建立的映射关系进行存库,之后如遇到相同的键名,则自动建立映射关系,图3为格式转换流程图。

图3 格式转换流程图

这种方式需要用户对业务和数据本身有所分析和了解,如vCard格式中“TEL;WORK;VOICE”字段表示工作电话;“TEL;CELL;VOICE”字段表示手机号码。系统对常用的映射关系给予信息提示,降低普通用户使用的难度,以便准确进行数据映射操作。

③预览映射关系,对于不适宜的映射关系可以返回上一步进行修改;

④如图3所示,根据映射关系,将键值作为到映射后的xml元素值进行转换;

⑤xml格式的信息存取。

在.NET Framework开发环境下,使用XML作为存储和传输各种数据的格式时,可以利用DataSet存储和传输XML格式的数据[10]。

DataSet是ADO.NET的中心概念和主要组件,DataSet在内部是用XML来描述数据的。DataSet所有数据都加载在内存上执行的,可以提高数据访问速度,提高硬盘数据的安全性,保证程序运行的速度和稳定性。

在实现中,使用WriteXmlSchema方法将组织结构保存为XML组织结构,并且可以使用WriteXml方法保存组织结构和数据。若要读取既包含组织结构也包含数据的XML文档,使用ReadXml方法,将XML文档内容导入到DataSet中。

3.2.3 冲突处理策略

对于其他格式的通讯录的导入到本系统需要对冲突情况进行策略制定。冲突情况包括:导入的条目数据格式异常、重复条目等。对条目格式异常的策略包括:忽略和另存为本地文件。对重复项的策略包括:覆盖现有条目、忽略重复项和另存为本地文件。

3.3 隐私保护技术

网络通讯录由于涉及用户的联系方式等私人信息,因此其隐私的安全性需要格外引起重视。

3.3.1 传输安全性

网络通讯录信息在客户端与服务器的传输过程中的安全,由安全模块负责维护,避免数据丢失或泄漏,如图4所示。

图4 信息传输的安全性

安全模块负责通讯录业务数据安全处理,如加解密等。在服务器与客户端信息传送过程中,首先将二进制码转换为Base64码,之后再进行加密,加密算法由各网络实体建立会话时通过TLS协商[11],在本系统中使用MD5进行加密。

3.3.2 呈现安全性

在网络通讯录客户端信息呈现时,由于其实现了通讯录的共享,考虑到用户的隐私,系统必须提供隐私保护功能,有4种策略供用户选择:

①允许用户选择不加入网络通讯录中,即不公开用户任何信息;

②允许用户的信息只对特定人员公开,如设置密友圈,对其信息保持透明;

③允许用户只公开姓名,不公开联系方式,使用者可以直接点击拨号,而无需获知对方的具体联系号码。如电话以 8XXXXXXX1,手机以1XXXXXXXXX6的形式呈现,只呈现号码首位和末位,其余隐蔽;

④允许用户完全公开其个人信息;这种策略适用于企业客服账号等情况,以满足对外开放的需要。

服务器根据用户选择的隐私策略,在其向客户端传送时,即对网络通讯录的信息进行了针对性的屏蔽,客户端只需照常负责呈现即可,如图5所示。

图5 隐私策略的处理

3.3.3 用户权限管理

在客户端为用户提供多种权限的管理[12],用户可以自行设置黑白名单,自主管理,对办公电话和私人电话设置不同的隐私级别等,服务器端负责对所有用户的身份验证和数据查看权限的控制,使权限设置更为精细,以提高用户的隐私保护安全性。

4 实现分析

设计的网络通讯录已在企业应用环境下得以成功使用,网络通讯录利用数据同步技术,从群体角度减少通讯录录入的总体工作量,有效降低了用户维护通讯录的成本,从而促进了用户与好友的沟通交流;在数据映射和格式转换中,采用了xml数据格式,以统一的方式来对不同系统中异构的通讯录数据进行转换,使系统可以兼容其他客户端通讯录数据,拓展了软件的可用性;同时注重用户的隐私数据保护,确保信息使用安全。

但是所研究的技术不适用于本地通讯录的范畴,且在网络情况不佳时,用户体验较差。在格式转换部分,现有的方式需要用户对业务和数据本身有所分析和了解,才能进行数据映射操作,在下一步工作中,可以改进开发更为简便易用的系统。

5 结束语

作为一项基本业务功能,通讯录在统一通信系统中具有举足轻重的地位,通过研究并实现企业统一通信应用环境下网络通讯录信息同步、格式转换和隐私保护等方面的关键技术,确保网络通讯录能够提供准确、及时和安全的联系信息,有助于提升用户体验。

[1] YDT 2014-2009,统一通信业务需求[S].

[2] 苗凯.XMPP的安全机制分析[J].通信技术,2003(8):101 -103.

[3] 潘凤,王华军,苗放,等.基于XMPP协议和Openfire的即时通信系统的开发[J].计算机时代,2008(3):15-19.

[4] 欧伟新.统一通信企业通讯录设计技术与实现[D].南京:南京邮电大学,2012:18 -22.

[5] rfc3920,Extensible Messaging and Presence Protocol(XMPP):Core[S].

[6] 刘志福.基于XMPP的iOS上的IM客户端的研究与实现[D].广州:华南理工大学,2012:25-29.

[7] 葛春林,周杰,蔡磊.基于 XML和 COM(MAPI)的通用地址簿设计[J].计算机应用与软件,2009,26(12):82-85.

[8] rfc2426,vCard MIME Directory Profile[S].

[9] rfc4180,Common Format and MIME Type for Comma -Separated Values(CSV)Files[S].

[10]张哲峰,黄翔宇.ASP.NET数据库入门经典-C#编程篇[M].北京:清华大学出版社,2003:346-371.

[11]刘培鹤,牛晓蕾,杜鹏,等.企业即时通信系统安全性分析与设计[J].网络安全技术与应用,2007(2):78-81.

[12]张力.基于XMPP协议的企业级即时通讯系统设计与实现[D].武汉:华中科技大学,2011:29-32.

猜你喜欢

通讯录联系人客户端
本期石友通讯录
通讯录
本期石友通讯录
美食通讯录
让重要联系人更醒目
为每个联系人设定不同的铃声
如何看待传统媒体新闻客户端的“断舍离”?
教你将手机联系人导出到Excel
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略