999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

使用Windows服務(wù)實(shí)現(xiàn)文件夾同步的技術(shù)研究

2016-05-14 10:33:51鄒珺
軟件工程 2016年7期
關(guān)鍵詞:同步

鄒珺

摘 要:為了讓文件夾能夠?qū)崟r(shí)得以同步,需要一個(gè)工具不停地監(jiān)控兩個(gè)文件夾的異同,該工具實(shí)現(xiàn)了一個(gè)專門的Windows服務(wù)來(lái)實(shí)現(xiàn)文件夾的同步功能。本文主要描述文件夾同步服務(wù)程序的技術(shù)研究指定要同步的源文件夾,同步到的目標(biāo)文件夾,設(shè)置同步項(xiàng)目、同步時(shí)間間隔,服務(wù)程序?qū)⒏鶕?jù)指定的分鐘數(shù)自動(dòng)進(jìn)行文件夾的同步。當(dāng)同步服務(wù)完成后,可以看到同步的狀態(tài)信息,比如已更新的文件個(gè)數(shù)或已刪除的文件個(gè)數(shù)等。

關(guān)鍵詞:文件夾;同步;監(jiān)控;Windows服務(wù)

中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A

1 引言(Introduction)

在很多場(chǎng)合,用戶需要在兩個(gè)文件夾之間維持同步的工作(比如更新Web文件),或基于安全的原因備份某個(gè)文件夾中的內(nèi)容到其他文件夾等。一般的做法是使用Windows資源管理器手工實(shí)現(xiàn)文件夾的同步,但是人們時(shí)常忘記這一工作。

要實(shí)現(xiàn)兩個(gè)文件夾同步,必須要有一個(gè)監(jiān)控工具時(shí)刻監(jiān)測(cè)這兩個(gè)文件夾,并比較它們的不同之處。當(dāng)兩個(gè)文件夾其中一個(gè)發(fā)生變化,比如對(duì)某個(gè)文件進(jìn)行修改后,同步工具能完成實(shí)時(shí)同步。事實(shí)上這種工具目前的需求量很大,很多文件夾需要與多個(gè)目標(biāo)位置保持同步,如果通過(guò)手工實(shí)現(xiàn)同步,其弊端主要包括工作量大,容易出錯(cuò)等。

本文主要研究的是一個(gè)功能強(qiáng)大的文件夾同步服務(wù)程序,用戶可以指定要同步的一個(gè)或多個(gè)文件夾,指定同步的時(shí)間,程序在一個(gè)Windows服務(wù)后臺(tái)進(jìn)行檢測(cè),將文件夾從一個(gè)源位置同步到目標(biāo)位置。

2 文件夾同步功能概述(Summary of folder

synchronization)

文件夾同步功能的技術(shù)提供了一個(gè)同步服務(wù)配置工具,這是一個(gè)Windows Forms項(xiàng)目,實(shí)現(xiàn)對(duì)服務(wù)的配置,配置結(jié)果保存為XML文件格式。同時(shí)為了調(diào)試Windows服務(wù),程序?qū)崿F(xiàn)了一個(gè)服務(wù)控制臺(tái)工具。調(diào)試一個(gè)Windows服務(wù)非常麻煩,這個(gè)控制臺(tái)程序使程序員可以調(diào)試包含在Windows服務(wù)中的核心代碼的實(shí)現(xiàn),不用去頻繁地安裝卸載服務(wù)。這個(gè)控制臺(tái)程序還可以與文件服務(wù)配置程序進(jìn)行通信。使用WCF命令管道在兩個(gè)進(jìn)程之間進(jìn)行通信[1]。該系統(tǒng)組成結(jié)構(gòu)如圖1所示。

文件夾同步的主要功能通過(guò)一個(gè)類庫(kù)項(xiàng)目SynchroLib實(shí)現(xiàn),便于多次重用。該項(xiàng)目中的對(duì)象包括同步項(xiàng)集合對(duì)象、后臺(tái)同步線程等。

3.1 實(shí)現(xiàn)文件夾同步項(xiàng)集合對(duì)象

SyncItemCollection集合實(shí)際上是一個(gè)泛型的List對(duì)象。但是SyncItemCollection需要具有從XML元素中獲取同步對(duì)象的能力,以及允許用戶開始所有同步對(duì)象的更新工作,因此從List派生,也可以實(shí)現(xiàn)一個(gè)雷,在內(nèi)部包含一個(gè)泛型的List集合來(lái)處理多個(gè)同步對(duì)象[2]。

SyncItemCollection對(duì)象有一個(gè)XElement類型的屬性,該屬性將根據(jù)在構(gòu)造函數(shù)中傳入XML元素來(lái)解析出多個(gè)SyncItem對(duì)象并加載到List集合中。該屬性的定義代碼如下:

get設(shè)置區(qū)域中,通過(guò)實(shí)例化一個(gè)元素名稱為SyncItems來(lái)構(gòu)造一個(gè)XML片段。然后遍歷集合中SyncItem對(duì)象,將SyncItem的XElement屬性返回的XML片段加入到該XElement的子元素集合中。在set設(shè)置器中,通過(guò)遍歷XElement的子元素集合來(lái)實(shí)例化新的SyncItem對(duì)象,再添加到泛型集合中構(gòu)造了同步集合。

3.2 實(shí)現(xiàn)后臺(tái)同步線程

SyncFiles實(shí)現(xiàn)了同步文件的操作,該方法將根據(jù)是否能進(jìn)行同步工作來(lái)實(shí)現(xiàn)同步,實(shí)現(xiàn)代碼如下:

這個(gè)方法最核心的部分在于使用ToFilesList的Update將源文件夾中的文件更新到目標(biāo)文件夾,更新前和更新后都記錄了當(dāng)前時(shí)間,以便記錄下更新所花費(fèi)的時(shí)間,并且記得更新的文件個(gè)數(shù)。在更新完成后,將調(diào)用FileInfoEvent事件處理代碼[3]。

4 文件夾同步關(guān)鍵技術(shù)(Key technology of folder

synchronization)

4.1 使用WCF開發(fā)命名管道程序

進(jìn)程間通信(IPC)的應(yīng)用非常廣泛,其特點(diǎn)是消息無(wú)須跨越防火墻和主機(jī)。IPC是一種通信的方法,源于UNIX操作系統(tǒng)。在Windows操作系統(tǒng)中,使用進(jìn)程間通信除了命名管道,還可以使用剪貼板、郵件槽、TCP/IP通信、內(nèi)存映射文件等技術(shù)[4]。

WCF本身提供了NetNamedPipeBing對(duì)象,使創(chuàng)建命名管道變得非常簡(jiǎn)單。WCF把通信都進(jìn)行了統(tǒng)一化,假如熟悉WCF開發(fā),完全不用去學(xué)習(xí)與命名管道相關(guān)的細(xì)節(jié),由WCF實(shí)現(xiàn)管道的創(chuàng)建與通信工作。

使用NetNamedPipeBinding綁定與其他類型綁定的不同之處在于路徑的指定,例如使用地址:net.pipe://localhost/SynchroServiceWCF。地址中的net.pipe對(duì)應(yīng)命名管道協(xié)議,任何使用了命名管道傳輸通道的綁定都使用net.pipe作為地址的協(xié)議部分。localhost是地址的主機(jī)部分,而SynchroServiceWCF是一個(gè)可選項(xiàng),是為了使系統(tǒng)可讀,通常是服務(wù)名稱,命名應(yīng)該與服務(wù)內(nèi)容相關(guān),讓人更清楚服務(wù)的作用[5]。

4.2 實(shí)現(xiàn)監(jiān)控和配置項(xiàng)目

配置和監(jiān)控Windows Forms項(xiàng)目提供了用戶界面與用戶交互。該項(xiàng)目提供了如下功能讓用戶配置文件同步服務(wù),以及查看由Windows服務(wù)返回的文件同步結(jié)果消息。

(1)允許添加和修改同步項(xiàng),以及用于文件同步所需要的一些設(shè)置選項(xiàng),這些選項(xiàng)將被保存到XML配置文件中。

(2)允許啟動(dòng)和停止Windows服務(wù),以及作為WCF服務(wù)宿主來(lái)監(jiān)聽來(lái)自Windows服務(wù)的同步結(jié)果消息。

(3)允許安裝和卸載Windows服務(wù),并能檢查Windows服務(wù)是否安裝。

實(shí)現(xiàn)這個(gè)項(xiàng)目使文件同步程序能夠提高使用性,也便于查看在文件同步過(guò)程中到底是成功還是失敗,能深入了解文件同步的過(guò)程[6]。

4.2.1 在主窗口中啟動(dòng)或停止服務(wù)

用戶主界面的啟動(dòng)、停止服務(wù)都將調(diào)用Globals靜態(tài)類中定義的相關(guān)的方法來(lái)啟動(dòng)和停止服務(wù)。當(dāng)服務(wù)啟動(dòng)后,如果Windows服務(wù)實(shí)現(xiàn)了同步的操作,將使用命名管道發(fā)送同步消息,WCF服務(wù)受到消息,觸發(fā)Form1_SynchroHostEvent事件處理代碼,代碼如下:

在代碼中,首先使用擴(kuò)展方法ClearSeconds清除日期時(shí)間中的秒數(shù),再判斷ListBox中是否存在記錄。如果存在,則在一個(gè)循環(huán)do中進(jìn)行刪除操作。在循環(huán)體中,總檢查L(zhǎng)istBox中的最后一行,得到最后一行顯示的文本,先獲取表示日期時(shí)間的前16個(gè)字符串,使用DateTime.TryParse將其轉(zhuǎn)換為日期格式。然后判斷該時(shí)間與從服務(wù)器端當(dāng)前返回的時(shí)間是否相差多過(guò)一天,如果大于0,表示超過(guò)24小時(shí),則進(jìn)行項(xiàng)的移除;當(dāng)delete標(biāo)志為false時(shí),表示沒(méi)有大于1天的日志,則退出循環(huán)。最后將從WCF服務(wù)中傳回的小時(shí)插入到ListBox中的頂部,即第0行[7]。

4.2.2 使用同步項(xiàng)更新用戶界面

FormAddSyncItem類重載了默認(rèn)的構(gòu)造函數(shù),用來(lái)接收一個(gè)List集合和一個(gè)要編輯的SyncItem。一旦SyncItem被傳入,會(huì)使用同步對(duì)象中的屬性來(lái)更新用戶界面。FormAddSyncItem類的構(gòu)造函數(shù)代碼如下:

之所以傳入同步項(xiàng)名稱集合,是因?yàn)槌绦蛞苊獬霈F(xiàn)具有相同名稱的同步項(xiàng)。如果是新增狀態(tài),程序通過(guò)循環(huán)的方式自動(dòng)提供了一個(gè)同步項(xiàng)名稱。如果不為新增狀態(tài),程序?qū)膫魅氲腟yncItem中更新用戶界面,以便用戶可以編輯現(xiàn)有的同步項(xiàng)[8]。

5 結(jié)論(Conclusion)

使用System.IO命名空間中的文件操作類能實(shí)現(xiàn)在兩個(gè)或多個(gè)文件夾之前自動(dòng)復(fù)制備份,實(shí)現(xiàn)同步工作,并使用OOP方法設(shè)計(jì)文件同步相關(guān)的類,將文件同步的核心功能實(shí)現(xiàn)在Windows服務(wù)中,為了在Windows服務(wù)與監(jiān)控配置程序之間通信,使用WCF命名管道實(shí)現(xiàn)了進(jìn)程間的通信。

服務(wù)類應(yīng)用程序的開發(fā)在實(shí)現(xiàn)文件夾同步技術(shù)中發(fā)揮了很大的優(yōu)勢(shì),同時(shí)能更深入地理解Windows服務(wù)的使用,其相關(guān)技術(shù)有待進(jìn)一步研究。

參考文獻(xiàn)(References)

[1] Qingfeng Jing,et al.Pseudo-noise preamble based joint frame and frequency synchronization algorithm in OFDM communication systems[J].Journal of Systems Engineering and Electronics,2014,(01):251-253.

[2] R.Rakkiyappan,N.Sakthivel,S.Lakshmanan.Exponential synchronization of complex dynamical networks with Markovian jumping parameters using sampled-data and mode-dependent probabilistic time-varying delays[J].Chinese Physics B,2014(02):891-892.

[3] Hui-Na Feng,Jun-Min Li.Distributed Adaptive Synchronization of Complex Dynamical Network with Unknown Time-varying Weights[J].International Journal of Automation and Computing,2015(03):475-476.

[4] 李鳴洋.Linux下實(shí)時(shí)文件同步傳輸系統(tǒng)的實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014(31):89-91.

[5] 許圣明,等.基于有序哈希樹的RPKI資料庫(kù)數(shù)據(jù)同步方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2016(06):132-134.

[6] 王賓,劉釗遠(yuǎn).基于Rsync的遠(yuǎn)程文件同步優(yōu)化模型[J].計(jì)算機(jī)與現(xiàn)代化,2015(04):292-294.

[7] 劉珺,葉勇,石竹.文件同步系統(tǒng)的研究和實(shí)現(xiàn)[J].信息安全與通信保密,2014(02):439-441.

[8] 周平,劉曉潔.基于兩級(jí)分塊的文件同步方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2014(03):59-62.

猜你喜歡
同步
素質(zhì)教育理念下藝術(shù)教育改革的思路
政府職能的轉(zhuǎn)變與中國(guó)經(jīng)濟(jì)結(jié)構(gòu)調(diào)整的同步
商情(2016年42期)2016-12-23 14:26:58
公共藝術(shù)與城市設(shè)計(jì)的協(xié)調(diào)與同步
有源應(yīng)答器DBPL解碼算法研究及FPGA實(shí)現(xiàn)
一種新型雙軌同步焊接的焊接裝置
讓思維訓(xùn)練與口才訓(xùn)練同時(shí)進(jìn)行
汽車空調(diào)產(chǎn)品的協(xié)同開發(fā)探討
“四化”同步發(fā)展的實(shí)證檢驗(yàn)及實(shí)現(xiàn)路徑研究
時(shí)間統(tǒng)一系統(tǒng)秒同步故障遠(yuǎn)程預(yù)警系統(tǒng)設(shè)計(jì)
基于CAZAC序列的MIMOOFDM定時(shí)同步算法
主站蜘蛛池模板: 欧美区国产区| 国产精品女熟高潮视频| 国产一区成人| 99久久精彩视频| 狠狠操夜夜爽| 免费a级毛片视频| 色综合天天操| 538国产视频| 精品欧美一区二区三区在线| 中国一级毛片免费观看| 欧美在线中文字幕| 亚洲第一成网站| 一级福利视频| 永久免费无码日韩视频| 片在线无码观看| 欧美自慰一级看片免费| 激情无码字幕综合| 99久久免费精品特色大片| 久久国产黑丝袜视频| 精品国产自| 国产精品福利在线观看无码卡| 五月天久久婷婷| 色偷偷av男人的天堂不卡| 国产无吗一区二区三区在线欢| www.99在线观看| 伊人91在线| 精品免费在线视频| 色偷偷男人的天堂亚洲av| 中文字幕亚洲第一| 男人天堂亚洲天堂| 18禁不卡免费网站| 亚洲二区视频| 久久国产香蕉| 欧美精品v日韩精品v国产精品| 亚洲性影院| 国产成人三级| 亚洲精品第一页不卡| 天堂亚洲网| 午夜无码一区二区三区| 97视频在线精品国自产拍| 97在线免费视频| 精品午夜国产福利观看| 成人午夜福利视频| 国产精品网址你懂的| 国产视频a| 成年人国产视频| 麻豆精品久久久久久久99蜜桃| 亚洲高清资源| 久久久久亚洲Av片无码观看| 国产精品片在线观看手机版| 日本免费福利视频| 亚洲精品黄| 午夜a视频| 国产成人91精品| 精品视频在线观看你懂的一区| 亚洲欧美成人在线视频| 国产欧美在线观看视频| 成人看片欧美一区二区| 老司国产精品视频91| 国产va免费精品| 亚洲AV无码乱码在线观看代蜜桃| 亚洲性视频网站| 国产网站黄| 美女一级毛片无遮挡内谢| 国产亚洲欧美日韩在线观看一区二区 | 亚洲人成网站色7799在线播放| 99热这里只有精品在线观看| 国产制服丝袜无码视频| 色妞永久免费视频| 成年人视频一区二区| 亚洲欧美日本国产综合在线| 国产人碰人摸人爱免费视频| 香蕉久久国产精品免| 四虎永久免费地址| 综合亚洲色图| 国产无人区一区二区三区| 国产精品不卡永久免费| 99久久国产综合精品2023 | 日本国产精品一区久久久| 精品亚洲欧美中文字幕在线看| 亚洲国产欧美中日韩成人综合视频| 香蕉久久国产超碰青草|