使用 C# static class 作为将数据从一个 azure 函数共享到另一个函数是否安全?

Is it safe to use a C# static class as a means of sharing data from one azure function to another?

我在 Azure 功能计划下有两个功能。还包括一个带有 public 静态字符串的静态 class。我可以使用这个静态字符串作为将数据从一个函数传输到另一个函数的方法吗?

我主要关心的是实例。如果每个触发器都创建静态 class 及其字符串内容的新副本,那么我相信这应该不是问题。那么调用静态函数的第一个函数的每个触发器 class 是否为其自身创建一个新副本,或者它是否在不同的同步函数客户端之间共享?

我应该寻找替代方法,例如 Redis 缓存或类似的方法吗?

Azure Functions 提供了一种创建 有状态函数 的替代方法,称为 Durable Functions。 Durable FunctionsAzure Functions 运行时的扩展,支持在代码中定义有状态工作流。

有关更多信息,请参阅以下文档。

https://docs.microsoft.com/en-us/dotnet/standard/serverless-architecture/durable-azure-functions https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview

实现您正在尝试做的事情的最佳方法是使用带有负载的队列。

基本上一个函数将您要传输的数据放入队列中。另一个函数有一个队列触发器,一旦消息显示将 运行(能够访问数据)

Azure 函数是无服务器的。如果您运行在消费计划下,多个功能实例将开始执行,当实例空闲时,它将释放实例。

在函数外部维护状态是最好的方法。

我同样使用了 Redis,我的应用程序性能得到了很大提升。如果您经常使用 read/write Redis 是最佳选择,您必须为 Redis 实例支付专用金额。

如果功能请求不是很频繁或者预算是固定的,也可以使用"Azure Storage Table"。您无需支付专用金额。