Freigeben über


Allgemeine Überlegungen

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

Codierungsmodell

Schnittstellenbasiert

Objektbasiert

Identität

GUIDs

Starke Namen

Mechanismus für die Fehlerbehandlung

HRESULTs

Ausnahmen

Typkompatibilität

Binärer Standard

Typstandard

Typdefinition

Typbibliothek

Metadaten

Typsicherheit

Nicht typsicher

Optional sicher

Versionskontrolle

Unveränderlich

Flexibel

Einigen Merkmalen der Programmiermodelle sind Einheiten zugeordnet, die Sie anzeigen können (z. B. Typbibliotheken und Metadaten). Einige können als Argumente übergeben werden, z. B. GUIDs (Globally Unique Identifiers) und starke Namen. Andere Merkmale sind eher konzeptueller Natur: Sie werden sicher ihren Einfluss auf den Anwendungsentwurf berücksichtigen, bei diesen Merkmalen besteht jedoch keine direkte Zuordnung zu verwalteten oder nicht verwalteten Modellen.

In den folgenden Abschnitten wird jedes Merkmal ausführlicher beschrieben.

  • Codierungsmodelle
    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.

  • Mechanismen für die Fehlerbehandlung
    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.
  • IDs
    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.
  • Typkompatibilität
    Typen sind für verwalteten und nicht verwalteten Code sowie für verschiedene Sprachen unterschiedlich.
  • Typdefinitionen
    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 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 Zeiger in verwaltetem Code weiterhin verwenden, der Code unterliegt jedoch Einschränkungen aufgrund seines nicht sicheren Verhaltens. Die Dienste für die Interoperation verhindern, dass nicht vertrauenswürdiger, verwalteter Code auf nicht verwalteten Code zugreift.
  • Versionskontrolle
    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 verändern und dabei denselben Namen beibehalten.

Siehe auch

Weitere Ressourcen

Entwurfsüberlegungen für die Interoperation