Topshelf+Quartz.net+Dapper+Npoi(一)

  背景 html


   前段時間公司有個需求(天天給業務導出一批數據,以excel的形式經過郵件發送給他)。A說:直接寫個服務,判斷等於某個時間點,執行一下sql語句,生成excel,寫個EmaiHelper發送給他不就得了,這有什麼麻煩的?B說:我了個親孃來,還寫服務呢?你還須要搞個timer去判斷時間點?多費勁啊,直接寫個控制檯程序,添加個任務計劃,不就搞定了嗎?我只想說:大家都是大神,每次都不加點新的東西,還寫什麼代碼,多麼沒勁啊,前兩天看到了topshelf+quartz.net這個東東,能夠作個練習了。。。。linux

    目的 git


   使用topshelf+quartz.net以windows服務形式來導出excel數據github

    dapper只是懶得進行數據庫相關操做,這個orm能夠幫我省下很多工做sql

    npoi固然是生成excel的了,一直在用npoi跟excel打交道(無論獲取excel數據,仍是生成excel文件)數據庫

      ioc我使用的是autofactwindows

   介紹 app


       好了,接下來大致說一下。ide

   topshelf官方網站:http://topshelf-project.com/     工具

   github地址:https://github.com/Topshelf/Topshelf/ 

   topshelf文檔:http://docs.topshelf-project.com/en/latest/configuration/quickstart.html

   topshelf是建立windows服務的一種方式,相比原生實現ServiceBase、Install.Installer更爲簡單方便, 咱們只須要幾行代碼便可實現windows服務的開發。topshelf自己支持windows及linux下mono上部署安裝,一樣也是開源的。

   topshelf相對原生來講,調試起來比較方便,能夠在開發時以控制檯的形式直接f5調試,發佈時用命令以服務的形式部署。還一個比較有用的特性是支持多實例的部署,這樣能夠在一臺機器上部署多個相對的服務。相似的工具備instsrv和srvany。

  topshelf有兩種使用方式,下面代碼來自官方文檔推薦用法

 1 public class TownCrier
 2 {
 3     readonly Timer _timer;
 4     public TownCrier()
 5     {
 6         _timer = new Timer(1000) {AutoReset = true};
 7         _timer.Elapsed += (sender, eventArgs) => Console.WriteLine("It is {0} and all is well", DateTime.Now);
 8     }
 9     public void Start() { _timer.Start(); }
10     public void Stop() { _timer.Stop(); }
11 }
12 
13 public class Program
14 {
15     public static void Main()
16     {
17         HostFactory.Run(x =>                                 //1
18         {
19             x.Service<TownCrier>(s =>                        //2
20             {
21                s.ConstructUsing(name=> new TownCrier());     //3
22                s.WhenStarted(tc => tc.Start());              //4
23                s.WhenStopped(tc => tc.Stop());               //5
24             });
25             x.RunAsLocalSystem();                            //6
26 
27             x.SetDescription("Sample Topshelf Host");        //7
28             x.SetDisplayName("Stuff");                       //8
29             x.SetServiceName("Stuff");                       //9
30         });                                                  //10
31     }
32 }
View Code

    效果以下圖:

沒錯,一個簡單的topshelf程序就是這麼簡單,接下來,只須要簡單配置一下,便可以當服務來使用了。安裝很方便:

安裝:TopshelfDemo.exe install
啓動:TopshelfDemo.exe start
卸載:TopshelfDemo.exe uninstall

安裝成功後,接下來,咱們就能夠看到服務裏多了一個服務:

說完topshelf,接下來講說quartz.net

相關文章
相關標籤/搜索