То, что кажется обычной практикой, может быть неправильно в Service Fabric.Я подозреваю, что приведенный ниже код, в котором stateManager сохраняется как локальный кеш, может вызвать потенциальную проблему, когда создается экземпляр класса Startup в операторе возврата метода CreateServiceReplicaListeners () в службе состояний SomeService.
Ситуация, которая может случиться, - когда государственный менеджер каким-то образом воссоздан.Мне нужно больше объяснений относительно того, является ли приведенная ниже практика правильной или нет.Если нет, то что может быть лучшей практикой вместо этого?
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);
}
}