婁七明,傅錦偉
(紅河學(xué)院工學(xué)院,蒙自661199)
基于.NET Remoting的文件傳輸系統(tǒng)設(shè)計和實現(xiàn)
婁七明,傅錦偉
(紅河學(xué)院工學(xué)院,蒙自661199)
探討.NET Remoting的基本工作原理,給出文件傳輸系統(tǒng)的基本結(jié)構(gòu)模型,然后基于.NET Remoting和SQL Server 2000實現(xiàn)一個安全、高效、實用的文件傳輸及管理系統(tǒng)。
.NET Remoting;遠(yuǎn)程對象;文件傳輸系統(tǒng);SQL Server 2000;委托
隨著計算機(jī)技術(shù)、數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和完善,各行政企事業(yè)單位都相繼建立了基于網(wǎng)絡(luò)的辦公自動化系統(tǒng)。辦公自動化系統(tǒng)中最重要的組成部分就是公文處理,因此如何實現(xiàn)文件在網(wǎng)絡(luò)中安全準(zhǔn)確快捷地傳輸是建立辦公自動化系統(tǒng)的核心。
.NET Remoting提供了進(jìn)程間通信的抽象方法,簡化了分布大對象的訪問,在絕大部分情況下,服務(wù)群序通過簡單的設(shè)置就可以把本地對象變成可以為遠(yuǎn)程提供服務(wù)的遠(yuǎn)程對象而客戶端則可以以類似訪間本地對象的方法透明地訪問遠(yuǎn)程對象。技術(shù)能夠使位于不同計算機(jī)上的進(jìn)程之間互相通信,并支持HTTP、TCP等多種協(xié)議,這為構(gòu)建文件傳輸系統(tǒng)提供了一種非常實用的技術(shù)。
.NET Remoting是一種.NET框架中執(zhí)行進(jìn)程間通信的方式。由于.NET沒有使用DCOM,因此.NET Remoting是DCOM的替代技術(shù),它可以用于網(wǎng)絡(luò)上不同計算機(jī)的基于CLR的不同應(yīng)用程序間的通信,也可以用于相同計算機(jī)上基于CLR的不同應(yīng)用程序間的通信。.NET是基于進(jìn)程間通信的機(jī)制,進(jìn)程間通信需要一個向其進(jìn)程外調(diào)用方提供功能的服務(wù)器對象、一個在服務(wù)器對象上進(jìn)行調(diào)用的客戶端以及一個將調(diào)用從一端運(yùn)送到另一端的傳輸機(jī)制??蛻粽{(diào)用服務(wù)器對象的方法要么創(chuàng)建對象的完整副本,并移動到客戶端,即值調(diào)用(MBV);要么向客戶端進(jìn)程傳遞一個服務(wù)器對象的引用,實現(xiàn)引用調(diào)用(MBR)。由于復(fù)制整個服務(wù)器對象將占用很大的帶寬和浪費客戶端的內(nèi)存和CPU資源,而且在傳輸過程中存在很大的安全隱患,因此采用引用調(diào)用是.NET Remoting進(jìn)程通信的核心處理過程。為便于處理,.NET Remoting向程序員提供了更為簡單的處理過程,只需正確地配置客戶端,使用new就可以創(chuàng)建遠(yuǎn)程對象的實例。.NET Remoting使用代理對象來產(chǎn)生服務(wù)器對象位于客戶進(jìn)程中的效果。其通信過程如圖1所示。
圖1.NET Remoting通信模式
當(dāng)客戶端創(chuàng)建遠(yuǎn)程對象的實例時,遠(yuǎn)程處理基礎(chǔ)結(jié)構(gòu)創(chuàng)建與遠(yuǎn)程對象完全相同的代理對象,并向客戶端對象返回一個該代理對象的引用。當(dāng)客戶調(diào)用此方法時,遠(yuǎn)程處理系統(tǒng)接受調(diào)用,檢查類型消息,并通過客戶端通道將請求捆綁成消息傳送到服務(wù)器通道。服務(wù)器偵聽通道獲取該請求并將其發(fā)送給服務(wù)器遠(yuǎn)程處理系統(tǒng),服務(wù)器遠(yuǎn)程處理系統(tǒng)查找并調(diào)用服務(wù)器對象,進(jìn)行相應(yīng)的處理。然后此過程將反向進(jìn)行,服務(wù)器遠(yuǎn)程處理系統(tǒng)將處理結(jié)果捆綁成消息發(fā)送到客戶端通道,最后客戶端遠(yuǎn)程處理系統(tǒng)通過代理將最終結(jié)果返回給客戶對象。
文件傳輸系統(tǒng)的結(jié)構(gòu)設(shè)計
文件傳輸系統(tǒng)采用三次結(jié)構(gòu)進(jìn)行設(shè)計,從邏輯上分為客戶端文件收發(fā)服務(wù)層、服務(wù)器端文件接收層和數(shù)據(jù)庫服務(wù)層??蛻舳宋募瞻l(fā)服務(wù)層主要提供用戶進(jìn)行文件發(fā)送和接收的用戶界面及其功能;服務(wù)器端文件接收層的主要功能是實現(xiàn)文件的接收,并把相關(guān)信息寫入底層數(shù)據(jù)庫;數(shù)據(jù)庫服務(wù)層的功能是為整個文件系統(tǒng)提供數(shù)據(jù)庫支持,保存文件發(fā)送的信息,以便能夠?qū)崿F(xiàn)文件的離線傳輸和下載。系統(tǒng)的基本結(jié)構(gòu)如圖2所示。
圖2 文件傳輸系統(tǒng)的基本結(jié)構(gòu)
文件傳輸系統(tǒng)數(shù)據(jù)庫的主要功能是用于記錄用戶及用戶之間發(fā)送文件的相關(guān)信息,主要涉及到用戶信息表和文件傳輸信息表。用戶信息表用于存放發(fā)送文件的用戶信息,文件傳輸信息表用于存放用戶傳輸文件的相關(guān)信息。這兩個表的基本結(jié)構(gòu)如下。
表1 用戶信息表
表2 文件傳輸信息表
3.1定義用于文件傳輸?shù)倪h(yuǎn)程對象類
為實現(xiàn)不同應(yīng)用程序域之間的文件傳輸需要定義繼承MarshalByRefObject的遠(yuǎn)程對象類NetFileTransfer。
其中,MessageHandler是如下的一個委托:
3.2客戶端的實現(xiàn)
(1)定義客戶端組件
定義客戶端組件NetFileTransferClient,用于實現(xiàn)與服務(wù)器端的連接,獲得遠(yuǎn)程對象引用,并實現(xiàn)文件的發(fā)送。該組件的主要成員如下:
(2)客戶端界面設(shè)計
設(shè)計如圖3所示的客戶端窗口frmClient,主要代碼如下:
圖3 客戶端窗口frmClient
3.3服務(wù)器端的實現(xiàn)
(1)定義服務(wù)端組件
定義服務(wù)器端組件NetFileTransferServer,用于實現(xiàn)遠(yuǎn)程對象的注冊。該組件的主要成員如下:
(2)服務(wù)器端界面設(shè)計
設(shè)計如圖4所示的服務(wù)器端窗口frmServer,主要代碼如下:
圖4 服務(wù)器端窗口frmServer
使用本文所述文件傳輸方法構(gòu)建文件管理系統(tǒng)簡單、高效。系統(tǒng)能夠很好地實現(xiàn)局域網(wǎng)內(nèi)文件的安全傳輸,并且提高了文件傳輸?shù)乃俣?,能夠方便地查詢及管理文件。目前,本文中開發(fā)的文件傳輸系統(tǒng)被集成于西疇中心學(xué)校教務(wù)系統(tǒng)中,取得了良好的應(yīng)用效果。
[1]Ingo Rammer,Mario Szpuszta Advanced.NET Remoting(Second Edition)[M].Berkely:Apress 2005.
[2]婁七明,張紅偉,許海成.開放式機(jī)房智能計費系統(tǒng)設(shè)計和實現(xiàn)[J].計算機(jī)系統(tǒng)應(yīng)用,2010,19(6):119-122.
[3]付清山,史金飛.應(yīng)用.NET Remoting的文件傳輸系統(tǒng)實現(xiàn)[J].現(xiàn)代工程制造,2006,2:14-16.
[4]劉麗麗,莊成三,周艷芳.基于XML與.NET Remoting的數(shù)據(jù)傳輸與加載[J].計算機(jī)與現(xiàn)代化,2004,5:81-83.
[5]左娟,張毅..NET Remoting構(gòu)建Web服務(wù)在遠(yuǎn)程數(shù)據(jù)傳輸上的應(yīng)用研究[J].計算機(jī)系統(tǒng)應(yīng)用研究,2009,2:87-91.作者簡介:
婁七明,云南石林人,男,研究方向為數(shù)據(jù)庫應(yīng)用系統(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