Servie Fabric应用程序中的静态变量范围

时间:2016-08-22 11:54:42

标签: c# static azure-service-fabric

我在本地运行Service Fabric Stateful服务 有3个分区和3个副本。

应用程序有一个公共静态变量,该值在'startup'类中初始化。

我假设静态变量的范围是每个副本。 但似乎静态变量作用域在节点中的所有实例之间共享。

即。我正在从分区1主副本访问静态变量,但是它从分区3辅助副本中获取值,其中两个副本都位于相同节点中。 静态变量的值似乎在同一节点内以某种顺序被覆盖。

有状态服务结构应用程序中静态变量的范围是什么?

1 个答案:

答案 0 :(得分:8)

有状态服务的每个副本或具有相同服务类型的无状态服务的实例是StatefulService或StatelessService派生的服务类的实例化(一个使用RunAsync)在同一进程和同一AppDomain中。换句话说,放在同一节点上的服务的所有副本只是同一进程中的一堆.NET对象。所以是的,它们之间会看到一个静态变量。不建议使用静态变量。如果你只需要一个东西,可以使用单例模式和范围单例实例来为副本/实例提供服务,你必须自己使用查找表。