Laufzeitaufrufbarer Wrapper (rcw)

Definition - Was bedeutet Runtime Callable Wrapper (RCW)?

Ein Runtime Callable Wrapper (RCW) ist ein Wrapper-Objekt, das von Common Language Runtime (CLR) generiert wird, um ein COM-Objekt (Component Object Model) zu kapseln und es als .NET-Assembly verfügbar zu machen.

Ein RCW fungiert als primäre Schnittstelle für einen .NET-Client, der mit einer COM-Komponente interagieren muss, indem er die Aufrufe zwischen ihnen zusammenfasst. Es bildet einen Metadaten-Wrapper, der die COM-Komponenten für die CLR verfügbar macht. Es hilft vorhandenen ActiveX-Containern beim Hosten von .NET-Steuerelementen und .NET Windows Forms-Anwendungen beim Hosten von ActiveX-Containern. RCW ist auch in Geschäftssystemen nützlich, die mit COM-Komponenten erstellt wurden, und ermöglicht die Integration ihres alten Legacy-Codes in neu entwickelte .NET-Komponenten, ohne die Produktivität zu beeinträchtigen.

Technische.me erklärt Runtime Callable Wrapper (RCW)

Eine COM-Komponente ist ein binäres wiederverwendbares Objekt, das seine Dienste bereitstellt, indem es die Schnittstellen veröffentlicht, über die die Kommunikation mit seinen Clients erfolgt. Die Definition der Schnittstellen oder Binärverträge der COM-Komponente ist in der Typbibliothek der Schnittstellen angegeben. Im Gegensatz zu COM ist die Kommunikation zwischen .NET-Objekten eher objektbasiert als schnittstellenbasiert. RCW fungiert als Brücke zwischen COM-Komponenten und .NET-Objekten, um die Vorgänge weiterzuleiten und durch Marshalling zwischen den beiden zu vermitteln.

Ein RCW verwaltet die Lebensdauer seines gekapselten COM-Objekts. Beim Übergeben der Referenz zwischen zwei Anwendungsdomänen oder Apartments wird der Proxy des Objekts verwendet. Die Erstellung von RCW basiert auf den aus der Typbibliothek abgeleiteten Metadaten. Seine Zerstörung erfolgt während der Müllabfuhr. Das Marshaling durch RCW umfasst die Konvertierung von Methodenargumenten und Rückgabewerten, sodass diese so dargestellt werden, dass sie sowohl vom Client als auch vom Server gelesen werden können. Ein Beispiel für das Marshalling kann die Konvertierung sein, die für ein Zeichenfolgenargument stattfindet, das als BSTR-Typ für eine COM-Komponente übergeben werden muss, während es in einem .NET-Client ein Zeichenfolgentyp sein muss.

RCW kann mit Visual Studio erstellt werden, das eine automatische Codegenerierungsfunktion verwendet, wodurch der Prozess für den Benutzer einfach und transparent wird. Alternativ enthält die RCW-Assembly Metadaten für Typen, die in der Typbibliothek einer Komponente definiert sind. Sie können mit dem Tool tlbimp.exe über die Befehlszeile erstellt werden.

Diese Definition wurde im Kontext von .NET geschrieben