【问题标题】:windows service equivalent using .net core hosted in AWS C#使用 AWS C# 中托管的 .net 核心的 Windows 服务等效项
【发布时间】:2019-11-14 15:45:48
【问题描述】:
我编写了几个 Windows 服务,它们充当 2 个独立供应商的中间件。该服务向第一个供应商发送请求,处理响应,并将格式化的数据发送给第二个供应商。这些进程每 X 秒在服务的后台运行一次。该服务使用 TCP 和 json 作为传输和数据类型。
这些服务通常除了记录之外什么都不做。
我一直在用 windows/.net 编写代码,并试图冒险进入 AWS 或 Azure 来运行这些特定资产。我对 Lambda 和 Functions 的了解才刚刚起步,我已经感到不知所措了。
任何入门方向都将不胜感激。
【问题讨论】:
标签:
c#
amazon-web-services
azure
.net-core
windows-services
【解决方案1】:
您可以使用 Azure Functions + Time Trigger 来完成。这是一个示例:
[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
if (myTimer.IsPastDue)
{
log.LogInformation("Timer is running late!");
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
注意它有一个 CRON 表达式来指定触发的频率。
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer
PS:据我所知,AWS Lambda 上没有时间触发器。
【解决方案2】:
如果你正在寻找集成的东西,你可以看看 Hangfire。您可以将其作为单独的 Dot Net Core 应用程序运行,然后您将与云无关。您仍然可以使用 Azure 或 AWS 中的无服务器选项运行。它基本上是一个任务运行器,您可以安排重复代码运行,全部来自 c#。我工作的公司使用它来发送和处理电子邮件以及从供应商那里提取和导入数据。
我将它设置在一个空的 Dot Net Core 项目中,这样我就可以给它自己的资源,而不会减慢最终用户的交互。它也可以附加到现有的应用程序中。
您可以在这里找到更多信息:https://www.hangfire.io/
希望这会有所帮助。