使用C#静态类作为从一个azure函数到另一个azure函数共享数据的手段是否安全?

使用C#静态类作为从一个azure函数到另一个azure函数共享数据的手段是否安全?,c#,azure-functions,static-classes,C#,Azure Functions,Static Classes,我在Azure功能计划下有两个功能。其中还包括一个带有公共静态字符串的静态类。我可以使用这个静态字符串作为将数据从一个函数传输到另一个函数的方法吗 我主要关心的是实例。如果每个触发器都创建静态类及其字符串内容的新副本,那么我相信这不会是问题。那么,调用静态类的第一个函数的每个触发器是为它自己创建一个新的副本,还是在不同的同步函数客户端之间共享 我应该寻找像Redis cache或类似的替代方法吗?Azure Functions为创建有状态函数提供了一种替代方法,称为持久函数。持久函数是对Azur

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

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


我应该寻找像Redis cache或类似的替代方法吗?

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

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


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

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


实现您要做的事情的最佳方法是使用带有效负载的队列


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

实现您尝试执行的操作的最佳方法是使用带有有效负载的队列


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

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

在功能之外维护状态是最好的方法

我使用Redis实现了同样的目标,并在我的应用程序中看到了很多性能改进。若你们经常读/写Redis是最好的选择,你们必须为Redis实例支付一定的费用


若函数请求不是很频繁或者预算是常量,那个么您也可以使用“Azure存储表”。您不需要支付专用金额。

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

在功能之外维护状态是最好的方法

我使用Redis实现了同样的目标,并在我的应用程序中看到了很多性能改进。若你们经常读/写Redis是最好的选择,你们必须为Redis实例支付一定的费用


若函数请求不是很频繁或者预算是常量,那个么您也可以使用“Azure存储表”。您不需要支付专用金额。

您不需要实例化静态类。静态类用于提供不需要创建对象的方法。也许这将帮助您更好地理解静态类()您考虑过如何处理竞争条件吗?当多个线程同时访问此“状态”时会发生什么情况?Tl;dr您可以这样做,但几乎可以肯定有更好的选择我是否应该寻找一种替代方法,如Redis cache或类似的方法Yes假设您不能保证两个函数调用将在同一进程中运行,因此也不能保证您的“共享状态”实际上是共享的。您不需要实例化静态类。静态类用于提供不需要创建对象的方法。也许这将帮助您更好地理解静态类()您考虑过如何处理竞争条件吗?当多个线程同时访问此“状态”时会发生什么情况?Tl;dr你可以这样做,但几乎可以肯定有更好的选择我是否应该寻找像Redis cache或类似的替代方法Yes我会假设你不能保证两个函数调用将在同一进程中运行,因此也不能保证你的“共享状态”真的是共享的。好主意。但不幸的是,我的第二个函数也是由用户HTTP触发的。所以我想储物台是我最好的选择…好主意。但不幸的是,我的第二个函数也是由用户HTTP触发的。所以我想存储表对我来说是最好的选择….+1对于Redis。如果您想在开发时省钱,还可以在Linux虚拟机上安装Redis,并在不使用它省钱时关闭虚拟机。还值得一提的是,您可以在Azure Blob存储上存储JSON文件,虽然不理想,但非常便宜。但是,这种方法可能会出现一些延迟问题。开发人员可以在本地计算机上安装Redis进行开发。+1用于Redis。如果您想在开发时省钱,还可以在Linux虚拟机上安装Redis,并在不使用它省钱时关闭虚拟机。还值得一提的是,您可以在Azure Blob存储上存储JSON文件,虽然不理想,但非常便宜。不过,这种方法可能会带来一些延迟问题。开发人员可以在本地计算机上安装Redis进行开发。