一種基於XML的數據通信模型的設計與實現

論文類別:計算機論文 > 計算機應用論文
論文標簽:數據通信論文
論文作者: 趙磊 杜玉蘭
上傳時間:2008/5/5 10:16:00

摘 要 分析了一個典型站點式远程監控系統的要求和特點,提出了用XML文件封裝數据並通過收發文件來解決系統中的數據通信問題,詳細介紹了模型的設計方案和各層次功能,確定了XML文件的結構,給出了文件发送模塊的接口和文件隊列的控制方法,最後實現了系統的通信功能。
  關鍵詞 XML;數據通信;監控系統

1 引言

  在解決一個監控系统的信息傳輸問題時,遇到了一些困難,主要的原因是該系統中的数據類型多,發送的方向雜,控制起來比較繁瑣。而引入XML文件後使得這個問題變得簡單化。

2 監控系統的数據通信

  數據通信是依照一定的通信協議,利用數據传輸技術在兩個終端之間傳遞數據信息。它可實现計算機和計算機、计算機和終端以及終端與終端之間的數據信息傳遞。在分布式監控系統中,數據通信是最基本的問題。如圖1所示是一個比較典型的站點式遠程監控系統的模型。
圖1 典型站點式遠程監控系统模型
  在这個系統中,監控中心和站点之間要相互發送數據,基本上有三種情況:
  (1) 站點→監控中心
  如站點采集到的现場數據、抓拍的圖片信息、报警信息、站點收到監控中心發来的數據後回發的確認應答信息等。
  (2) 監控中心→站点
  如监控中心發往站點的基礎數据與系統運行參數、監控中心收到站點發來的數據後回发的確認應答信息、監控中心給站點的遠程控制指令等。
  (3) 站點→站點
  有些事務可能需要兩個站点共同完成(如在站點A稱得皮重,在站點B稱得毛重,两個站點要相互交換數據才能得到凈重值),因此在站點之間也會發送數據,而這些數據監控中心是不关心地。
由此可見,在这個站點式監控系統中有多種数據要互相發送,並且數據的發送是隨機的、雜亂的、動態的,內容相異,格式不同,種類繁多。另外,監控中心通過局域網連接Internet,可以有固定的IP地址,而站點使用ADSL連接,通常其IP地址是不固定的,用Socket通信机制作為系統的數據通道時,把監控中心做為Socket Server,啟動偵聽,站点只能做Socket Client,主動連接Server。站點之間若要相互傳送數據,則只能通過監控中心來轉發,更增加了監控中心和站點之間收發數據的復雜性。

3 XML及其特點

  XML(EXtensible Markup Language)是可擴展標記語言,類似於HTML,但和HTML不同的是XML的標記不是預先定义好的,用戶可以且必須自己定義標記。XML是用來描述數據和保存數據的一種靈活而有效的方式,能夠清楚地表示出:什麽是數据,有什麽數據及如何組織數據。XML是Web上表示結構化信息的一種標準文本格式,广泛用於網絡數據交換,具有“易于生成數據”的優點。
  XML支持世界上幾乎所有的主要語言,並且不同語言的文本可以在同一文檔中混合使用,應用XML的軟件能處理這些語言的任何組合。所有這一切將使XML成為数據表示的一個開放標準,這種數据表示獨立於機器平臺、供應商以及编程語言。XML被引入許多網絡協議,以便於為二个軟件提供相互通信的標準方法,如簡單對象訪問協议(SOAP)和XML-RPC规範。
  XML數據是以純文本格式存儲的,提供了一種與軟件和硬件無關的共享數据方法,所以XML數據文件可以被更多的用戶、更多的設備所利用,而不僅僅是基於HTML標準的瀏覽器。XML是不同系統之間的橋梁。

4 系統模型的建立

  根據監控系統的功能要求和XML的特點,將系統的數據通信問題轉化為如何實現網絡文件傳輸和如何使用XML文件表示數據這兩個子问題。同時,為了便於實現,提高系统的可靠性、穩定性及可維護性,采用層次結構,將系統的功能劃分為七層模型,如圖2所示:
一种基于XML的数据通信模型的设计与实现
圖2 層次結構模型
  (1) 物理鏈路層:是指網絡通讯的線路,本系統采用電信的ADSL有線方式,其它也可以是局域網(雙絞線、同軸電纜、光纖等)或者無線通訊方式(GPRS、GSM、CDMA等);物理鏈路層是系统數據通信的基礎,但與上層的實現方式基本無關。
  (2) 标準網絡協議層:是指TCP/IP(Transmission Control Protocol/Internet Protocol)協議族,網絡中TCP/IP協議叫做傳輸控制/网際協議,又叫網絡通訊协議,是Internet國際互联網絡的基礎,其中的TCP協议和UDP(User Datagram Protocol)协議是兩種最常用的數據通信協議。
  (3) 文件傳輸層:使用Socket(套接字)技術实現文件的傳輸。Socket是Windows與網絡的接口。Windows通过Socket把數據格式轉換成網絡傳輸格式,也把網絡數據格式轉換成Windows格式。Socket可以使用面向連接的協议(如TCP),也可以使用無連接的協議(如UDP)。Socket一般用來描述IP地址和端口,是一個通信鏈接的句柄。應用程序通常通過Socket向網絡發出請求或者應答網絡請求,可以通過Socket傳送數據,进一歨封裝成傳送任何文件(字节流)的功能。
  (4) XML文件控制层:在XML中的數據可能是接收到的數據,也可能是要發送的數據,監控中心和站点必須準確控制XML文件的接收和發送。特別是對於監控中心,可能同時接收到多個站點發送來的XML文件,發送XML文件時也要准確控制發送的目標站點。
  (5) XML文件封裝/解析層:這是兩個相逆的過程,也是兩種相對應的操作。XML文件封裝是指將要發送的数據按照一定的協議打包組裝成一個特定格式的XML文件,解析是指對一個XML文件按照特定的協議進行分析解讀,還原出其中所描述的數據。
  (6) 數據表示层:將采集到的數據、處理中的数據或者在數據庫中存儲的數據等各種數據格式轉換為能夠用XML文件描述的格式。這一層在本地操作的數據和遠程傳輸的數據之間建立了一個通道,使兩者之間互不影響,從而不會降低系統的執行效率。
  (7) 業務邏辑層:實際上就是整個系統的用戶接口,或者說是系統功能的實現层,包括打印單據、防作弊、报警處理、用戶管理、查詢统計、費用計算、實時監控、基礎數據錄入、系统管理等。

5 系統實現

5.1 網絡文件傳輸

5.1.1 动態鏈接庫
  本系統使用VC++開發專門用于網絡文件傳輸的動態鏈接庫(DLL),基於對字節流的處理可以傳輸任何文件,因此對於XML文件的傳輸來說是透明的。該動態鏈接庫的主要接口及其功能如下:
  (1) 初始化。服务器端要先啟動監聽,客戶端主動聯接。
  DWORD DT_Net_InitServer(BOOL bIsServer = TRUE);
  參數:bIsServer表示是否將此Socket端用作服務
  返回:0或者錯誤代碼
(2) 設置回調函數接口
  DWORD DT_Net_SetCallBack(LPVOID pParam,LPNET_ ACCEPT_CALLBACK pAccept,LPNET_RECV_CALLBACK pRevc,LPNET_DISCONN_CALLBACK pDisConnect,LPNET_ LOG_CALLBACK pLogInfo);
  包括请求連接、接收到數据、斷開連接和日誌回調。
  (3) 設置文件操作的回調函數接口
  DWORD DT_Net_SetFileCallBack(LPCTSTR pSavePath, LPNET_SENDFILE_CALLBACK pSendFile,LPNET_ RECV FILE_CALLBACK pRecvFile,LPNET_ABORTFILE_ CALL BACK pAbortFile);
  包括文件發送完畢、接收到文件、文件發送中断的回調。
  (4) 服務器啟動監聽
  DWORD DT_Net_StartListen(LPCTSTR pszLocalIP, unsigned long nSvrPort);
  參数:pszLocalIP-服务器IP地址
      nSvrPort-服務器端口號
  返回:0或者錯誤代碼
  (5) 服務器停止監聽
  DWORD DT_Net_StopListen();
  
免費論文下載中心 http://www.hi138.com (6) 發送文件
  DWORD DT_Net_SendFile(unsigned int nIDSocket, LPCTSTR pstrFileName, LPCTSTR pszReName=NULL);
  參數:nIDSocket-Client端套接字句柄
  pstrFileName-文件名稱(全部路徑)
  pszReName-文件重命名
  (7) 中止文件發送
  DWORD DT_Net_AbortFile(unsigned int nIDSocket);
  參數:nIDSocket-Client端套接字句柄
  (8) 斷開連接
  DWORD DT_Net_DisConnect(unsigned int nIDSocket);
  參數:nIDSocket-套接字句柄
  (9) 連接服務器
  DWORD DT_Net_ConnectRemote(LPCTSTR pstrRemoteIP, unsigned long nRemotePort);
  參數:pstrRemoteIp-服務器IP地址;
  nRemotePort-服務器端口號
5.1.2 實現文件傳輸
  將監控中心作為Socket Server,启動監聽:
  DT_Net_InitServer(TRUE);
  DT_Net_StartListen(ServerIP,ServerPort);
  然後設置回调函數:
    DT_Net_SetCallBack(self,LPNET_ACCEPT_CALLBACK, LPNET_RECV_CALLBACK,LPNET_DISCONN_CALLBACK, LPNET_LOG_CALLBACK);
    DT_Net_SetFileCallBack(PChar('d:\temps'),LPNET_ SEN     DFILE_CALLBACK,LPNET_RECVFILE_CALLBACK,LPNET_ABORTFILE_CALLBACK);
  各站點作為Socket Client,也设置回調函數,並主動去連接Server:
    DT_Net_InitServer(FALSE);
    DT_Net_SetCallBack(self,LPNET_ACCEPT_CALLBACK,   LPNET_RECV_CALLBACK,LPNET_DISCONN_CALLBACK, LPNET_LOG_CALLBACK);
    DT_Net_SetFileCallBack(PChar('c:\tempc'), LPNET_ SEN DFILE_CALLBACK,LPNET_RECVFILE_CALLBACK,LPNET_ABORTFILE_CALLBACK);
    DT_Net_ConnectRemote(ServerIP,ServerPort);
  每個站點和監控中心之間建立唯一的獨立通道,當連接建立成功後,就可以利用該套接字在該站點與監控中心之間收發文件:
  DT_Net_SendFile(theSocket,FileName);

5.2 XML文件封裝協议

  不同的數據最終封裝成的XML文件是不同的,但是為了便於处理,把每一個XML文件分成兩個主要的部分(Head和Data),如圖3所示:
一种基于XML的数据通信模型的设计与实现
圖3 XML結構示意图
  (1) Head部分
  系統中的任何一個XML數據文件都有相同的Head(數据包頭),表明該XML文件的優先級(priority)、數據種類(FrameType)、來自何处(FromStationNo,站點編號,如果是服務器則為“0”)以及封裝时間(DateTime)。
  (2) Data部分
  這一部分是XML文件所要封裝的數據內容,基本按字段格式排列即可。要註意數據類型轉換的問題,任何數據都必須想方設法轉換成字符串類型的表示形式。

5.3 XML文件控制

  在實现了文件傳輸的基礎上,對XML文件的封裝、解析、接收和发送等操作使用多線程方式並行處理,並且引入隊列(Queue)的機制。監控中心的基本處理機制與流程如圖4所示:
一种基于XML的数据通信模型的设计与实现
圖4 監控中心處理線程與流程
  文件接收線程接收到XML文件後,先不管文件的具體內容,只負責將文件入隊。然後由專門負責从隊列中提取文件的線程將文件取出,由處理線程進行解析、处理,並將數據保存至數據庫,同时還要生成確認應答的XML文件放如發送隊列中。另外有專門負责發送文件的線程將文件發送出去。監控中心要往各站點發送的數據有一個獨立的線程負責從數據庫中讀取相應數據封裝成XML文件放入发送隊列,等待發送。數據處理線程負責對数據庫中的數據做進一步的業務處理,而系統監管線程主要的任務就是监視其它各個線程的狀態,及時進行調整、修復或者发出報警,以保證系統正常運行。
  站點的處理與監控中心的處理比較相似,但更為簡單,因為監控中心面對多個站點,而站點只面對一個監控中心。
  要保證監控中西文件處理的速度和系统運行的效率還要考慮以下几個問題:
  (1) 優先級
  (2) 區分文件是哪個站點發送來的或者要發送給哪個站點
  (3) 文件隊列的管理
  雖然XML文件的<Head>部分有優先級和站點編號信息,但是需要解析XML文件才能得到,為此要把文件名定為“優先級_站點編號_流水號.xml”的格式,可在一定程度上方便處理的过程。另外,文件隊列可能存在積壓現象,即入隊快而出隊慢,並且會造成惡性循環使系統性能持續降低,針對這種情況制定一個限度,當隊列中的文件數達到此限度,則停止入队,即把新生成的XML文件丟棄。

6 結束語

  利用上述方法解決了一個站點式遠程監控系統的數據傳輸問題,使原本错綜復雜地、多種格式數據相互收发控制變得邏輯簡單、層次分明、實現方便、安全可靠、穩定高效。經實際應用和测試,該方法是完全可行的,效果很好。

參考文獻

  [1] 周紅波等.基於XML的數據交换及其參照完整性研究[J].計算機工程與设計,2006,14(27).
  [2] 姜林枫.基於XML的安全數據交換方案[J].計算機安全,2006(8).
  [3] 秦傑等.基於XML的Web數據模型[J].計算機科學,2006,7(33).
  [4] 邱仲潘等編著.Visual C++ 6 從入門到精通(普及版)[M].電子工業出版社,2005.
  [5] MarkBirbect.XML高級編程(第2版)[M].北京:機械工業出版社,2002.
轉貼于 免費論文下載中心 http://www.hi138.com
下载论文

論文《一種基於XML的數據通信模型的設計與實現》其它版本

計算機應用論文服務

網站聲明 | 聯系我們 | 網站地圖 | 論文下載地址 | 代寫論文 | 作者搜索 | 英文版 | 手機版 CopyRight@2008 - 2017 免費論文下載中心 京ICP备17062730号