使用.net開發並產生Windows服務安裝包

來源:互聯網
上載者:User

公司項目中的一個資料庫搜尋的表因為有新的產品的添加,這個表就需要添加新的記錄,把產品的描述、類別以及其它的一些相關資訊添加進來,這個搜尋的表的資料又不能時常人工去更新,因為兩三個就會有新的產品的推出。所以分兩部分實現,一部分用Wcf服務來實現搜尋的表的資料更新操作,另一部分用windows服務來定時調用Wcf服務.當我們手動更新時也可以通過程式後台調用wcf服務來完成.本篇只講windows服務的建立以及產生封裝windows服務的安裝包的一些操作.

 

建立一個windows服務項目

點擊確定以後

產生了一個Service1.cs的服務類,我把它重新命名為ValorService.cs.雙擊ValorService.cs查看其源碼。這是我的ValorService.cs類的源碼

 

public partial class ValorService : ServiceBase
    {
        public ValorService()
        {
            InitializeComponent();
        }
 
        protected override void OnStart(string[] args)
        {
            System.Timers.Timer timer = new System.Timers.Timer(Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]));
            timer.AutoReset = true;
            timer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimeEvent);
            timer.Enabled = true;
        }
 
        private void OnTimeEvent(object source,System.Timers.ElapsedEventArgs e)
        {
            if (DateTime.Now.Hour == Convert.ToInt32(ConfigurationManager.AppSettings["ElapsedHour"]))
            {
                UpdateKeywordsSerachDataServiceClient service = new UpdateKeywordsSerachDataServiceClient();
                service.SyncKeywordsData();
            }
        }
 
        protected override void OnStop()
        {
        }
    }
 
System.Timers.Timer timer = new System.Timers.Timer(Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]));
上面這行代碼建立定時器類Timer對象並且指定Elapsed(即定時調用的方法的事件)事件定時觸發的間隔時間(單位為毫秒),ConfigurationManager.AppSettings["Interval"])這裡讀取設定檔,如下:
<add key="Interval" value="60000" />
 注意:我們建立的windows服務項目預設是,我們需要改變目標框架我改成了.NET Framework 4. 

Timer 的AutoReset設定為false時則 Timer 在第一次達到間隔時僅引發一次 Elapsed 事件。然後,Enabled 設定為 false。

timer.Enabled設定為true時開始啟用計時。

timer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimeEvent);

指定定時器到時候觸發執行的事件方法.我這裡的OnTimeEvent方法調用WCF服務。OnTimeEvent方法有這樣一行代碼”

if (DateTime.Now.Hour == Convert.ToInt32(ConfigurationManager.AppSettings["ElapsedHour"]))
<add key="ElapsedHour" value="10" />

我需要的實現的是每天10點才會執行調用WCF服務.

到這裡windows服務部分都已經成完成。

 

接下來就是打包windows服務.

雙擊開啟ValorServce.cs檔案,此時顯示設計檢視,然後右擊滑鼠出現如所示介面

選擇添加安裝程式.此時產生一個檔案ProjectInstaller.cs,雙擊該檔案進入了設計介面,

右鍵serviceInstaller1出現如上快顯功能表選擇屬性.開啟屬性對話方塊可以看到ServiceName屬性,這個就是我們產生的windows服務的名稱.StartType指定服務啟動類型如自動、手動、禁用.

接下來我們查看並設定serviceProcessInstaller1的屬性,Account屬性指定使用者類型,這裡用的是NetworkService使用者,具體用什麼使用者可以去msdn瞭解詳細.

現在我們建立一個安裝程式項目

右鍵Setup=>添加=》項目輸出,出現如下介面

點擊確定.然後 Setup右鍵=>視圖=>自訂動作,如

出現如下

自訂動作右鍵=》添加自訂動作

點擊確定,然後選擇Valorservice

點擊確定就Ok了.產生Setup這個項目就可產生windows服務的安裝包了.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.