Teilen über


Kompatible Grains

Wenn eine vorhandene Grain-Aktivierung eine Anforderung verarbeitet, wird zur Laufzeit überprüft, ob die Version in der Anforderung und die tatsächliche Version des Grains kompatibel sind. Orleans leitet zur Laufzeit nicht ab, welche Richtlinie verwendet werden soll. Das Standardverhalten zum Bestimmen, ob zwei Versionen kompatibel sind, wird durch Orleans.Versions.Compatibility.CompatibilityStrategy ermittelt.

Abwärtskompatibel (Standard)

Definition

Die Grain-Schnittstellenversion Vn kann abwärtskompatibel mit Vm sein, wenn Folgendes zutrifft:

  • Der Name der Schnittstelle (oder der überschriebene Typcode) hat sich nicht geändert.
  • Alle öffentlichen Methoden, die in der Vm-Version vorhanden sind, befinden sich in der Vn-Version. Es ist wichtig, dass die Signaturen der von Vm geerbten Methoden nicht verändert werden: Da Orleans ein internes integriertes Serialisierungsmodul nutzt, kann das Ändern/Umbenennen eines Felds (auch eines privaten) zu einer Unterbrechung der Serialisierung führen.

Da Vn im Vergleich zu Vm zusätzliche Methoden haben kann, ist Vm nicht mit Vn kompatibel.

Beispiel

Wenn es im Cluster zwei Versionen einer bestimmten Schnittstelle gibt, V1 und V2, und V2 mit V1 abwärtskompatibel ist:

  • Wenn die aktuelle Aktivierung für V2 gilt und die angeforderte Version V1 ist, kann die aktuelle Aktivierung die Anforderung normal verarbeiten.
  • Wenn die aktuelle Aktivierung für V1 gilt und die angeforderte Version V2 ist, wird die aktuelle Aktivierung deaktiviert und eine neue mit V2 kompatible Aktivierung erstellt (weitere Informationen finden Sie unter Strategie für die Versionsauswahl).

Vollständig kompatibel

Definition

Die Grain-Schnittstellenversion Vn kann vollständig kompatibel mit Vm sein, wenn Folgendes zutrifft:

  • Vn ist abwärtskompatibel mit Vm
  • Der Vn-Version wurden keine öffentlichen Methoden hinzugefügt.

Wenn Vn vollständig mit Vm kompatibel ist, ist Vm auch vollständig mit Vn kompatibel.

Beispiel

Wenn es im Cluster zwei Versionen einer bestimmten Schnittstelle gibt, V1 und V2, und V2 mit V1 vollständig kompatibel ist:

  • Wenn die aktuelle Aktivierung für V2 gilt und die angeforderte Version V1 ist, kann die aktuelle Aktivierung die Anforderung normal verarbeiten.
  • Wenn die aktuelle Aktivierung für V1 gilt und die angeforderte Version V2 ist, kann die aktuelle Aktivierung die Anforderung auch normal verarbeiten.