Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

善用 Windows 系統服務實現網站自動更新

編輯:Windows XP 系統介紹

Windows 自動更新功能眾所周知,但鮮少人知 Windows 系統服務同樣能協助網站自動更新。本文將詳細說明如何利用 .NET Framework 2.0 開發的 Windows Service,搭配 XML 設定檔,達成定時自動訪問指定網址的功能,適用於網站快取更新、資料同步等場景。

核心架構與原理

此方案包含三大核心元件:

  • Windows 服務端:基於 .NET Framework 2.0 開發,安裝前需確認系統已安裝對應運行庫
  • XML 設定檔:儲存目標網址與排程時間,結構簡潔易維護
  • 定時掃描機制:服務內建 Timer,每 20 秒掃描一次設定檔,時間到達即發送 HTTP 請求

XML 設定檔範例

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Urls>
    <item url="https://www.example.com/update" time="03:59" />
    <item url="https://www.example.com/sync" time="11:59" />
    <item url="https://www.example.com/clear_cache" time="15:59" />
  </Urls>
</root>

每個 <item> 代表一次排程任務,url 為目標網址(可帶查詢字串),time 為每日執行時間(精確到分鐘),同一分鐘內僅允許單一任務。

核心程式碼邏輯(C#)

public Job() {
    // 初始化 20 秒間隔的 Timer
    System.Timers.Timer myTimer = new System.Timers.Timer(20000);
    myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
    myTimer.Enabled = true;
    myTimer.AutoReset = true;

    // 載入 XML 設定
    XmlDocument xml = new XmlDocument();
    xml.Load(AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["xmlfile"]);
    xmllist = xml.SelectNodes("//root/Urls/item");
}

void myTimer_Elapsed(object source, ElapsedEventArgs e) {
    try {
        Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " Heart Beat!");
        // 遍歷節點檢查是否到達執行時間,若符合則發送 WebRequest
        // ... 實作略 ...
    } catch (Exception ex) {
        Log.SaveNote("Error: " + ex.Message);
    }
}

部署與注意事項

  1. 確認目標伺服器已安裝 .NET Framework 2.0 或更新版本
  2. 將編譯後的服務程式部署至伺服器,使用 InstallUtil.exe 安裝為 Windows 服務
  3. 設定服務啟動類型為「自動」,確保開機即運行
  4. XML 設定檔放置於服務執行目錄,修改後無需重啟服務即可生效
  5. 建議搭配日誌記錄功能,便於追蹤執行狀況與除錯

此方案輕量、免費且彈性高,非常適合中小型網站或內部系統的自動化維護需求。若需更進階的排程控制(如間隔執行、工作日判斷),可擴充 XML 結構或改用 Windows 工作排程器搭配 PowerShell 腳本實現。

Copyright © Windows教程網 All Rights Reserved