基于VSTO技术的船岸同步软件的设计与实现

2014-11-10 06:18史兆彦戴长华
关键词:数据包邮件客户端

史兆彦, 戴长华, 周 岩

(中海信息系统有限公司,上海200135)

0 引 言

随着航运企业信息化建设不断推进,当前许多航运企业将管理系统部署到了船端,因此,如何实现系统数据在船岸端系统间的同步,成为航运系统建设者们研究的一项重要课题。在传统的解决方案中,大多采用费用十分高昂的卫星通讯传输数据,因此通讯成本十分庞大。近年来,已发展成熟的3 G、4 G无线网络以其相对低廉的通讯费用和相对稳定的连接速度逐渐成为近岸船舶数据同步的最佳选择。

邮件通讯现已成为船岸数据同步的主流方式,因此,如何有效管理携带数据包的邮件、如何自动处理这些邮件携带的数据、如何记录这些数据包的顺序和状态、如何解决因网络等不稳定因素导致的丢包等诸多问题,是船岸同步软件设计人员考虑的重点。

针对上述问题,目前航运企业普遍采用的方式主要有:使用专门的通讯客户端(如Rydex、A MOS Mail、Skyfile等)解析邮件,将相应的数据包放置于指定的文件目录中;编写具有特定功能的通讯客户端。前者只解决了数据包的收发环节,并不能对数据做进一步的处理;而后者几乎要重写通用的邮件客户端所具有的收发邮件、邮件管理等全部功能。

因此,基于能否通过改造当前通用的邮件客户端,使之能够在使用普通邮件客户端管理功能的同时自动接收和解析同步邮件,当有数据包生成时,自动生成同步邮件发送出去的思路,提出一种基于VSTO技术扩展Micr osoft Outl ook邮件客户端的船岸同步软件的设计方案,以Outlook邮件客户端为宿主程序,利用VSTO技术编写插件程序,插件程序随Outlook程序一起运行,操控Outlook内置对象,从而达到扩展现有Outl ook邮件客户端功能、实现船岸数据同步的目的。

1 设计思路

1.1 船岸通讯模型

对于近岸船舶,由于能够获取到岸基的网络通讯基站的信号,可以通过基站连接互联网,达到使用互联网进行通讯的目的。基于3G、4G网络的船岸通讯模型见图1。

图1 船岸通讯模型

1.2 设计目标

同步软件的主要作用是根据业务逻辑和一定的规则生成数据包,将数据包封装成邮件,通过邮件服务器发送出去;同时,能够对接收到的邮件根据相关的规则进行解析,以及根据数据包的不同类型执行数据更新或程序升级等操作,从而实现船岸数据的同步和船端系统的远程升级。船岸同步分为船到岸的同步和岸到船的同步。

1)船到岸同步:由船端录入数据,形成数据包,发送至岸端,岸端接收后处理。

2)岸到船同步:由岸端录入数据或发布升级包,发送至船端,船端接收后处理,并自动发送回执信息给岸端。

经分析可知,船岸同步的双方可以抽象为发送端和接收端,发送端根据规则找出同步的数据,生成数据包文件,然后创建新邮件并发送;接收端接收发送端发送过来的邮件,并进行解析,根据不同类型数据包执行不同的同步操作。发送端和接收端的执行流程见图2。

图2 发送端和接收端的执行流程

由于船岸通讯是双向的,因此在船岸同步的过程中,发送方和接收方是相对的。在同步软件的设计过程中,必须考虑以下问题:

(1)部署在船端或岸端的同步软件必须同时具备发送端和接收端的双重功能;

(2)为防止因网络问题导致的同步包丢失问题出现,必须建立同步包重发机制;

(3)为监控和判断同步包的接收与执行状态,必须建立同步包回执机制;

(4)为防止因同步包接收顺序错乱导致的数据更新错误问题出现,必须建立同步包顺序机制;

(5)考虑到数据的安全性,必须添加相应的数据加密功能;

(6)为有效反映出同步包的执行状态,必须包含同步包管理功能;

(7)为保证通讯质量,必须控制同步文件的大小;

(8)为保证正常的数据解析,必须定义同步包的格式和类型;

(9)部署在船端和岸端的同步软件,必须支持可配置的方式设置参数;

(10)同步软件必须支持数据的同步和船端应用程序的远程升级,数据包和升级包的发送和接收要求使用统一的方式处理。

因此,基于当前船岸同步的技术现状和船岸同步软件设计需要解决的问题,提出的基于VSTO(Visual Studio Tools f or Office)技术的船岸同步软件实现了以下设计目标:

(1)使用3 G、4 G网络通讯;

(2)以邮件方式传输数据文件;

(3)与现有的Micr osoft Outlook邮件客户端无缝集成;

(4)实现船岸同步数据的封装、解析、转换、执行;

(5)多个功能组件共同协作,保障船岸数据同步的完整性;

(6)集成发送和接收的功能,且发送和接收功能相互独立;

(7)支持参数配置,实现同步软件船岸端的差异化部署。

图3 Outlook对象模型

2 系统设计

2.1 技术路线

2.1.1 VSTO技术

VSTO是.NET平台下的Office开发技术,提供了一组强大的工具,允许开发人员使用Visual Basic和C# 来扩展和自定义Micr osoft Office应用程序;能够将托管代码开发与Micr osoft Office及Micr osoft Office SharePoint进行集成;提供了功能区可视化设计器,可以通过使用简单的、类似 Windows窗体的编程模型来针对其自定义Office功能区和程序。同时,其允许使用ADO.NET数据交互组件访问和更新企业数据库。相对于传统的VBA(Visual Basic Application)开发,VSTO为开发人员提供了更加强大的开发平台和开发语言支持,解决了传统Office开发中的诸多问题(难于更新、可扩展性差、难以维护、安全性低等)。

使用VSTO对Outlook进行扩展开发,既能使用Outlook邮件客户端完成邮件的收发和管理,又能实现自定义的扩展需求、定制开发,以及同步包邮件的自动发送和接收、解析和执行。

2.1.2 Outlook对象模型

对于Micr osoft Outlook,VSTO通过外接程序实现其扩展功能,允许自定义用户界面。开发Outl ook的外接程序,可以与Outl ook对象模型提供的对象进行交互。Outlook对象模型提供了用于表示用户界面中各个项目的类,其构成关系见图3。

Outl ook对象模型中,Application类处于对象模型的顶层节点,所有其他对象都可以通过该类获取。表1列出了Outlook对象模型几个核心类的详细说明。

表1 Outlook对象模型说明

2.2 软件架构

通过对Outlook使用VSTO技术扩展开发实现的同步软件,以Outlook为宿主程序,以插件的形式运行,同时通过Outlook对象模型实现对Outlook本身的操作;通过.NET技术实现对数据库的访问和底层系统的操作。其中,Outlook邮件客户端完成普通的收发邮件的任务,插件部分完成邮件解析、同步包处理、数据库交互等任务。同步软件架构见图4。

图4 同步软件架构示意图

2.3 功能组件设计

同步软件包含系统配置组件、数据访问组件、同步包生成组件、邮件处理组件、同步包管理组件、同步执行组件等多个核心功能组件,此外还包括数据提取、文件提取、文件序列生成器、加解密、压缩解压、文件MD5值计算、底层系统访问等支持组件。其构成以及各构成组件之间的关系见图5。

图5 同步软件的组件构成

2.3.1 系统配置组件

系统配置组件允许通过使用配置文件和维护配置表的方式进行配置,用来维护同步邮件的主题内容规则、邮件序列生成规则、加解密规则、同步文件的允许大小等。

系统配置组件解决了部署在船端和岸端的同步软件必须支持以可配置的方式设置参数的问题。

2.3.2 数据访问组件

数据访问组件通过定义一个通用的数据访问接口,来支持数据库的增删、查改等操作。同时,为了应对船岸端数据库产品的不同,其提供了针对不同数据库产品的接口,统一了不同数据库产品之间数据访问的差异,部署时只需通过配置文件配置对应的数据库产品及数据库连接字符串即可。

2.3.3 同步包生成组件

同步包生成组件会根据相关配置,按照规则生成同步包。同步包共分为3种:数据回执包、数据文件包以及文件升级包。

(1)数据回执包是接收端接收到数据包并执行后,对执行结果进行装,进而反馈给发送端的数据包,是提供监控以及判断数据包接收和执行状态的手段,是数据包回执机制的具体实现方式;

(2)数据文件包是数据提取组件根据系统操作所生成的同步日志文件,将一方的同步日志放在另一方按顺序执行一次就能实现数据的同步,其生成需要调用加密组件和压缩组件;

(3)文件升级包用于船端系统的升级,文件提取组件根据系统配置的升级文件路径自动生成升级包,生成需要调用压缩组件。

3种数据包的命名只有遵循不同的规则,才能在接收端进行有效的区分。数据回执包定义以REC开头,数据文件包定义以DAT开头,程序升级包定义以PSU开头。此外,文件的名称中还要包含时间戳和邮件序列,如DAT^S^A003^105^20140608120325666.zip表示船舶A003发送过来的105号数据包。通过建立同步包时序机制,可防止数据包接收顺序错乱而导致的数据更新错误的问题。

同步包生成组件会根据系统的配置在生成同步包时控制同步包文件的大小。

2.3.4 邮件处理组件

邮件处理组件通过监控Outl ook的收件动作完成同步包的接收;通过监控发件目录下有无数据文件完成同步包邮件的生成。

当监控到Outl ook有邮件收取时,收件处理组件根据预定义的规则识别当前邮件是普通邮件还是含有数据包的同步邮件。如果是普通邮件,不进行任何操作;如果是同步邮件,则将同步包解析,由同步包管理组件记录同步包的MD5值等相关信息,并将同步包存放于指定的位置供执行组件执行。

当监控到发件目录下有同步包时,邮件处理组件会遍历同步包文件,将同步包文件作为邮件附件添加到新建的同步邮件中。同时,调用MD5计算组件计算同步文件的MD5值,将该MD5值添加到邮件的正文中,作为接收端同步文件的校验依据,最后将生成的同步邮件提交至Outlook发件箱,由Outlook完成邮件的发送。

2.3.5 同步包管理组件

发送端在发送同步包之前会将同步包的信息提交至同步包管理组件,以记录同步包的信息;同样,接收端在接收到同步包后也会记录同步包的信息,这些信息由同步包管理组件统一管理,为同步包的重发、回执包的重发、发包前的校验等提供依据。同步包管理组件实现了同步包重发机制。

2.3.6 同步执行组件

同步执行组件负责执行接收到的同步包。其首先会对同步包文件的MD5值进行校验,判断文件的MD5值是否与发送端提供的MD5值相同,如果相同,则执行对应的同步操作,如果不同,则直接生成回执包告知发送端,以便发送端重新发送。

同步执行组件根据同步包的不同类型执行不同的同步操作。对于回执数据包,将对应的回执包的信息提交到同步包管理组件以便标记对应顺序号的同步包已执行完成,回执包本身不再产生回执;对于数据升级包,则执行对应的数据脚本,将数据改变更新至数据库;对于程序升级包,则启用程序升级动作,执行升级。其中,回执包和数据升级包需调用解压解密组件,程序升级包需要调用解压组件,数据升级包和程序升级包需根据执行结果生成对应的回执数据包。

3 系统实现

3.1 软件部署及配置

同步软件以安装文件的形式分发部署,第一次安装时,安装包会将.NET Fra mewor k一同安装,后续软件本身的升级则只需要增量升级相关的组件。

安装完成后,需在程序的配置文件中配置是否安装在船端、数据库类型、数据库连接字符串等信息,以及初始化软件的基本运行信息。通过配置,区分同步软件是运行在船端还是岸端,实现了不需要分别对船端和岸端同步软件进行单独开发,船岸端使用同一套同步软件的要求。程序启动后,在船岸同步配置界面配置相应的同步配置信息及过滤规则等。

3.2 关键代码

使用VSTO,与Outlook对象模型交互,可以方便地操作Outlook对象,完成获取邮箱中的邮件、读取邮件内容、生成邮件并发送等任务;同时,借助于.NET平台,对数据库的操作和底层操作系统API的调用也十分简单。图6~图8为如何使用Outlook对象模型读取和发送邮件以及重启系统中的Windows服务。

图6 获取收件箱中未读邮件

图7 创建新邮件并发送

3.3 实现效果展示

同步软件以插件的形式在Outlook上生成一个新的标签页,随Outlook的启动一起启动,与Outlook同时运行。以Microsoft Outlook 2013为宿主程序的同步软件的运行效果见图9。

在自定义的Outlook船岸同步的标签页中,提供了船岸同步设置、同步文件管理以及系统日志等功能按钮,用于对船岸同步软件进行配置和操作。其中同步文件管理功能按钮能够弹出同步文件的管理界面,该界面默认显示当日的船岸同步包的状态信息。用户可以根据情况选择同步包的重发、回执重发,同步包重新执行等操作。

4 结 语

该软件利用VSTO开发技术,将船岸同步的功能集成到Micr osoft Outlook邮件客户端中,使用Outlook邮件客户端自身对邮件的管理功能管理邮件;邮件的发送和收取均通过邮件客户端本身的功能来实现,同步软件不仅无须考虑断网等复杂情况下的邮件发送和接收等基本操作,同时又能对往来的邮件进行读取、解析和处理,从而实现船岸同步。然而,由于该同步软件以Microsoft Outlook为宿主程序,依赖于Out-look,因此,如果Outlook程序被关闭,同步操作将不会执行。未来需进一步研究对Outlook的监控,使其在必要时保持运行状态。此外,目前而言,Outlook及.NET应用程序无法在非Windows操作系统上运行,限制了该同步软件在Linux等操作系统平台上的应用。

图8 重启系统中的Windows服务

图9 同步软件的执行效果

[1] Kathleen Mc Grath.VSTO开发者指南[M].李永伦,译.北京:机械工业出版社,2009.

[2] 顾晟,陈波.基于VSTO的智能文档在企业环保信息调查系统中的应用[J].计算机系统应用,2010,19(1):114-118.

[3] 许艳梅.基于3 G技术的船舶远程监控系统的研究与设计[D].大连:大连海事大学,2013.

[4] 薛明刚,徐承飞,赵卫丽,等.船岸一体化数据同步的实现[J].中国修船,2011,24(1):21-24.

[5] 魏江涛,黄爱军,周勇.基于 X ML的岸船数据同步方案设计[J].计算机技术与发展,2014,24(3):49-53.

猜你喜欢
数据包邮件客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
基于James的院内邮件管理系统的实现
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
来自朋友的邮件
C#串口高效可靠的接收方案设计
一封邮件引发的梅赛德斯反弹
新华社推出新版客户端 打造移动互联新闻旗舰