《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 一個(gè)基于Email的數(shù)據(jù)交換模型

一個(gè)基于Email的數(shù)據(jù)交換模型

2010-01-29
作者:崔學(xué)榮,李 娟

摘   要: 提出一種具有平臺(tái)獨(dú)立性的基于Email的5層數(shù)據(jù)交換模型,以實(shí)現(xiàn)在異構(gòu)的網(wǎng)絡(luò),、操作系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)之間交換數(shù)據(jù),。分析了該模型的工作原理和使用環(huán)境,分層設(shè)計(jì)并實(shí)現(xiàn)了該模型,,最后給出了具體應(yīng)用實(shí)例,。
關(guān)鍵詞: Email  數(shù)據(jù)交換  防火墻  SMTP  POP3

  網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫(kù)技術(shù)已經(jīng)成為計(jì)算機(jī)軟件應(yīng)用領(lǐng)域的二大熱點(diǎn),同時(shí),,基于Intranet/Internet環(huán)境下企業(yè),、部門之間數(shù)據(jù)交換的次數(shù)越來(lái)越多,情況也越來(lái)越復(fù)雜,。使用傳統(tǒng)的編程模式很難滿足一些特殊數(shù)據(jù)交換的要求,。例如,勝利油田物資供應(yīng)處價(jià)格管理科需要把所有供應(yīng)商的產(chǎn)品報(bào)價(jià)及時(shí)匯總,,進(jìn)行統(tǒng)計(jì),、比較。這些供應(yīng)商中有一部分是油田內(nèi)部的企業(yè)(這些企業(yè)只能與油田局域網(wǎng)連通),,還有一部分是分布在全國(guó)各地的供應(yīng)商(這些企業(yè)只能與Internet連通),。如何通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)進(jìn)行匯總,一直是一個(gè)難題,。解決該問(wèn)題最簡(jiǎn)單的方法就是使用B/S模式建立一個(gè)Web服務(wù)器,,所有用戶都通過(guò)Web瀏覽器訪問(wèn)該服務(wù)器,。但是因?yàn)橛吞颕ntranet和外部Internet之間除了可以發(fā)送和接收電子郵件外,其他服務(wù)(如FTP,、HTTP等)均被防火墻斷開(kāi),。所以必須在Intranet和Internet上分別建立2個(gè)Web服務(wù)器,本文將介紹如何用Email數(shù)據(jù)交換模型來(lái)合并這2個(gè)服務(wù)器上的數(shù)據(jù),。
1  Email數(shù)據(jù)交換模型的工作原理
  在Internet上,,Email是常用的網(wǎng)上服務(wù)之一。用戶將郵件提交給郵件服務(wù)器后,,還需要由服務(wù)器進(jìn)行一系列的傳遞操作,,才能將郵件傳送到目的地址所在的郵件服務(wù)器。這一傳送過(guò)程的實(shí)現(xiàn)依賴于簡(jiǎn)單郵件傳輸協(xié)議(Simple Mail Transfer Protocol,,SMTP),。SMTP定義了一套有效的郵件傳遞規(guī)則,它以協(xié)議的方式規(guī)定了網(wǎng)絡(luò)中全部郵件服務(wù)器共同遵守的準(zhǔn)則,。電子郵件服務(wù)除了依賴于SMTP之外,,還需要郵局協(xié)議(Post Office Protocol,POP)的支持,。SMTP負(fù)責(zé)郵件的傳遞:從客戶機(jī)到郵件服務(wù)器,,以及服務(wù)器之間的傳遞工作。在傳遞過(guò)程中,,如果網(wǎng)絡(luò)忙或者線路狀況不好,,郵件服務(wù)器會(huì)每隔一定時(shí)間重新嘗試發(fā)送郵件,所以即使網(wǎng)絡(luò)不是很穩(wěn)定,,也可以發(fā)送成功,。而POP協(xié)議能夠讓客戶檢索到由SMTP發(fā)送來(lái)的郵件,并將其下載到用戶本機(jī),。
  該模型使用SMTP將需要交換的數(shù)據(jù)發(fā)送到特定的郵件服務(wù)器中,,然后由郵件服務(wù)器完成郵件的發(fā)送工作;在接收端使用POP協(xié)議,,定時(shí)檢測(cè)郵件服務(wù)器中是否有新郵件到達(dá),。如果有則判斷是否合法,若合法,,則自動(dòng)將數(shù)據(jù)下載到客戶端,,然后自動(dòng)保存到本地?cái)?shù)據(jù)庫(kù)中。
2  Email數(shù)據(jù)交換模型的設(shè)計(jì)與實(shí)現(xiàn)
  Email數(shù)據(jù)交換模型的體系結(jié)構(gòu)如圖1所示,??梢钥吹剑撃P凸卜譃?層,。最底層(第1層)是Email服務(wù)器層(Email Server Layer),,負(fù)責(zé)數(shù)據(jù)文件的發(fā)送和接收,;最高層(第5層)是數(shù)據(jù)庫(kù)管理系統(tǒng)層(DBMS Layer),在通信終端存儲(chǔ)管理數(shù)據(jù),;中間各層分別是數(shù)據(jù)文件層(Data File Layer),、壓縮文件層(Compressed file Layer)和Email層;它們分別完成數(shù)據(jù)的導(dǎo)出,、導(dǎo)入,壓縮,、解壓數(shù)據(jù)文件,,將壓縮文件封裝成Email、拆分提取數(shù)據(jù)文件等,。

2.1 DBMS Layer的設(shè)計(jì)
  數(shù)據(jù)庫(kù)管理系統(tǒng)層是最高層,,用于存儲(chǔ)管理數(shù)據(jù)。在基于Internet或Intranet的異構(gòu)數(shù)據(jù)庫(kù)環(huán)境中,,數(shù)據(jù)庫(kù)可能包括Oracle,、Sybase、MS SQL Server,、DB2和ACCESS等類型,。
2.2 Data File Layer的設(shè)計(jì)與實(shí)現(xiàn)
  由于各終端的數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、組織方式,、信息描述存在差異,,同時(shí)各個(gè)操作系統(tǒng)(Windows、Unix,、Linux等)也可能存在差異,,所以,這一層要完成2個(gè)功能:①導(dǎo)出,,從源數(shù)據(jù)庫(kù)將特定條件下的數(shù)據(jù)轉(zhuǎn)換到指定格式的數(shù)據(jù)文件,。②導(dǎo)入,把導(dǎo)出的數(shù)據(jù)文件轉(zhuǎn)換到目的數(shù)據(jù)庫(kù)中,。根據(jù)不同的應(yīng)用環(huán)境要求,,數(shù)據(jù)文件可以是以下3種。
  (1)XML半結(jié)構(gòu)化數(shù)據(jù)文件
  XML(Extensible Markup Language)是專門為Web應(yīng)用設(shè)計(jì)的SGML(Standard Generalized Markup Language)的一個(gè)優(yōu)化子集,。數(shù)據(jù)交換是XML最重要的用途之一,。由于XML具有可擴(kuò)展性、自描述性和跨平臺(tái)性,,所以使得不同計(jì)算機(jī)應(yīng)用系統(tǒng)之間交換數(shù)據(jù)變得容易起來(lái),。XML同HTML類似,也是一種元標(biāo)記語(yǔ)言,,具有自描述性,,同時(shí)也具有可擴(kuò)展性,,即使用者可以根據(jù)系統(tǒng)的要求創(chuàng)建新的標(biāo)記。此外,,XML是一種跨平臺(tái)的獨(dú)立于系統(tǒng)的標(biāo)記語(yǔ)言,。XML現(xiàn)已成為網(wǎng)絡(luò)系統(tǒng)中應(yīng)用較廣的一種數(shù)據(jù)交換格式。
  在導(dǎo)入,、導(dǎo)出XML數(shù)據(jù)時(shí),,可以使用常用的編程語(yǔ)言,調(diào)用XML文件的接口SAX(Simple API for XML)或者DOM(Document Object Model)等對(duì)XML文件進(jìn)行讀寫,。
  總體上看,,XML能很好地實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)之間的透明互操作,是一個(gè)不錯(cuò)的數(shù)據(jù)交換媒介,。但是如果每次導(dǎo)出部分?jǐn)?shù)據(jù),,而且可能多次導(dǎo)出時(shí),這種方法可能在目的數(shù)據(jù)庫(kù)中存在重復(fù)的數(shù)據(jù),,此時(shí)必須在插入數(shù)據(jù)前,,先刪除重復(fù)的數(shù)據(jù)。
  (2)SQL語(yǔ)句集合文件
  SQL語(yǔ)句集合文件就是系統(tǒng)將源數(shù)據(jù)庫(kù)端的數(shù)據(jù)操縱語(yǔ)言都記錄下來(lái),,當(dāng)用戶導(dǎo)出數(shù)據(jù)時(shí),,將這些操縱數(shù)據(jù)的SQL語(yǔ)句另存為固定格式的文件。在目的數(shù)據(jù)庫(kù)端,,再重新執(zhí)行這些SQL語(yǔ)句,。SQL語(yǔ)句集合文件示例如下:
  DELETE FROM 報(bào)價(jià)WHERE 廠家=′Intel′;
  UPDATE報(bào)價(jià)SET 價(jià)格=2000 WHERE物碼=′20050501001′,;
  INSERT INTO 廠家VALUES(′intel′,,′北京′,′010-88888888′,,′CPU′),;
  這種方法在編寫導(dǎo)入、導(dǎo)出程序時(shí)非常簡(jiǎn)單,。但要注意,,如果在異構(gòu)數(shù)據(jù)庫(kù)之間交換數(shù)據(jù),部分SQL語(yǔ)句可能要進(jìn)行適當(dāng)改寫,。例如:如果源數(shù)據(jù)庫(kù)是ORACLE,,則語(yǔ)句“UPDATE報(bào)價(jià)set物碼=substr(物碼,8,,3)”,,在目的數(shù)據(jù)庫(kù)SQL Server中應(yīng)該是“UPDATE報(bào)價(jià)set物碼=substring(物碼,8,,3)”,,在目的數(shù)據(jù)庫(kù)ACCESS中應(yīng)該是“UPDATE報(bào)價(jià)set物碼=mid(物碼,,8,3)”,。這些轉(zhuǎn)換影響了系統(tǒng)的跨平臺(tái)性,。
  (3)結(jié)構(gòu)化數(shù)據(jù)庫(kù)文件的設(shè)計(jì)
  結(jié)構(gòu)化數(shù)據(jù)庫(kù)文件就是指類似ACCESS、EXCEL,、DBF和TXT等的數(shù)據(jù)庫(kù)文件,。這些基于文件管理的數(shù)據(jù)庫(kù)可以作為數(shù)據(jù)交換的媒介。在源數(shù)據(jù)庫(kù)端,,將要傳輸?shù)臄?shù)據(jù)插入到中間數(shù)據(jù)庫(kù)文件中,。在目的數(shù)據(jù)庫(kù)端將這些中間數(shù)據(jù)庫(kù)文件的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
在這類文件中,,需要保證源數(shù)據(jù)庫(kù),、中間數(shù)據(jù)庫(kù)和目的數(shù)據(jù)庫(kù)中表的結(jié)構(gòu)相同,。這樣導(dǎo)入和導(dǎo)出程序就可以直接查詢,,然后插入即可。
  這種方法編寫程序簡(jiǎn)單,,但也存在跨平臺(tái)的問(wèn)題,,存在像XML那樣的可能會(huì)出現(xiàn)重復(fù)記錄的問(wèn)題。用戶可以根據(jù)自己的實(shí)際情況,,選擇不同的中間數(shù)據(jù)文件,。
2.3 Compressed File Layer的設(shè)計(jì)與實(shí)現(xiàn)
  在源數(shù)據(jù)庫(kù)端對(duì)導(dǎo)出的文件進(jìn)行壓縮,在目的數(shù)據(jù)庫(kù)端對(duì)接收到的數(shù)據(jù)文件進(jìn)行解壓,,以便減小文件的大小,,提高傳輸?shù)乃俣取?br />   可以在編程語(yǔ)言中調(diào)用一些常用壓縮文件,如Winzip,。以下是在ASP(Active Server Pages)編程語(yǔ)言中調(diào)用Winzip的示例,。
  Set WshShell=server.CreateObject(″Wscript.Shell″)
  path=Server.MapPath(″\″)
  IsSuccess=WshShell.Run(path&″\wzzip.exe ″& path&″\import.zip″&path &″\dbf_downld\*.*″,1,,true)
  如果交換的數(shù)據(jù)文件都較小,,則可以不對(duì)數(shù)據(jù)文件進(jìn)行壓縮和解壓。
2.4 Email Layer的設(shè)計(jì)
  發(fā)送端在這一層完成Email的封裝工作,,接收端完成郵件的拆分工作,。一個(gè)Email主要包括標(biāo)題(Subject)、正文(Body)和附件(Attachment)等,。其中在Attachment中加入壓縮文件,,在Body中加入相關(guān)的備注信息,在Subject中加入特定的標(biāo)識(shí)(以便系統(tǒng)能自動(dòng)識(shí)別是否為需要傳輸?shù)奈募?,避免其他垃圾郵件),。例如,,在標(biāo)題中用“EDC:”開(kāi)始,這樣在接收到郵件后,,就要首先判斷標(biāo)題是否是以“EDC:”開(kāi)始,,如果是則為合法郵件,否則就不是,。目的數(shù)據(jù)庫(kù)端主要流程如圖2所示,。

2.5 Email Server Layer的設(shè)計(jì)與實(shí)現(xiàn)
  發(fā)送端在這一層用SMTP協(xié)議完成Email的發(fā)送工作,接收端用POP3協(xié)議完成郵件的接收工作,。在系統(tǒng)中,,可以使用Socket編程完成郵件的發(fā)送和接收。但是,,這種方法編寫程序比較復(fù)雜,,本文不予討論。也可以使用一些第三方組件來(lái)完成郵件的發(fā)送和接收,。例如:W3 Jmail可以滿足該模型的要求,。以下是用該組件在VB中實(shí)現(xiàn)郵件的發(fā)送和接收。
  //發(fā)送郵件
  Dim msg As New jmail.Message
  msg.MailServerUserName=txtUsername
  msg.MailServerPassWord=txtPassword
  msg.From=txtFromEmailAddress
  msg.AddRecipient txtToEmailAddress
  For i=0 To lstAttachments.ListCount - 1
     lstAttachments.ListIndex=i
     msg.AddAttachment(lstAttachments.Text)
  Next i
  msg.Subject=txtEmailSubject
  msg.Body=txtEmailBodyOfMessage
  msg.Send(txtEmailServer)
  //接收郵件
  Dim pop3 As New jmail.pop3
  pop3.Connect txtUsername,,txtPassword,,txtEmailserver
  For i=1 To pop3.Count
     Set msg=pop3.Messages.Item(i)
     Print msg.Body
     Print msg.Subject
     pop3.DeleteSingleMessage(i)
  Next
3  基于Email的數(shù)據(jù)交換實(shí)例
  該實(shí)例可以解決本文開(kāi)頭提出的勝利油田物資供應(yīng)處價(jià)格管理科的供應(yīng)商報(bào)價(jià)問(wèn)題。其系統(tǒng)的拓?fù)浣Y(jié)構(gòu)如圖3所示,。

  系統(tǒng)分別在油田的Intranet和外部Internet上設(shè)立2個(gè)Web服務(wù)器,,分別供油田內(nèi)部企業(yè)和全國(guó)各地其他企業(yè)上報(bào)產(chǎn)品價(jià)格。Internet網(wǎng)上的用戶在報(bào)完價(jià)格后,,在本地保存,,同時(shí)用戶可以點(diǎn)擊上報(bào),將數(shù)據(jù)文件導(dǎo)出,、壓縮,、封裝郵件、發(fā)送郵件,;局域網(wǎng)內(nèi)的Web服務(wù)器定時(shí)到Email服務(wù)器(該Email服務(wù)器在Intranet和Internet上都可以訪問(wèn))上收取郵件,、解壓、導(dǎo)入數(shù)據(jù),。最終在Intranet上的數(shù)據(jù)是完整的數(shù)據(jù),,供應(yīng)處的領(lǐng)導(dǎo)可以隨時(shí)進(jìn)行查詢,對(duì)各個(gè)廠家的報(bào)價(jià),、同一廠家各個(gè)時(shí)間的報(bào)價(jià)等進(jìn)行比較,。
  這樣,該系統(tǒng)就可以穿過(guò)油田局域網(wǎng)和外部Internet的HTTP、FTP等協(xié)議的防火墻,,通過(guò)SMTP和POP3協(xié)議完成數(shù)據(jù)的匯總,,極大地方便了用戶的使用。
4  結(jié)束語(yǔ)
  基于Email的數(shù)據(jù)交換模型是使用SMTP協(xié)議和POP3協(xié)議,,完成不同數(shù)據(jù)庫(kù)數(shù)據(jù)的交換,。該模型可以跨越除SMTP/POP3之外的防火墻,具有平臺(tái)獨(dú)立性,,可以在異構(gòu)的網(wǎng)絡(luò),、操作系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)之間交換數(shù)據(jù),適應(yīng)惡劣的網(wǎng)絡(luò)環(huán)境,,完成傳統(tǒng)的數(shù)據(jù)交換模型無(wú)法或者很難完成的工作,。該模型具有非常廣的應(yīng)用和推廣價(jià)值。
參考文獻(xiàn)
1   朱韻篪,,程代杰.基于XML的分布式數(shù)據(jù)交換中間件模型設(shè)計(jì).計(jì)算機(jī)工程與設(shè)計(jì),,2003;24(8)
2   黃紅明,,尹志兵,,熊桂喜.基于XML的數(shù)據(jù)交換技術(shù)的研究及其在大型系統(tǒng)中的應(yīng)用.計(jì)算機(jī)應(yīng)用研究,2003,;20(12)
3   劉驚雷,,王香紅,,華臻.基于WinSock的電子郵件后臺(tái)監(jiān)聽(tīng)程序設(shè)計(jì).計(jì)算機(jī)工程,,2003;29(1)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。