婁七明,傅錦偉
(紅河學院工學院,蒙自661199)
基于.NET Remoting的文件傳輸系統(tǒng)設計和實現(xiàn)
婁七明,傅錦偉
(紅河學院工學院,蒙自661199)
探討.NET Remoting的基本工作原理,給出文件傳輸系統(tǒng)的基本結構模型,然后基于.NET Remoting和SQL Server 2000實現(xiàn)一個安全、高效、實用的文件傳輸及管理系統(tǒng)。
.NET Remoting;遠程對象;文件傳輸系統(tǒng);SQL Server 2000;委托
隨著計算機技術、數(shù)據(jù)庫技術和網(wǎng)絡技術的不斷發(fā)展和完善,各行政企事業(yè)單位都相繼建立了基于網(wǎng)絡的辦公自動化系統(tǒng)。辦公自動化系統(tǒng)中最重要的組成部分就是公文處理,因此如何實現(xiàn)文件在網(wǎng)絡中安全準確快捷地傳輸是建立辦公自動化系統(tǒng)的核心。
.NET Remoting提供了進程間通信的抽象方法,簡化了分布大對象的訪問,在絕大部分情況下,服務群序通過簡單的設置就可以把本地對象變成可以為遠程提供服務的遠程對象而客戶端則可以以類似訪間本地對象的方法透明地訪問遠程對象。技術能夠使位于不同計算機上的進程之間互相通信,并支持HTTP、TCP等多種協(xié)議,這為構建文件傳輸系統(tǒng)提供了一種非常實用的技術。
.NET Remoting是一種.NET框架中執(zhí)行進程間通信的方式。由于.NET沒有使用DCOM,因此.NET Remoting是DCOM的替代技術,它可以用于網(wǎng)絡上不同計算機的基于CLR的不同應用程序間的通信,也可以用于相同計算機上基于CLR的不同應用程序間的通信。.NET是基于進程間通信的機制,進程間通信需要一個向其進程外調(diào)用方提供功能的服務器對象、一個在服務器對象上進行調(diào)用的客戶端以及一個將調(diào)用從一端運送到另一端的傳輸機制??蛻粽{(diào)用服務器對象的方法要么創(chuàng)建對象的完整副本,并移動到客戶端,即值調(diào)用(MBV);要么向客戶端進程傳遞一個服務器對象的引用,實現(xiàn)引用調(diào)用(MBR)。由于復制整個服務器對象將占用很大的帶寬和浪費客戶端的內(nèi)存和CPU資源,而且在傳輸過程中存在很大的安全隱患,因此采用引用調(diào)用是.NET Remoting進程通信的核心處理過程。為便于處理,.NET Remoting向程序員提供了更為簡單的處理過程,只需正確地配置客戶端,使用new就可以創(chuàng)建遠程對象的實例。.NET Remoting使用代理對象來產(chǎn)生服務器對象位于客戶進程中的效果。其通信過程如圖1所示。

圖1.NET Remoting通信模式
當客戶端創(chuàng)建遠程對象的實例時,遠程處理基礎結構創(chuàng)建與遠程對象完全相同的代理對象,并向客戶端對象返回一個該代理對象的引用。當客戶調(diào)用此方法時,遠程處理系統(tǒng)接受調(diào)用,檢查類型消息,并通過客戶端通道將請求捆綁成消息傳送到服務器通道。服務器偵聽通道獲取該請求并將其發(fā)送給服務器遠程處理系統(tǒng),服務器遠程處理系統(tǒng)查找并調(diào)用服務器對象,進行相應的處理。然后此過程將反向進行,服務器遠程處理系統(tǒng)將處理結果捆綁成消息發(fā)送到客戶端通道,最后客戶端遠程處理系統(tǒng)通過代理將最終結果返回給客戶對象。
文件傳輸系統(tǒng)的結構設計
文件傳輸系統(tǒng)采用三次結構進行設計,從邏輯上分為客戶端文件收發(fā)服務層、服務器端文件接收層和數(shù)據(jù)庫服務層。客戶端文件收發(fā)服務層主要提供用戶進行文件發(fā)送和接收的用戶界面及其功能;服務器端文件接收層的主要功能是實現(xiàn)文件的接收,并把相關信息寫入底層數(shù)據(jù)庫;數(shù)據(jù)庫服務層的功能是為整個文件系統(tǒng)提供數(shù)據(jù)庫支持,保存文件發(fā)送的信息,以便能夠實現(xiàn)文件的離線傳輸和下載。系統(tǒng)的基本結構如圖2所示。

圖2 文件傳輸系統(tǒng)的基本結構
文件傳輸系統(tǒng)數(shù)據(jù)庫的主要功能是用于記錄用戶及用戶之間發(fā)送文件的相關信息,主要涉及到用戶信息表和文件傳輸信息表。用戶信息表用于存放發(fā)送文件的用戶信息,文件傳輸信息表用于存放用戶傳輸文件的相關信息。這兩個表的基本結構如下。

表1 用戶信息表

表2 文件傳輸信息表
3.1定義用于文件傳輸?shù)倪h程對象類
為實現(xiàn)不同應用程序域之間的文件傳輸需要定義繼承MarshalByRefObject的遠程對象類NetFileTransfer。


其中,MessageHandler是如下的一個委托:

3.2客戶端的實現(xiàn)
(1)定義客戶端組件
定義客戶端組件NetFileTransferClient,用于實現(xiàn)與服務器端的連接,獲得遠程對象引用,并實現(xiàn)文件的發(fā)送。該組件的主要成員如下:

(2)客戶端界面設計
設計如圖3所示的客戶端窗口frmClient,主要代碼如下:


圖3 客戶端窗口frmClient
3.3服務器端的實現(xiàn)
(1)定義服務端組件
定義服務器端組件NetFileTransferServer,用于實現(xiàn)遠程對象的注冊。該組件的主要成員如下:


(2)服務器端界面設計
設計如圖4所示的服務器端窗口frmServer,主要代碼如下:

圖4 服務器端窗口frmServer


使用本文所述文件傳輸方法構建文件管理系統(tǒng)簡單、高效。系統(tǒng)能夠很好地實現(xiàn)局域網(wǎng)內(nèi)文件的安全傳輸,并且提高了文件傳輸?shù)乃俣?,能夠方便地查詢及管理文件。目前,本文中開發(fā)的文件傳輸系統(tǒng)被集成于西疇中心學校教務系統(tǒng)中,取得了良好的應用效果。
[1]Ingo Rammer,Mario Szpuszta Advanced.NET Remoting(Second Edition)[M].Berkely:Apress 2005.
[2]婁七明,張紅偉,許海成.開放式機房智能計費系統(tǒng)設計和實現(xiàn)[J].計算機系統(tǒng)應用,2010,19(6):119-122.
[3]付清山,史金飛.應用.NET Remoting的文件傳輸系統(tǒng)實現(xiàn)[J].現(xiàn)代工程制造,2006,2:14-16.
[4]劉麗麗,莊成三,周艷芳.基于XML與.NET Remoting的數(shù)據(jù)傳輸與加載[J].計算機與現(xiàn)代化,2004,5:81-83.
[5]左娟,張毅..NET Remoting構建Web服務在遠程數(shù)據(jù)傳輸上的應用研究[J].計算機系統(tǒng)應用研究,2009,2:87-91.作者簡介:
婁七明,云南石林人,男,研究方向為數(shù)據(jù)庫應用系統(tǒng)開發(fā)
傅錦偉,云南建水人,男,研究方向為信息安全
Design and Implement of a File Transfer System Based.NET Remoting
LOU Qi-ming,F(xiàn)U Jin-wei
(College of Engineering,Honghe University,Mengzi661199)
Discusses the working principles of.NET Remoting,gives a basic structure model for file transfer system based on.NET Remoting,and gives the implement of a file transfer and management system using.NET Remoting and SQL Server,which is secure,efficient and practical.
.NET Remoting;Remote Object;File Transfer System;SQL Server 2000;Delegate
1007-1423(2016)25-0075-05DOI:10.3969/j.issn.1007-1423.2016.25.017
2016-06-03
2016-08-26