2017-09-15 42 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密集型(取决于数据收集的外观)。 –