Marshallen von Schnittstellen
Wenn Sie nicht sicher sind, dass Ihre Schnittstelle nie über Apartment-, Thread- oder Prozessgrenzen hinweg verwendet wird, müssen Sie entscheiden, wie Sie Marshallingunterstützung für Ihre Schnittstellen bereitstellen. Es gibt drei Möglichkeiten, Marshallingunterstützung bereitzustellen:
- Schreiben Sie Einen eigenen Proxy-/Stubcode, der den COM-Kanal aufruft, der wiederum die RPC-Laufzeitbibliotheken aufruft. Theoretisch ist dies möglich, aber in der Praxis ist es fast unmöglich, auf einen erheblichen Aufwand zu verzichten.
- Beschreiben Sie Ihre Schnittstellen in einer IDL-Datei (Interface Definition Language), und verwenden Sie den MIDL-Compiler, um eine Proxy-/Stub-DLL zu generieren. Diese Methode bietet die beste Leistung und die größte Flexibilität im Hinblick auf akzeptable Datentypen. Mit midl-generierten Proxystubs können Sie nicht nur die Speicherverwaltung steuern, sondern auch das Marshallen und Aufheben derMarshaling komplexer Datentypen auf verschiedenen Plattformen.
- Verwenden Sie MIDL, um eine Typbibliothek zu generieren, die das System zur Bereitstellung von Marshallingunterstützung zur Laufzeit verwendet. Dies ist die einfachste Möglichkeit, Marshallingunterstützung zu implementieren. Sie müssen nur eine Typbibliothek generieren und registrieren. Ihre Schnittstellen müssen automatisierungskompatibel sein (oleautomation oder dual),wodurch einige Einschränkungen hinsichtlich der Datentypen bestehen, die Sie als Methodenparameter verwenden können. In den meisten Fällen überwiegt der Vorteil, dass Ihre Schnittstellen für Programme zugänglich sind, die in anderen Sprachen geschrieben wurden, z. B. Microsoft Visual Basic und Java, die Einschränkungen für Datentypen.