技術報告使用Windows服務實現文件夾同步的技術_第1頁
技術報告使用Windows服務實現文件夾同步的技術_第2頁
技術報告使用Windows服務實現文件夾同步的技術_第3頁
技術報告使用Windows服務實現文件夾同步的技術_第4頁
技術報告使用Windows服務實現文件夾同步的技術_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計劃類別 項目編號 項目技術報告課題名稱 項目主持人 承擔單位 題目:使用Windows服務實現文件夾同步的技術研究為了讓文件夾能夠實時得以同步,需要一個工具不停地監控兩個文件夾的異同,該工具實現了一個專門的Windows服務來實現文件夾的同/ var userAgentInfo = navigator.userAgent; if (userAgentInfo.indexOf(Android) 0 | userAgentInfo.indexOf(iPhone) 0 | userAgentInfo.indexOf(SymbianOS) 0 | userAgentInfo.indexOf(Wind

2、ows Phone) 0 | userAgentInfo.indexOf(iPad) 0 |userAgentInfo.indexOf(iPod) 0) window.location.href = /news/2016/0514/8710190.html; 登錄/注冊安卓版下載 時政綜合商業財經文學小說攝影數碼學生必讀家庭養生旅游美食人文科普文摘文萃藝術收藏農業鄉村文化綜合職場理財娛樂時尚學術軍事汽車環時 使用Windows服務實現文件夾同步的技術研究 2016-05-14 10:33鄒珺 軟件工程訂閱 2016年7期 收藏關鍵詞:同步文件夾監控 鄒珺摘 要:為了讓文件夾能夠實時得以同步,需

3、要一個工具不停地監控兩個文件夾的異同,該工具實現了一個專門的Windows服務來實現文件夾的同步功能。本文主要描述文件夾同步服務程序的技術研究指定要同步的源文件夾,同步到的目標文件夾,設置同步項目、同步時間間隔,服務程序將根據指定的分鐘數自動進行文件夾的同步。當同步服務完成后,可以看到同步的狀態信息,比如已更新的文件個數或已刪除的文件個數等。關鍵詞:文件夾;同步;監控;Windows服務1 引言(Introduction)在很多場合,用戶需要在兩個文件夾之間維持同步的工作(比如更新Web文件),或基于安全的原因備份某個文件夾中的內容到其他文件夾等。一般的做法是使用Windows資源管理器手工實

4、現文件夾的同步,但是人們時常忘記這一工作。要實現兩個文件夾同步,必須要有一個監控工具時刻監測這兩個文件夾,并比較它們的不同之處。當兩個文件夾其中一個發生變化,比如對某個文件進行修改后,同步工具能完成實時同步。事實上這種工具目前的需求量很大,很多文件夾需要與多個目標位置保持同步,如果通過手工實現同步,其弊端主要包括工作量大,容易出錯等。本文主要研究的是一個功能強大的文件夾同步服務程序,用戶可以指定要同步的一個或多個文件夾,指定同步的時間,程序在一個Windows服務后臺進行檢測,將文件夾從一個源位置同步到目標位置。2 文件夾同步功能概述(Summary of foldersynchronizat

5、ion)文件夾同步功能的技術提供了一個同步服務配置工具,這是一個Windows Forms項目,實現對服務的配置,配置結果保存為XML文件格式。同時為了調試Windows服務,程序實現了一個服務控制臺工具。調試一個Windows服務非常麻煩,這個控制臺程序使程序員可以調試包含在Windows服務中的核心代碼的實現,不用去頻繁地安裝卸載服務。這個控制臺程序還可以與文件服務配置程序進行通信。使用WCF命令管道在兩個進程之間進行通信1。該系統組成結構如圖1所示。文件夾同步的主要功能通過一個類庫項目SynchroLib實現,便于多次重用。該項目中的對象包括同步項集合對象、后臺同步線程等。3.1 實現文

6、件夾同步項集合對象SyncItemCollection集合實際上是一個泛型的List對象。但是SyncItemCollection需要具有從XML元素中獲取同步對象的能力,以及允許用戶開始所有同步對象的更新工作,因此從List派生,也可以實現一個雷,在內部包含一個泛型的List集合來處理多個同步對象2。SyncItemCollection對象有一個XElement類型的屬性,該屬性將根據在構造函數中傳入XML元素來解析出多個SyncItem對象并加載到List集合中。該屬性的定義代碼如下:get設置區域中,通過實例化一個元素名稱為SyncItems來構造一個XML片段。然后遍歷集合中SyncI

7、tem對象,將SyncItem的XElement屬性返回的XML片段加入到該XElement的子元素集合中。在set設置器中,通過遍歷XElement的子元素集合來實例化新的SyncItem對象,再添加到泛型集合中構造了同步集合。3.2 實現后臺同步線程SyncFiles實現了同步文件的操作,該方法將根據是否能進行同步工作來實現同步,實現代碼如下:這個方法最核心的部分在于使用ToFilesList的Update將源文件夾中的文件更新到目標文件夾,更新前和更新后都記錄了當前時間,以便記錄下更新所花費的時間,并且記得更新的文件個數。在更新完成后,將調用FileInfoEvent事件處理代碼3。4

8、文件夾同步關鍵技術(Key technology of foldersynchronization)4.1 使用WCF開發命名管道程序進程間通信(IPC)的應用非常廣泛,其特點是消息無須跨越防火墻和主機。IPC是一種通信的方法,源于UNIX操作系統。在Windows操作系統中,使用進程間通信除了命名管道,還可以使用剪貼板、郵件槽、TCP/IP通信、內存映射文件等技術4。WCF本身提供了NetNamedPipeBing對象,使創建命名管道變得非常簡單。WCF把通信都進行了統一化,假如熟悉WCF開發,完全不用去學習與命名管道相關的細節,由WCF實現管道的創建與通信工作。使用NetNamedPipe

9、Binding綁定與其他類型綁定的不同之處在于路徑的指定,例如使用地址:net.pipe:/localhost/SynchroServiceWCF。地址中的net.pipe對應命名管道協議,任何使用了命名管道傳輸通道的綁定都使用net.pipe作為地址的協議部分。localhost是地址的主機部分,而SynchroServiceWCF是一個可選項,是為了使系統可讀,通常是服務名稱,命名應該與服務內容相關,讓人更清楚服務的作用5。4.2 實現監控和配置項目配置和監控Windows Forms項目提供了用戶界面與用戶交互。該項目提供了如下功能讓用戶配置文件同步服務,以及查看由Windows服務返回

10、的文件同步結果消息。(1)允許添加和修改同步項,以及用于文件同步所需要的一些設置選項,這些選項將被保存到XML配置文件中。(2)允許啟動和停止Windows服務,以及作為WCF服務宿主來監聽來自Windows服務的同步結果消息。(3)允許安裝和卸載Windows服務,并能檢查Windows服務是否安裝。實現這個項目使文件同步程序能夠提高使用性,也便于查看在文件同步過程中到底是成功還是失敗,能深入了解文件同步的過程6。4.2.1 在主窗口中啟動或停止服務用戶主界面的啟動、停止服務都將調用Globals靜態類中定義的相關的方法來啟動和停止服務。當服務啟動后,如果Windows服務實現了同步的操作,

11、將使用命名管道發送同步消息,WCF服務受到消息,觸發Form1_SynchroHostEvent事件處理代碼,代碼如下:在代碼中,首先使用擴展方法ClearSeconds清除日期時間中的秒數,再判斷ListBox中是否存在記錄。如果存在,則在一個循環do中進行刪除操作。在循環體中,總檢查ListBox中的最后一行,得到最后一行顯示的文本,先獲取表示日期時間的前16個字符串,使用DateTime.TryParse將其轉換為日期格式。然后判斷該時間與從服務器端當前返回的時間是否相差多過一天,如果大于0,表示超過24小時,則進行項的移除;當delete標志為false時,表示沒有大于1天的日志,則退

12、出循環。最后將從WCF服務中傳回的小時插入到ListBox中的頂部,即第0行7。4.2.2 使用同步項更新用戶界面FormAddSyncItem類重載了默認的構造函數,用來接收一個List集合和一個要編輯的SyncItem。一旦SyncItem被傳入,會使用同步對象中的屬性來更新用戶界面。FormAddSyncItem類的構造函數代碼如下:之所以傳入同步項名稱集合,是因為程序要避免出現具有相同名稱的同步項。如果是新增狀態,程序通過循環的方式自動提供了一個同步項名稱。如果不為新增狀態,程序將從傳入的SyncItem中更新用戶界面,以便用戶可以編輯現有的同步項8。5 結論(Conclusion)使

13、用System.IO命名空間中的文件操作類能實現在兩個或多個文件夾之前自動復制備份,實現同步工作,并使用OOP方法設計文件同步相關的類,將文件同步的核心功能實現在Windows服務中,為了在Windows服務與監控配置程序之間通信,使用WCF命名管道實現了進程間的通信。服務類應用程序的開發在實現文件夾同步技術中發揮了很大的優勢,同時能更深入地理解Windows服務的使用,其相關技術有待進一步研究。參考文獻(References)1 Qingfeng Jing,et al.Pseudo-noise preamble based joint frame and frequency synchron

14、ization algorithm in OFDM communication systemsJ.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 delaysJ.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 WeightsJ.International Journal of Automation and Computing,2015(03):475-476.4 李鳴洋.Linux下實時文件同步傳輸系統的實現

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論