我正在寻找如何解决这个问题的方向。这是我的一个个人项目,我想了解更多关于web技术的信息,因为我上一次接触这些东西是在Macromedia
还在营业的时候。
我有两个项目。两者都是.NET CORE 3.1
,并用C#
编写。
Email
控制台应用程序Blazor
服务器端单页web应用程序
Email
控制台应用程序在每个15 minutes
运行,以检查Google Gmail
帐户是否收到任何新电子邮件。如果它这样做了,电子邮件中的某些元数据将被解析并存储在SQL
数据库中。是的,我知道我不必每次15 minutes
都轮询电子邮件,因为Google
有推送支持。
Blazor
web应用程序只是一个HTML
表,其中各个表单元格根据SQL
数据库的实时变化进行更新。您可以将此表视为某种仪表板。
现在这两个程序都在我的系统上运行。
现在,我的问题是:
如果我想去掉Email
控制台应用程序,并在Blazor
web应用程序中替换其功能,我会使用什么库或技术让后台服务在每个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);
}
}