設計原則:萬物皆對象
背景:在我的項目中,即需要與硬件通過Socket連接通訊,又需要給App提供Wcf服務操作接口,雖然都完成了,但是卻是一個控制台(雖然我很喜歡控制台,因為它簡單易用),把它放到服務器運行,總有一個黑乎乎的窗口,總感覺不雅(原諒我的強迫症)。於是各種百度谷歌如何創建運行WIndows服務程序,就像SqlServer數據那樣在后台默默運行奉獻就可以了。
但是,很多都是那么的麻煩,需要批處理什么的,而我這個人向來喜歡簡潔,於是便設計了這么個Windows服務輔助類,沒錯,就是0命令。
正文:
1、類庫源碼我就不放了,最后都放到GitHub上
2、使用方法:
using Coldairarrow.Util.WindowsService; using System; namespace WindowsServiceTest { class Program { public static void Main(string[] argc) { //創建服務容器,第一個參數為指定服務名,第二個參數為主函數入口的參數argc WindowsServiceContainer serviceContainer = new WindowsServiceContainer("A_Test_Service", argc); //服務啟動時執行的事件,即可以看做控制台的主函數Main即可 serviceContainer.HandleOnStart = new Action<string[]>(args => { //可以在這里添加你需要服務干的事情,比如創建Socket通訊,Wcf服務,balabala......... //讓它在后台默默地工作把~~~~~~~~~~ }); //處理日志的事件 serviceContainer.HandleLog = new Action<string>(log => { Console.WriteLine(log); }); //處理異常的事件 serviceContainer.HandleException = new Action<Exception>(ex => { Console.WriteLine(ex.Message); }); //開始運行服務 serviceContainer.Start(); } } }
直接運行控制台即可:

選擇1進行安裝服務:

沒錯,你可以看見服務已經成功運行了!!!,是不是很假單?
選擇2進行服務卸載:

總結:
通過對服務操作一系列的封裝,使將控制台程序變成服務程序非常的簡單,不需要任何的批處理命令,只需要簡單的幾行代碼即可,感覺很爽的請點贊!
老規矩,GitHub地址:
