Die Versionsverwaltungstheorie für RPC und COM
Nur zwei vollständig narrensichere Methoden unterstützen neue Funktionen ohne Das Risiko von Kabelkompatibilitätsproblemen:
- Ändern Sie die Schnittstellenversion gemäß den Regeln. Dadurch wird verhindert, dass neue Clients mit einem alten Server kommunizieren, und möglicherweise verhindert, dass ein alter Client mit dem neuen Server kommuniziert. Dies wird später in diesem Abschnitt erläutert.
- Führen Sie eine andere Schnittstelle ein, die sich mit der neuen Funktionalität befasst.
Eine RPC-Standardschnittstelle wird durch eine Kombination aus GUID und Versionsnummer identifiziert. eine COM-Schnittstelle wird durch ihre GUID identifiziert. Die Version besteht aus Haupt- und Nebenteilen. Bei Standardschnittstellen mit derselben GUID und unterschiedlichen Versionsnummern ist eine Verbindung nur möglich, wenn die Hauptversion identisch ist und der Client nicht höher als die Nebenversion des Servers ist.
Eine Folge ist, dass das Ändern der RPC-Schnittstellen-GUID die Drahtkompatibilität unterbricht, während das Ändern des Schnittstellennamens nicht der Fall ist.
In rpc standard ist ein Pfad für Upgrades und Erweiterungen gut definiert und erfordert im Grunde, dass neue Methoden nur am Ende der Schnittstelle hinzugefügt werden und neue Typen nur in den neuen Methoden verwendet werden. Wenn solche Ergänzungen erforderlich sind, muss die Nebenversion erhöht werden. Jede andere Änderung erfordert eine Änderung der Hauptversion, da die Client- und Serversoftware über das Netzwerk inkompatibel wäre. Die Einhaltung dieser Regeln stellt sicher, dass beide Seiten vollständig kompatibel sind, wenn eine Verbindung zwischen einem neuen Client und einem alten Server besteht oder umgekehrt.
Für eine COM-Schnittstelle kann das Versionsattribute nicht verwendet werden. Das Erstellen neuer Schnittstellen und das Erben von den alten Schnittstellen entspricht der Bearbeitung der Version in RPC. In der Regel besteht der beste Ansatz in COM darin, eine neue Schnittstelle für die erweiterte Funktionalität zu erstellen. Eine Entsprechung der Nebenversion ist die neue Schnittstelle, die von der alten schnittstelle erbt. Das Ändern alter Methoden oder alter Datentypen erfordert eine völlig neue COM-Schnittstelle – eine Schnittstelle, die nicht von der alten erbt.
Für COM ist die QueryInterface-Funktion eine etablierte Methode, um zu überprüfen, ob ein Server eine Schnittstelle unterstützt. Daher können die Situationen, in denen ein Client mit einer alten oder einer neuen Version einer Schnittstelle kommunizieren kann, problemlos gelöst werden.