INFO: Verspätet Typen-ID, früher Bindung möglich in VB für Anwendungen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 138138 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Es gibt drei Arten der Bindung, die Visual Basic für Applikationen unterstützt:

  1. Späte Bindung.
  2. ID-Bindung.
  3. Early\Vtable-Bindung.

Weitere Informationen

OLE können-Automatisierungscontroller die OLE-IDispatch-Schnittstelle Sie auf Objekte zugreifen, die diese Schnittstelle implementieren. Obwohl Programmierer Objektmember (Methoden und Eigenschaften) anhand des Namens kennen, Verfolgen der gespeichert IDispatch werden intern durch eine Zahl ? die Dispatch-ID (DISPID). Bevor ein OLE-Automatisierungscontroller eine Methode oder Eigenschaft suchen kann, muss er über die DISPID verfügen, die den Namen des Members zugeordnet.

Sobald es die DISPID verfügt, kann er dann IDispatch:: Invoke, suchen die Eigenschaft oder rufen die Methode, Packen die Parameter für die Eigenschaft oder Methode in eine von IDispatch:: Invoke-Parameter aufrufen. Das Objekt Implementierung von IDispatch:: Invoke muss dann Entpacken die Parameter, rufen Sie die Eigenschaft oder Methode und alle möglicherweise auftretenden Fehler zu behandeln. Wenn die Eigenschaft oder Methode zurückgegeben wird, übergibt das Objekt seinen Rückgabewert zurück an den Controller über IDispatch:: Invoke-Parameter.

Späte Bindung

DISPIDs sind verfügbar zur Laufzeit und in einigen Fällen zur Kompilierzeit Zur Laufzeit abrufen Domänencontroller DISPIDs, indem Sie die IDispatch:: GetIDsOfNames-Funktion aufrufen. Dies ist spätes Binden (oder späte Namensbindung für) bezeichnet, da der Controller die Eigenschaft oder Methode zur Laufzeit gebunden.

Späte Bindung ist die langsamste und am einfachsten zu unterstützen, und es ist der einzige Mechanismus, den Visual Basic Version 3.0 unterstützt. Das Zielobjekt muss die IDispatch OLE-Schnittstelle damit dies funktioniert unterstützen. Eine Typbibliothek (ein Repository der Objekteigenschaft, Objektmethode und Objekt-Methode-Parameterinformationen) ist nicht erforderlich für das Objekt, wie IDispatch:: GetIDsOfNames zur Laufzeit binden Sie den Namen an die DISPID zuerst aufgerufen wird und anschließend IDispatch:: Invoke erneut zur Laufzeit auf dem Zielobjekt aufgerufen, die Eigenschaft oder Methode tatsächlich auszuführen. Daher, es ist keine Kompilierung Typüberprüfung. Fehler wie "Name nicht gefunden" wird nur zur Laufzeit abrufen.

Hier ist ein Beispiel späten Bindung implementiert Visual Basic-Code:
   Dim obj As Object
   Set obj = New Class1
   Call obj.somemethod
				
der Typ der "Object" ist hier nicht bekannt, bis die SET-Anweisung zur Laufzeit ausgeführt wird.

ID-Bindung

Die DISPID der jeder Eigenschaft oder Methode wird behoben und ist Teil des Objekts Typenbeschreibung. Wenn das Objekt in einen Typ Bibliothek beschrieben wird, kann ein OLE-Automatisierungscontroller lesen, die DISPIDs aus der Bibliothek Typ am Kompilierung und somit vermeiden IDispatch:: GetIDsOfNames aufrufen. Dies wird als ID Bindung bezeichnet. Da nur ein Aufruf von IDispatch (d. h., der Aufruf zum Aufrufen) statt der zwei Aufrufe erforderlichen späte Bindung erforderlich ist, ist es im Allgemeinen über zweimal als schnell.

ID-Bindung ist tatsächlich eine Form der frühen Bindung wie GetIDsOfNames zur Kompilierzeit logisch bezeichnet wird, sodass eine Typbibliothek erforderlich ist. Das Zielobjekt muss die OLE-IDispatch-Schnittstelle unterstützen, sodass Aufrufen zur Laufzeit auf das Zielobjekt aufgerufen werden. Die Vorteile dieser sind, Leistung besser, ist da keine Bindung zur Laufzeit benötigt wird, erhalten Sie bessere Kompilierzeittyp überprüfen und aussagekräftigere Fehlermeldungen.

Frühe Bindung

In frühen Bindung (auch als VTable-Bindung bezeichnet), das Zielobjekt muss nicht notwendigerweise unterstützt IDispatch; es kann beliebige benutzerdefinierte Schnittstelle unterstützt. Wenn das Objekt IDispatch unterstützt, funktioniert die frühe Bindung, da das Objekt jetzt eine duale Schnittstelle (eine Kombination von IDispatch und eine VTable-Schnittstelle) unterstützt. Frühe Bindung keine DISPIDs und funktioniert nicht auf eine gerade Implementierung der IDispatch-Schnittstelle. Eine Typbibliothek für das Objekt erforderlich ist die DISPIDs erhalten. Eine Bindung zur Kompilierungszeit generiert Code für eine der Methoden oder Eigenschaften über das Objekt VTable des Objekts aufrufen.

Die Vorteile der frühen Bindung sind, dass Sie zur Kompilierungszeit Vorteile der Typüberprüfung erhalten und die Leistung zur Laufzeit ist besser, insbesondere, wenn eine in-Process-OLE-Server beteiligt ist. Dies ist da müssen keine indirekte den Aufruf an einen Member durch eine Implementierung von IDispatch:: Invoke. Im Grunde sind Funktionsaufrufe mit VTable-Bindung auf ein in-Process-Server, direkte Funktionsaufrufe. Wenn der OLE-Server eine EXE-Datei ist, dann werden aufgrund der Remoting-Code u. u. langsamer, die berücksichtigt werden.

Hier ist ein Beispiel für Visual Basic-Code, die frühe Bindung implementiert:
   Dim obj As Class1
   Set obj = New Class1
   Call obj.somemethod
				
Notiz, die er bis an das Serverobjekt ermitteln, ob es frühe Bindung unterstützt oder nicht. Die drei Formatvorlagen der Bindung von allen Objekten in Visual Basic 4.0 erstellte unterstützt werden. Visual Basic für Applikationen wird frühe Bindung gegenüber ID Bindung verwenden, damit ein Objekt, das unterstützt sowohl früh gebunden werden soll. Wenn im vorherigen Beispiel Class1 durch einen OLE-Server, die nur ID Bindung unterstützt implementiert wurden, würde ID Bindung verwendet werden. Es gibt keine Möglichkeit, aus Visual Basic-Code feststellen, ob Sie die frühe Bindung oder Bindung, ID verwenden.

Eigenschaften

Artikel-ID: 138138 - Geändert am: Samstag, 22. Februar 2014 - Version: 2.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-Bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
Keywords: 
kbnosurvey kbarchive kbmt kbinfo kbprogramming KB138138 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 138138
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com