劉長勇,許 曉
(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— ),男,福建建甌人,武夷學院動漫學院講師,碩士。
(責任編輯:陳錦華)