Datendarstellung

Computingumgebungen können sich erheblich unterscheiden, ebenso wie Netzwerkarchitekturen. Um diese Unterschiede zu berücksichtigen, können Sie mit MIDL die Art und Weise ändern, wie Sie Daten darstellen. Manchmal können Sie die Entwicklung vereinfachen, indem Sie Daten in ein Format konvertieren, das Ihre Anwendung einfacher verarbeiten kann. Sie können das Datenformat Ihrer Anwendung ändern, damit sie effizienter über das Netzwerk übertragen werden kann.

Die Attribute [transmit_as] und [represent_as] weisen den Compiler an, einen übertragbaren Typ, den der Stub zwischen Client und Server übergibt, einem Benutzertyp zuzuordnen, den die Client- und Serveranwendungen verwenden. Sie müssen die Routinen angeben, die die Konvertierung zwischen dem Benutzertyp und dem übertragbaren Typ durchführen, sowie die Routinen, um den Speicher freizugeben, der zum Speichern der konvertierten Daten verwendet wurde. Mithilfe des [transmit_as] IDL-Attributs oder des [represent_as] ACF-Attributs wird der Stub angewiesen, diese Konvertierungsroutinen vor und nach der Übertragung aufzurufen. Mit dem [transmit_as] -Attribut können Sie einen Datentyp für die Übertragung über das Netzwerk in einen anderen Datentyp konvertieren. Mit dem Attribut [represent_as] können Sie steuern, wie Daten aus dem Netzwerk der Anwendung präsentiert werden.

Die Attribute [wire_marshal] und [user_marshal] sind Microsoft-Erweiterungen der OSF-DCE IDL. Ihre Syntax und Funktionalität ähneln der von DCE angegebenen [transmit_as] bzw. [represent_as] Attributen. Der Unterschied besteht darin, dass Sie die Daten direkt marshallen, anstatt die Daten von einem Typ in einen anderen zu konvertieren. Dazu müssen Sie die externen Routinen für die Größenanpassung des Datenpuffers auf client- und serverseitiger Seite, das Marshallen und Aufheben der Verknüpfung der Daten auf client- und serverseitiger Seite und das Freigeben der Daten auf der Serverseite bereitstellen. Der MIDL-Compiler generiert Formatcodes, die die NDR-Engine anweisen, diese externen Routinen bei Bedarf aufzurufen.

Die Attribute [wire_marshal] und [user_marshal] ermöglichen das Marshallen von Datentypen, die andernfalls nicht über Prozessgrenzen hinweg übertragen werden könnten. Da mit der Typkonvertierung auch weniger Aufwand verbunden ist, bieten [wire_marshal] und [user_marshal] im Vergleich zu [transmit_as] und [represent_as] eine verbesserte Leistung zur Laufzeit. Die Attribute [wire_marshal] und [user_marshal] schließen sich gegenseitig in Bezug aufeinander und in Bezug auf die Attribute [transmit_as] und [represent_as] für einen bestimmten Typ aus.

Es ist wichtig zu beachten, dass die Implementierung der Attribute [wire_marshal] und [user_marshal] den Marshallingregeln entsprechen muss, die von der OSF-DCE-Spezifikation vorgegeben sind. Aus diesem Grund wird die Verwendung dieser Attribute nicht empfohlen, wenn Sie mit dem Wire-Protokoll nicht vertraut sind. Weitere Informationen zur NDR-Syntaxübertragung finden Sie unter www.opengroup.org.

Dieser Abschnitt bietet eine kurze Übersicht über diese für MIDL-Attribute in den folgenden Themen: