2017-09-15 103 views
0

我想設計一個新的應用程序,但有點卡住最好的方式來做到這一點。Web應用程序與永遠循環的後臺作業

我想要做的是將一個bot連接到一個irc通道,該通道從聊天消息中收集信息,然後我想要一個HTTP端點,以便從目前收集的信息中獲得結果。

我有一個機器人運行,收集我想要的信息,我可以創建端點,但我如何構建到1應用程序?我有2個應用程序嗎? 1輸出到文件,端點只是讀取文件並輸出它?我更喜歡它在1個應用程序,但迄今尚未能找到像這樣的解決方案。

我目前使用DotNet core 2.0並部署到Raspberry Pi。

+2

這取決於您的'應用程序'的定義。一個'應用程序'可以是一堆可執行文件。你的意思是單一的EXE?如果你看一下'面向服務的體系結構',它會建議兩個獨立運行的服務。 (兩個exe文件) –

+0

我在當前的web應用程序中使用WebHostBuilder,所以希望我能夠以某種方式將我的irc bot整合進去。我期望我可以使用參考,但它仍然只能是一個Web應用程序。 – SamJ

+0

我不會推薦在Web服務器中運行後臺作業。雖然大量的人確實這樣做(使用已經建議的hangfire),但web服務器不是一個作業服務器。 –

回答

0

這取決於工作量。 如果應用程序收集信息,定期做,做的時候,我會建議開始這是一個ASP.NET服務沒有休息:

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .Build(); 
    host.Run(); 
} 

安裝所有依賴於你當前的控制檯應用程序(這將工作)。要收集數據,您可以使用HangFire。它庫運行後臺作業。 要這樣運行後臺作業恢復註冊作業:

RecurringJob.AddOrUpdate(
    () => { //Gather data here }, 
    Cron.Daily); 
+0

目前在環我的控制檯應用程序運行不斷檢查新郵件要處理,我想保持它作爲實時越好。添加RecurringJob是否可以實時處理消息或僅在我呼叫端點時處理消息? – SamJ

+0

最小週期可以設置爲1分鐘。因此,如果您實時需要它,請在循環的新任務中創建循環。但它可能太多CPU或O/I密集型(取決於數據收集的外觀)。 –