Übersicht über das benutzerdefinierte Marshalling
Aktualisiert: November 2007
Der Marshaller stellt im wesentlichen eine Brücke zwischen der Funktionalität einer alten und einer neuen Schnittstelle her. Mithilfe von benutzerdefiniertem Marshallen können Clients, die von Ihnen für die Arbeit mit alten Schnittstellen ausgelegt waren, auch mit Servern arbeiten, die neue Schnittstellen implementieren. Durch benutzerdefiniertes Marshallen können Clients, die für die Arbeit mit neuen Schnittstellen ausgelegt sind, auch mit Servern arbeiten, die alte Schnittstellen verfügbar machen.
Statt den Interop-Marshaller zu verwenden, können Sie einen benutzerdefinierten Marshaller für eine Schnittstelle entwerfen, der unterschiedliches Marshallverhalten initialisiert oder die Schnittstelle für COM auf eine andere Weise verfügbar macht. Durch die Verwendung eines benutzerdefinierten Marshallers können Sie den Unterschied zwischen neuen .NET-Komponenten und vorhandenen COM-Komponenten minimieren.
Sie können beispielsweise eine verwaltete Schnittstelle namens INew entwerfen. Wenn diese Schnittstelle für COM durch einen Standard-CCW (COM Callable Wrapper) verfügbar gemacht wird, verfügt die Schnittstelle über dieselben Methoden wie die verwaltete Schnittstelle und verwendet die im Interop-Marshaller eingebauten Marshallregeln. Angenommen, eine bekannte COM-Schnittstelle namens IOld stellt bereits dieselbe Funktionalität bereit wie die Schnittstelle INew. Durch die Initialisierung eines benutzerdefinierten Marshallers können Sie eine nicht verwaltete Implementierung von IOld bereitstellen, die einfach die Aufrufe an die verwaltete Implementierung der Schnittstelle INew delegiert. Der benutzerdefinierte Marshaller verhält sich im wesentlichen wie eine Brücke zwischen der verwalteten und der nicht verwalteten Schnittstelle.
Beachten Sie, dass benutzerdefinierte Marshaller nicht aufgerufen werden, wenn der Aufruf von der verwalteten Seite an die nicht verwaltete Seite einer auf Dispatch beschränkten Schnittstelle erfolgt.
Siehe auch
Konzepte
Definieren des Marshallingtyps