2016-08-22 2 views
5

Ich führe meinen Service Fabric Stateful-Dienst in lokalen mit 3 Partitionen und 3 Replica.Statischer Variablenbereich in der Servie Fabric-Anwendung

Die Anwendung verfügt über eine öffentliche statische Variable und der Wert wird in der Klasse 'startup' initialisiert.

Ich ging davon aus, dass der Bereich der statischen Variable pro Replikat war. Aber es scheint, dass der Bereich der statischen Variablen zwischen allen Instanzen in einem Knoten geteilt wird.

dh. Ich greife auf die statische Variable von Partition 1 Primärreplikat zu, gibt aber den Wert von Partition 3 Sekundärreplikat, wobei sich beide Replikate in gleichen Knoten befinden. Der Wert der statischen Variable scheint in einer bestimmten Reihenfolge innerhalb desselben Knotens überschrieben zu werden.

Was ist der Gültigkeitsbereich von Static Variable innerhalb Stateful Service Fabric-Anwendung?

Antwort

7

Jedes Replikat eines Stateful-Dienst oder Instanz eines zustandslosen Dienst des gleichen Diensttypen ist eineInstanziierung Ihres StatefulService- oder StatelessService abgeleitete Dienstklasse (die mit RunAsync) in dem gleichen Prozess und in die gleiche AppDomain. Mit anderen Worten, alle Replikate eines Service, die auf demselben Knoten platziert sind, sind nur ein Haufen von .NET-Objekten im selben Prozess. Also ja, eine statische Variable wird über sie hinweg gesehen. Statische Variablen werden nicht empfohlen. Wenn Sie "nur eine" von etwas benötigen, verwenden Sie ein Singleton-Muster und einen Bereich für Singleton-Instanzen, um Replikate/Instanzen zu bedienen, die Sie selbst mit einer Nachschlagetabelle ausführen müssen.

Verwandte Themen