为后台进程构建Blazor应用程序的指南



我正在寻找如何解决这个问题的方向。这是我的一个个人项目,我想了解更多关于web技术的信息,因为我上一次接触这些东西是在Macromedia还在营业的时候。

我有两个项目。两者都是.NET CORE 3.1,并用C#编写。

  • Email控制台应用程序
  • Blazor服务器端单页web应用程序

Email控制台应用程序在每个15 minutes运行,以检查Google Gmail帐户是否收到任何新电子邮件。如果它这样做了,电子邮件中的某些元数据将被解析并存储在SQL数据库中。是的,我知道我不必每次15 minutes都轮询电子邮件,因为Google有推送支持。

Blazorweb应用程序只是一个HTML表,其中各个表单元格根据SQL数据库的实时变化进行更新。您可以将此表视为某种仪表板。

现在这两个程序都在我的系统上运行。

现在,我的问题是:

如果我想去掉Email控制台应用程序,并在Blazorweb应用程序中替换其功能,我会使用什么库或技术让后台服务在每个15 minutes自动轮询Gmail帐户。我非常精通C#,但当涉及到网络内容时,我仍然是一个新手,所以我只是在寻找可以研究的东西来了解更多。不确定Microservice是否有意义。

谢谢你的建议。最终,我计划在Microsoft Azure中托管这个Blazor网络应用程序,供我个人使用。

我们这样做是为了我们的WebAssembly应用程序(可能类似于Blazor服务器(,我们实现它的方式是在.NET Core中使用hosted services。查看这些微软文档

在服务器上的Startup.cs中,初始化public void ConfigureServices(IServiceCollection services)中的托管服务

// Start up a background service / watcher to monitor fatal errors
services.AddHostedService<FatalExceptionMonitor>();

然后我们的FatalExceptionMonitor类继承自BackgroundService,并有一个自动调用的方法ExecuteAsync

protected override async Task ExecuteAsync(CancellationToken cancelToken)
{
// The way background services run every X minutes is putting a Task.Delay inside a while loop
while (!cancelToken.IsCancellationRequested)
{
try
{
// Do stuff here
}
catch (Exception ex)
{
}
// The way background services run every X minutes is putting a Task.Delay inside a while loop
// Pause for X minutes
int.TryParse(_configuration["FatalExceptionMonitor:HowOftenToRunInMinutes"], out int HowOftenToRunInMinutes);
await Task.Delay(1000 * 60 * HowOftenToRunInMinutes, cancelToken);
}
}

相关内容

最新更新