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

Bin*_*yan 5 c# static azure-service-fabric

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

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

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

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

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

Vac*_*cek 8

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