Entwurfsüberlegungen für die Interoperation
In dieser Übersicht werden die Unterschiede zwischen den verwalteten und nicht verwalteten Programmiermodellen beschrieben. Empfehlungen und Strategien für die Interoperation zur Entwurfszeit finden Sie unter Erstellen von COM-Komponenten für die Interoperabilität und Erstellen von .NET Framework-Komponenten für die Interoperation.
Alle Aufrufe zwischen verwaltetem und nicht verwaltetem Code müssen die Anforderungen übertragen, die durch das jeweilige Programmiermodell vorgegeben werden. Verwaltete und nicht verwaltete Programmiermodelle unterscheiden sich in vielerlei Hinsicht voneinander. Die folgende Tabelle enthält die unterscheidenden Merkmale der einzelnen Modelle:
Merkmal |
Nicht verwaltetes Modell |
Verwaltetes Modell |
Details |
---|---|---|---|
Codierungsmodell |
Schnittstellenbasiert |
Objektbasiert |
Nicht verwaltete Objekte kommunizieren immer über Schnittstellen. Verwaltete Objekte und Klassen können Daten direkt übergeben, ohne Schnittstellen zu implementieren. COM-Interop generiert standardmäßig eine Klassenschnittstelle, um verwaltete Funktionen über eine Schnittstelle für COM verfügbar zu machen, wenn das Objekt oder die Klasse keine Schnittstelle implementiert. |
Identity |
GUIDs |
Starke Namen |
GUIDs identifizieren einen bestimmten, nicht verwalteten Typ und stellen keine Standortinformationen für diesen Typ zur Verfügung. Starke Namen bestehen neben dem Typnamen zusätzlich aus einem eindeutigen Assemblynamen. Da der Assemblyname den Typ eindeutig identifiziert, kann ein Typname in mehreren Assemblys verwendet werden. Eine Assembly führt außerdem die Herausgeberschlüssel, Versions- und Standortinformationen für verwaltete Typen ein. Dienste für die Interoperation generieren GUIDs und haben gemäß den Anforderungen einen starken Namen. |
Mechanismus für die Fehlerbehandlung |
HRESULTs |
Ausnahmen |
COM-Methoden geben in der Regel ein HRESULT zurück, durch das angegeben wird, ob der Aufruf erfolgreich war oder fehlgeschlagen ist. Verwalteter Code verwendet Ausnahmen. COM-Interop ordnet verwaltete Ausnahmen standardmäßig Fehler-HRESULTs zu. |
PODS (Plain Old Data Structures) |
Struktur |
Vom Objekt abgeleitete verwaltete Struktur |
Strukturen oder Klassen können nicht mithilfe eines Plattformaufrufs als Wert zurückgegeben werden, wenn sie einen Konstruktor enthalten. Benutzerdefinierte Typen, die nicht-PODS-Elemente enthalten, sollten grundsätzlich als Verweis zurückgegeben werden. PODS sind Datenstrukturen, die gemäß ISO/IEC-Standard 14882 "Programming Languages – C++" nur passive Auflistungen von Feldwerten enthalten. Sie enthalten keine Konstruktoren, Kopierzuweisungsoperatoren, Destruktoren oder nicht statische Datenmember, die nicht ebenfalls PODS sind. |
Typkompatibilität |
Binärer Standard |
Typstandard |
Typen sind für verwalteten und nicht verwalteten Code sowie für verschiedene Sprachen unterschiedlich. |
Typdefinition |
Typbibliothek |
Metadaten |
Wenn Sie bereits mit Typbibliotheken gearbeitet haben, ist Ihnen bekannt, dass diese nur öffentliche Typen enthalten. Darüber hinaus sind Typbibliotheken optional. Im verwalteten Programmiermodell sind Typinformationen für alle Typen obligatorisch. Die Dienste für die Interoperation stellen Tools zur Verfügung, die Typbibliotheken in Metadaten in Assemblys und Metadaten in Typbibliotheken umwandeln. |
Typsicherheit |
Nicht typsicher |
Optional sicher |
Nicht verwaltete Compiler stellen keine Überprüfung von Zeigertypen zur Verfügung, sodass der Code für möglicherweise schädliche Aktivitäten anfällig ist. In der Regel ist für verwalteten Code eine höhere Vertrauensebene erforderlich. Programmierer können weiterhin Zeiger in verwaltetem Code verwenden, der Code unterliegt jedoch aufgrund seines nicht sicheren Verhaltens Einschränkungen. Die Dienste für die Interoperation verhindern, dass nicht vertrauenswürdiger, verwalteter Code auf nicht verwalteten Code zugreift. |
Versionskontrolle |
Unveränderlich |
Flexibel |
COM-Schnittstellen sind unveränderlich. Wenn Sie eine Schnittstelle verändern, müssen Sie sie mit einer neuen GUID umbenennen. Verwaltete Typen können sich entwickeln und dabei denselben Namen beibehalten. |
Einigen Merkmalen der Programmiermodelle sind Einheiten zugeordnet, die Sie anzeigen können (z. B. Typbibliotheken und Metadaten). Einige, z. B. GUIDs und starke Namen, können als Argumente übergeben werden. Andere Merkmale sind grundlegender; es sind zwar deren Auswirkungen auf den Anwendungsentwurf zu berücksichtigen, es besteht jedoch bei diesen Merkmalen keine direkte Zuordnung zu verwalteten oder nicht verwalteten Modellen.
Verwandte Themen
Titel |
Beschreibung |
---|---|
Beschreibt Strategien für die Interoperation zur Entwurfszeit für COM-Komponenten. |
|
Erstellen von .NET Framework-Komponenten für die Interoperation |
Beschreibt Strategien für die Interoperation zur Entwurfszeit für .NET Framework-Komponenten. |
Beschreibt, wie COM-Interop und Plattformaufruf verwendet werden. |
|
Beschreibt COM-Interop-Konzepte und -Konvertierungsregeln. |
|
Beschreibt den Interop-Marshallingdienst, seine Beziehung zum COM-Marshalling und seine Funktion in Remotekommunikationen. |