我有一个sorta-legacy R&D应用程序,它是一个整体网站,然后是一些用于某些后台处理的webjobs。
现在,我一直在尝试将所有这些迁移到Docker + Microservices(注意:不是因为Microservices是“新的热门东西”,而是因为我们的应用程序适合分成更多可管理的部分/服务。)>
将网站切成Gateway API(或BFF Api)+微服务很容易。但是我不确定如何处理网络作业迁移。 Webjobs(当前)是基于Azure Queue计时器和触发器的。
一切都在以下条件下进行: -Docker(在Linux容器上) -ASP.NET Core 2.1
有人建议我可以将WebJobs迁移到其他东西的Docker容器吗?
我知道Hangfire是一种可在ASP.NET网站上启用后台处理的工具。但是在我走那条路之前,只需检查人们是否还有其他解决方案。
还有.NET Core 2.1 has the concept of an IHostedService ...所以我不确定这是否是一个合法的解决方案,如果是,那么..如何?
答案 0 :(得分:1)
您现在可以在容器中运行Azure Webjobs。
如果将.Net Core作为目标并使用Azure WebJobs SDK> 3.0(作为.Net Standard 2.0库分发),则可以在容器内运行代码。使用基于microsoft/dotnet
的图片以下是github中的一个示例:christopheranderson/webjobs-docker-sample
答案 1 :(得分:1)
另一个选项:Implement background tasks in microservices with IHostedService and the BackgroundService class。
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace GenericHostSample
{
public class ProgramHelloWorld
{
public static async Task Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<MyServiceA>();
services.AddHostedService<MyServiceB>();
});
await builder.RunConsoleAsync();
}
}
}