刘长勇,许 晓
(1.武夷学院动漫学院,福建武夷山 354300;2.厦门优联志诚网络科技有限公司,福建厦门 361000)
基于XML的企业内部邮件系统的设计与实现
刘长勇1,许 晓2
(1.武夷学院动漫学院,福建武夷山 354300;2.厦门优联志诚网络科技有限公司,福建厦门 361000)
针对企业内部邮件系统的设计目标,提出了一种基于XML的企业内部邮件系统的设计与实现,详细分析了邮件系统的功能、体系结构和邮件数据的存储结构,并给出邮件收发流程及实现代码。
XML;邮件系统;邮件收发;XCPU;XM ail
随着中国企业上网工程步伐的加快和网上邮箱的推出,拥有自己的网上邮箱是每个企业的迫切希望。因此,为了实现邮件系统在企业内部快捷、方便、可靠、高效地运行,邮件系统的设计目标一般有以下几个方面的要求[1]:1)用户操作简单,使用方便;2)邮件收发速度快;3)邮件存储空间利用率高,文件可共享;4)邮件传输高效快捷;5)能有效地对邮件进行控制和管理。为此,本文提出了一种以XML格式来存储数据、采用基于B/S结构的邮件系统设计方案,通过将应用服务单独进行处理,从而使得用户界面与应用服务位于不同的平台上,方便地将整个系统分为不同的模块,提高了系统模块的通用性,缩短了开发周期,降低应用系统开发成本[2]。
可扩展标记语言(eXtensible Markup Language,XML)是由互联网联合组织(World Wide Web Consortium,W3C)在1998年制定的一种通用语言规范,它是一门新兴的、面向Internet应用的标记语言,可以根据需要表现的文档,通过自由定义标记来表现具有现实意义的文档内容。它具有以下几方面的优点:1)良好的可扩展性,语言简单有效,可自行定义标记;2)内容与形式的分离,主要刻画数据内容,不考虑显示效果;3)有严格的语法要求,便于分析统一和与数据库信息转换;4)便于传输,为纯文本形式,可通过 H TTP协议直接传输,可跨越防火墙[3-5]。
XM L文件包括3个部分:XML声明、处理指示(可选)、XML元素。XML文档的一个基本要求是形式良好(well formed),一个形式良好的XML文档要包含这3个部分。下面是一个完整的XML文档:
<?xm l version="1.0"?>
<doc>
<assem bly>
<name>XCPU.XMail</name>
</assembly>
<members>
<member name="T:XCPU.XXM ail.Send Event A rgs">
<summary>
XM Index Event Args的摘要说明。
</summary>
</member>
<mem ber name="M:XCPU.XXM ail.Send Event A rgs.#ctor">
<summary>
邮件事件
</summary>
<param name="e">邮件索引</param>
</member>
</members>
</doc>
1)邮件创建:用户可以通过该模块进行创建新邮件。
2)邮件管理:通过收件箱、发件箱、草稿箱和垃圾箱对邮件进行分类管理。收件箱存储着其他用户发送给该用户的邮件;发件箱用来存储用户在发送邮件时的邮件副本;草稿箱用来存储未完成或暂未发出的邮件;垃圾箱存储被删除的邮件。
3)邮件传输:负责处理从显示层到逻辑层的数据传输工作。该模块分用户信息传输和邮件信息传输两大主要工作。用户信息传输包括用户登录、注册用户、通过部门编号获得指定的部门名称、用户信息修改。邮件信息传输包括发送邮件、保存邮件、删除邮件、永久删除邮件、获取指定类型的索引列表、获取用户所在部门的所有部门邮件、读取邮件、获取新邮件、附件上传、附件下载。
4)邮件发送、接收:邮件发送、接收模块,即XCPU,是本系统的核心,负责了邮件系统的所有邮件数据运算工作。
5)邮件阅读:用户在查看邮件管理中的邮件列表时,通过点击列表中的邮件主题,对邮件进行阅读。用户在阅读邮件后,可以对这些邮件进行回复、删除和永久删除等操作。
6)用户信息:用户可以在此模块中查看和修改用户自己的信息。
7)用户通讯录:用户可以利用通讯录,存储用户常用的联系人邮件地址。在通讯录中,用户可以对联系人进行管理,如添加、修改和删除联系人。用户可以对联系人进行分类,并且可以自定义联系人分类。用户在创建新邮件时,可以调用通讯录里面的联系人信息。
企业内部邮件系统是在Internet环境下实现的,采用浏览器/服务器(B/S)模式。服务器以Window s 2000 Server/2003 Server为操作系统平台,以XML为数据存储方式,客户端通过浏览器访问系统提供的服务。系统不允许匿名访问,它要求用户提供用户名和密码,通过验证后才能进入系统主页。用户进入系统后,可以管理自己的邮件,编写新邮件发送给企业内部用户。在发送时,可以同时发送附件,并可以定时发送邮件。用户对收取到的邮件可以进行回复、删除等操作。
邮件系统的体系结构如图1所示,共分为以下4层:
1)显示层:以树型结构显示邮件系统的用户界面,供用户完成各种邮件的操作。
2)数据传输层:采用 Web Services和 Socket的方式实现数据的传输与通信。
3)数据处理层:负责邮件系统的所有邮件数据运算工作。
4)数据存储层:以XML格式存储邮件数据。
图1 邮件系统体系结构图
系统以XMail为主要数据处理对象,XMail是以RSS存储的XML文件,其格式如下:
<?xm l version="1.0"encoding="gb2312"?>
<rss version="2.0">
<channel>
<title></title>
<link></link>
<descrip tion>
<XList XGroup From="test"XGroup To="test"Converge=""Pin="xuxiao"ID="20060526154157094508321"DataSource=""Department=""From="xuxiao@XMail.com"To="xuxiao@XM ail.com"Cc=""Bcc=""iDna=""XFlow=""IsRead="True"IsSended="True"IsSave="True"IsReceived="True"Subject="内部邮件"BodyEncoding="Base64"Body Fo rmat="Text"Prio rity="No rmal"Send-Time="2006-5-26 15:41:58"Send Tim ing=""ReceiveTime="2006-5-26 15:41:59"LastRead Time="2006-5-26 15:42:30"Read-Count="1"ReadPin="xuxiao"A ttachments="20060526154103040702779_Admin.xm l|"A ttachmentsCount="1"MailSize="1331"/>
</descrip tion>
<copyright> </copyright>
<language> </language>
<item>
<title> </title>
<link></link>
<descrip tion><Body>
<![CDA TA[<P align=center> <STRONG><FON T color=#ff1493>通知</FON T></STRONG></P>]]>
</Body></descrip tion>
</item>
</channel>
</rss>
XCPU是本系统的数据处理中心,负责邮件系统的所有邮件数据运算工作,是一个W indow s服务程序,由数据接收中心、命令中心、XCPU缓存、数据处理中心和邮件发送中心等部分组成。
本邮件系统的邮件收发流程如图2所示。
图2 邮件收发流程
接收从 Web Service通过 Socket发送到XCPU的数据,并将数据传递给命令中心进行分析。得到分析结果后,将数据进行XM ail转换,如果命令类型为发送 XM ail,将 XMail存储到XCPU的一级存储中,并将XM ail的邮件索引添加到二级缓存中,等待数据处理中心的处理。如果命令类型为XM ail的操作,直接传递给数据处理中心处理。其实现的主要代码如下所示:
p rivate void XScoket Ser_On Recv Data(object sender,NetEventA rgs e)
{Order order=new Order(e);
//如果当前指令类型为发送邮件
//将数据添加到一级缓存中
if(order.Order Types==Order Type.Send)
{//接收事件
this.OnReceive(e.Client.Datagram);
if(this.CacheL1.Contains(order.Data)==false)
{this.CacheL 1.Add(order.Data);
timer.Enabled=true;
XScoketSer.Send(e.Client,"true");
}
else
{XScoketSer.Send(e.Client,"false");}
}
else
{//打开一个线程处理
Oper Order X M ail ooXM ail=new Oper OrderX M ail(this.XScoketSer,order);
Thread th=new Thread(new Thread Start(ooXM ail.Begin));
th.IsBackground=true;
th.Start();
}
}
先从 XCPU的二级缓存中获取要处理的XMail的邮件索引 XM ail Index,再从XCPU的一级缓存中获取对应的XMail进行发送处理。其实现的主要代码如下所示:
private bool Send()
{if(this.to Send X M ail List.Count==0)
{return false;}
is Busy=true;//系统开始忙
foreach(object feX Mail in this.to Send X M ail List.Values)
{XM ail the X M ail=(XM ail)feX M ail;
XMail Index theXM Index = theXMail.MailIndex;
if(the XM Index==null)
{continue;}
Send Single XM ail Index(the XM Index);//处理单个XMail Index
}
Remove From To Send XM ail Indes();//删除已发送过的邮件索引
Move Busy To Send XM ail Index();//将临时列表中的邮件添加到处理列表中
is Busy=false;
Remove Is To Send At Busy();//从临时列表中移除已加载到处理列表的邮件索引
return true;
}
本邮件系统按照B/S结构模型设计,通过将应用服务单独进行处理,从而使得用户界面与应用服务位于不同的平台上,利用 Web Service和Socket技术,实现了系统的跨服务器运行,提高了系统的数据处理能力和ASP.Net的访问负载能力。同时,由于采用XML格式进行数据存储,使数据可以通过网络无障碍地进行传输,简化了数据的维护与备份,具有良好的通用性、可移植性。
[1] 刘俊,闫渊源.基于数据库的企业内部邮件系统的设计[J].信息技术,2008(11):112-114.
[2] 邱林,张凌.基于B/S三层结构的电子邮件解决方案[J].计算机工程,2003(11):158-159.
[3] 崔莉.基于XML的Web文件传输系统的实现[J].重庆科技学院学报,2009(4):127-129.
[4] 刘长勇,宁正元.基于XML的学习流模型的研究[J].重庆工学院学报,2009(2):176-180.
[5] 靳志强,滕桂法,孙晨霞,等.基于XML与动态数据集成模型的异构数据访问接口设计与实现[J].河北农业大学学报,2009(3):131-135.
Design and Implementation of the XML-based Enterprise Internal Mail System
Liu Changyong1,Xu Xiao2
(1.Animation Institute,Wuyi University,Wuyishan,Fujian 354300,China;2.Xiamen Youlianzhicheng Network Technology Co.,L td,Xiamen,Fujian 361000,China)
According to the design objectives of enterprise internalmail system,the present article put forward the design and implementation of the XML-based enterprise internal mail system,discussed the functions,frame and mail datAstorage structure of it and provided the mail sending and receiving process and implementation code.
XML;mail system;mail receiving and sending;XCPU;Xmail
TP393.098
A
1671-2544(2010)03-0064-04
2009-11-02
武夷学院科技项目(XQ0920)
刘长勇(1974— ),男,福建建瓯人,武夷学院动漫学院讲师,硕士。
(责任编辑:陈锦华)