【发布时间】:2019-07-08 16:56:31
【问题描述】:
在 Service Fabric 中看似常见的做法可能是错误的做法。我怀疑以下将 stateManager 保存为本地缓存的代码在“SomeService”有状态服务中的“CreateServiceReplicaListeners()”方法的返回语句中实例化“Startup”类时可能会导致潜在问题。
可能发生的情况是状态管理器以某种方式重新实例化。我需要更多解释以下做法是否正确。如果不是,那么最好的做法是什么?
internal class SomeService : StatefulService
{
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new[]{
new ServiceReplicaListener(
initParams =>
new OwinCommunicationListener("SomeService", new Startup(this.StateManager), initParams))
};
}
}
}
public class Startup : IOwinAppBuilder
{
private readonly IReliableStateManager stateManager;
public Startup(IReliableStateManager stateManager)
{
this.stateManager = stateManager;
}
public void Configuration(IAppBuilder appBuilder)
{
// other initialization codes..
...
...
UnityConfig.RegisterComponents(config, this.stateManager);
appBuilder.UseWebApi(config);
}
}
【问题讨论】:
-
你能不能问一下。您是在问将
IReliableStateManager传递给启动是否OK 或者您在这样做时收到了异常或未定义的行为?
标签: azure-service-fabric service-fabric-stateful