劉長勇,許 曉
(1.武夷學院動漫學院,福建武夷山 354300;2.廈門優(yōu)聯(lián)志誠網(wǎng)絡科技有限公司,福建廈門 361000)
基于XML的企業(yè)內(nèi)部郵件系統(tǒng)的設計與實現(xiàn)
劉長勇1,許 曉2
(1.武夷學院動漫學院,福建武夷山 354300;2.廈門優(yōu)聯(lián)志誠網(wǎng)絡科技有限公司,福建廈門 361000)
針對企業(yè)內(nèi)部郵件系統(tǒng)的設計目標,提出了一種基于XML的企業(yè)內(nèi)部郵件系統(tǒng)的設計與實現(xiàn),詳細分析了郵件系統(tǒng)的功能、體系結(jié)構(gòu)和郵件數(shù)據(jù)的存儲結(jié)構(gòu),并給出郵件收發(fā)流程及實現(xiàn)代碼。
XML;郵件系統(tǒng);郵件收發(fā);XCPU;XM ail
隨著中國企業(yè)上網(wǎng)工程步伐的加快和網(wǎng)上郵箱的推出,擁有自己的網(wǎng)上郵箱是每個企業(yè)的迫切希望。因此,為了實現(xiàn)郵件系統(tǒng)在企業(yè)內(nèi)部快捷、方便、可靠、高效地運行,郵件系統(tǒng)的設計目標一般有以下幾個方面的要求[1]:1)用戶操作簡單,使用方便;2)郵件收發(fā)速度快;3)郵件存儲空間利用率高,文件可共享;4)郵件傳輸高效快捷;5)能有效地對郵件進行控制和管理。為此,本文提出了一種以XML格式來存儲數(shù)據(jù)、采用基于B/S結(jié)構(gòu)的郵件系統(tǒng)設計方案,通過將應用服務單獨進行處理,從而使得用戶界面與應用服務位于不同的平臺上,方便地將整個系統(tǒng)分為不同的模塊,提高了系統(tǒng)模塊的通用性,縮短了開發(fā)周期,降低應用系統(tǒng)開發(fā)成本[2]。
可擴展標記語言(eXtensible Markup Language,XML)是由互聯(lián)網(wǎng)聯(lián)合組織(World Wide Web Consortium,W3C)在1998年制定的一種通用語言規(guī)范,它是一門新興的、面向Internet應用的標記語言,可以根據(jù)需要表現(xiàn)的文檔,通過自由定義標記來表現(xiàn)具有現(xiàn)實意義的文檔內(nèi)容。它具有以下幾方面的優(yōu)點:1)良好的可擴展性,語言簡單有效,可自行定義標記;2)內(nèi)容與形式的分離,主要刻畫數(shù)據(jù)內(nèi)容,不考慮顯示效果;3)有嚴格的語法要求,便于分析統(tǒng)一和與數(shù)據(jù)庫信息轉(zhuǎn)換;4)便于傳輸,為純文本形式,可通過 H TTP協(xié)議直接傳輸,可跨越防火墻[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)郵件創(chuàng)建:用戶可以通過該模塊進行創(chuàng)建新郵件。
2)郵件管理:通過收件箱、發(fā)件箱、草稿箱和垃圾箱對郵件進行分類管理。收件箱存儲著其他用戶發(fā)送給該用戶的郵件;發(fā)件箱用來存儲用戶在發(fā)送郵件時的郵件副本;草稿箱用來存儲未完成或暫未發(fā)出的郵件;垃圾箱存儲被刪除的郵件。
3)郵件傳輸:負責處理從顯示層到邏輯層的數(shù)據(jù)傳輸工作。該模塊分用戶信息傳輸和郵件信息傳輸兩大主要工作。用戶信息傳輸包括用戶登錄、注冊用戶、通過部門編號獲得指定的部門名稱、用戶信息修改。郵件信息傳輸包括發(fā)送郵件、保存郵件、刪除郵件、永久刪除郵件、獲取指定類型的索引列表、獲取用戶所在部門的所有部門郵件、讀取郵件、獲取新郵件、附件上傳、附件下載。
4)郵件發(fā)送、接收:郵件發(fā)送、接收模塊,即XCPU,是本系統(tǒng)的核心,負責了郵件系統(tǒng)的所有郵件數(shù)據(jù)運算工作。
5)郵件閱讀:用戶在查看郵件管理中的郵件列表時,通過點擊列表中的郵件主題,對郵件進行閱讀。用戶在閱讀郵件后,可以對這些郵件進行回復、刪除和永久刪除等操作。
6)用戶信息:用戶可以在此模塊中查看和修改用戶自己的信息。
7)用戶通訊錄:用戶可以利用通訊錄,存儲用戶常用的聯(lián)系人郵件地址。在通訊錄中,用戶可以對聯(lián)系人進行管理,如添加、修改和刪除聯(lián)系人。用戶可以對聯(lián)系人進行分類,并且可以自定義聯(lián)系人分類。用戶在創(chuàng)建新郵件時,可以調(diào)用通訊錄里面的聯(lián)系人信息。
企業(yè)內(nèi)部郵件系統(tǒng)是在Internet環(huán)境下實現(xiàn)的,采用瀏覽器/服務器(B/S)模式。服務器以Window s 2000 Server/2003 Server為操作系統(tǒng)平臺,以XML為數(shù)據(jù)存儲方式,客戶端通過瀏覽器訪問系統(tǒng)提供的服務。系統(tǒng)不允許匿名訪問,它要求用戶提供用戶名和密碼,通過驗證后才能進入系統(tǒng)主頁。用戶進入系統(tǒng)后,可以管理自己的郵件,編寫新郵件發(fā)送給企業(yè)內(nèi)部用戶。在發(fā)送時,可以同時發(fā)送附件,并可以定時發(fā)送郵件。用戶對收取到的郵件可以進行回復、刪除等操作。
郵件系統(tǒng)的體系結(jié)構(gòu)如圖1所示,共分為以下4層:
1)顯示層:以樹型結(jié)構(gòu)顯示郵件系統(tǒng)的用戶界面,供用戶完成各種郵件的操作。
2)數(shù)據(jù)傳輸層:采用 Web Services和 Socket的方式實現(xiàn)數(shù)據(jù)的傳輸與通信。
3)數(shù)據(jù)處理層:負責郵件系統(tǒng)的所有郵件數(shù)據(jù)運算工作。
4)數(shù)據(jù)存儲層:以XML格式存儲郵件數(shù)據(jù)。
圖1 郵件系統(tǒng)體系結(jié)構(gòu)圖
系統(tǒng)以XMail為主要數(shù)據(jù)處理對象,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="內(nèi)部郵件"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是本系統(tǒng)的數(shù)據(jù)處理中心,負責郵件系統(tǒng)的所有郵件數(shù)據(jù)運算工作,是一個W indow s服務程序,由數(shù)據(jù)接收中心、命令中心、XCPU緩存、數(shù)據(jù)處理中心和郵件發(fā)送中心等部分組成。
本郵件系統(tǒng)的郵件收發(fā)流程如圖2所示。
圖2 郵件收發(fā)流程
接收從 Web Service通過 Socket發(fā)送到XCPU的數(shù)據(jù),并將數(shù)據(jù)傳遞給命令中心進行分析。得到分析結(jié)果后,將數(shù)據(jù)進行XM ail轉(zhuǎn)換,如果命令類型為發(fā)送 XM ail,將 XMail存儲到XCPU的一級存儲中,并將XM ail的郵件索引添加到二級緩存中,等待數(shù)據(jù)處理中心的處理。如果命令類型為XM ail的操作,直接傳遞給數(shù)據(jù)處理中心處理。其實現(xiàn)的主要代碼如下所示:
p rivate void XScoket Ser_On Recv Data(object sender,NetEventA rgs e)
{Order order=new Order(e);
//如果當前指令類型為發(fā)送郵件
//將數(shù)據(jù)添加到一級緩存中
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進行發(fā)送處理。其實現(xiàn)的主要代碼如下所示:
private bool Send()
{if(this.to Send X M ail List.Count==0)
{return false;}
is Busy=true;//系統(tǒng)開始忙
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();//刪除已發(fā)送過的郵件索引
Move Busy To Send XM ail Index();//將臨時列表中的郵件添加到處理列表中
is Busy=false;
Remove Is To Send At Busy();//從臨時列表中移除已加載到處理列表的郵件索引
return true;
}
本郵件系統(tǒng)按照B/S結(jié)構(gòu)模型設計,通過將應用服務單獨進行處理,從而使得用戶界面與應用服務位于不同的平臺上,利用 Web Service和Socket技術(shù),實現(xiàn)了系統(tǒng)的跨服務器運行,提高了系統(tǒng)的數(shù)據(jù)處理能力和ASP.Net的訪問負載能力。同時,由于采用XML格式進行數(shù)據(jù)存儲,使數(shù)據(jù)可以通過網(wǎng)絡無障礙地進行傳輸,簡化了數(shù)據(jù)的維護與備份,具有良好的通用性、可移植性。
[1] 劉俊,閆淵源.基于數(shù)據(jù)庫的企業(yè)內(nèi)部郵件系統(tǒng)的設計[J].信息技術(shù),2008(11):112-114.
[2] 邱林,張凌.基于B/S三層結(jié)構(gòu)的電子郵件解決方案[J].計算機工程,2003(11):158-159.
[3] 崔莉.基于XML的Web文件傳輸系統(tǒng)的實現(xiàn)[J].重慶科技學院學報,2009(4):127-129.
[4] 劉長勇,寧正元.基于XML的學習流模型的研究[J].重慶工學院學報,2009(2):176-180.
[5] 靳志強,滕桂法,孫晨霞,等.基于XML與動態(tài)數(shù)據(jù)集成模型的異構(gòu)數(shù)據(jù)訪問接口設計與實現(xiàn)[J].河北農(nóng)業(yè)大學學報,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— ),男,福建建甌人,武夷學院動漫學院講師,碩士。
(責任編輯:陳錦華)