Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Haupt";
Aktuelles Archiv: 2003.07.24;
Herunterladen: [xml.tar.bz2];

Nach unten

Schnittstellen Finden Sie ähnliche Zweige


Alex134   (2003-07-13 18:49) [0]

Bitte erläutern Sie, warum sie zum Beispiel benötigt werden. Ich habe zwei Bücher gelesen und kann das Wesentliche nicht verstehen. Es wird nur erklärt, wie man sie deklariert, und zwar über die drei Hauptmethoden, kurz, über jeglichen Müll.



Ihor Osov'yak   (2003-07-13 21:30) [1]

COM ist ohne sie nicht möglich. Sie können jedoch nicht nur im Kontext von COM verwendet werden.

PS - Ich erlaube mir unten ein Fragment eines Artikels - das kann etwas klarstellen:

COM - Dies ist zum einen ein Satz von Regeln, die unter keinen Umständen verletzt werden, wonach einige Programmobjekte die Ressourcen anderer Programmobjekte sowie die Betriebssystemtools, die diese Interaktion bereitstellen, verwenden können. Darüber hinaus erhalten Objekte, die Ressourcen verwenden (im Folgenden als Clients bezeichnet), niemals die vollständige Kontrolle über die Objekte, die diese Ressourcen verschenken (im Folgenden als Komponenten oder COM-Objekte bezeichnet). Außerdem muss der Client nicht einmal eine Vorstellung von der allgemeinen Struktur des COM-Objekts haben . Für ihre Interaktion ist es wichtig, eine vereinbarte Interaktionsschnittstelle zu haben und sicherzustellen, dass diese Schnittstelle niemals geändert wird.
Eine Schnittstelle bezieht sich hier auf eine Reihe spezifischer Methoden, die von einem COM-Objekt implementiert werden müssen und die dem Client "zur Verfügung gestellt" werden. Auf der Ebene des Binärcodes hat die Schnittstelle eine bestimmte Struktur im Speicher, die das COM-Objekt implementiert und die eine bestimmte Tabelle mit Adressen der COM-Objektmethoden bereitstellt. Wenn sie sagen, dass der Client die Schnittstelle erhalten hat, verstehen sie, dass ihm die Adresse dieser Struktur bekannt geworden ist. Darüber hinaus „weiß“ der Kunde, in welcher Reihenfolge sich die Einstiegspunkte in dieser Tabelle auf die entsprechenden Methoden beziehen, da der Kunde mit der entsprechenden Spezifikation vertraut ist.
...
Zusammenfassend können wir sagen, dass die Schnittstelle eine Spezifikation ist, die auf der Ebene des Binärcodes in der Aufruftabelle im Speicher "widergespiegelt" wird.
..
In COM sind Schnittstellen alles. Ein Server ist für einen Client eine Reihe von Schnittstellen. Der Client mit dem Server kann nur über Schnittstellen interagieren. Darüber hinaus kennt der Client möglicherweise nicht alle vom Server unterstützten Schnittstellen.
Alle Schnittstellen erben von der Basisschnittstelle IUnnknown. Wenn man über die Vererbung von Schnittstellen spricht, versteht man darüber hinaus nicht die Vererbung der Implementierung (wir beschäftigen uns damit, wenn wir im Rahmen des Objektmodells von mindestens demselben Delphi arbeiten), sondern die Vererbung von Deklarationen. Vererbung von Deklarationen bedeutet, dass, wenn eine bestimmte IB-Schnittstelle von der IA-Schnittstelle geerbt wird, in der entsprechenden Aufruftabelle für die IB-Schnittstelle zuerst die Adressen von Methoden angegeben werden, die in IA deklariert sind, und dann die Adressen von Methoden von IB. Darüber hinaus sollten die Listen der formalen Parameter geerbter Methoden nicht geändert werden. Wenn wir uns erinnern, dass Schnittstellen Spezifikationen haben, wird klar, warum wir in Bezug auf sie nur über die Vererbung von Deklarationen sprechen können. Wenn Sie ein bestimmtes COM-Objekt implementieren, können Sie natürlich die Vererbungstechnologie für die Implementierung verwenden. Dies ist jedoch eine interne Angelegenheit des Objekts, die sich nicht auf den Client auswirkt.

Am Ende des Vortrags über COM möchte ich einige Methoden der Basisschnittstelle von IUnnknown erwähnen, da diese Methoden erstens in jeder Schnittstelle vorhanden sind (denken Sie an die Vererbung von Deklarationen und daran, dass jede Schnittstelle von IUnnknown geerbt wird) und zweitens bei der Verwendung Diese Methoden bilden die gesamte Ideologie der Arbeit mit COM.

Also lassen Sie mich vorstellen - QueryInterface. Über diese Schnittstelle kann der Client ermitteln, ob das COM-Objekt eine andere dem Client bekannte Schnittstelle unterstützt, und einen Zeiger auf diese Schnittstelle abrufen, sofern dies vom Objekt unterstützt wird. Bei der Arbeit mit COM ist dies möglicherweise der beliebteste Aufruf. In Delphi wird es manchmal explizit, manchmal implizit aufgerufen. Ein impliziter Aufruf tritt auf, wenn Sie den Operator as für Schnittstellenreferenzen verwenden.
Die IUnnknown-Schnittstelle deklariert außerdem zwei Methoden der AddRef- und Release-Schnittstelle, die für die Zählung der Verwendung eines COM-Objekts verantwortlich sind (eine der Anforderungen für COM-Objekte besteht darin, dass sie sich selbst zerstören können müssen, wenn niemand anderes ihre Dienste benötigt). Es ist unwahrscheinlich, dass Sie diese Methoden direkt aufrufen müssen, da Delphi ihre Aufrufe automatisch generiert.




Ihor Osov'yak   (2003-07-13 23:25) [2]



Das heißt, die Arbeit mit COM-Objekten erfolgt nur über Schnittstellen. Es gibt viel Literatur zu diesem Thema.

Es gibt einen noch weniger offensichtlichen Punkt. Verwendung von Schnittstellen neben COM. Es gibt mehrere Beispiele. Zum Beispiel die Implementierung von Objekten mit Selbstzerstörung. Das heißt, wir erstellen ein Objekt und arbeiten ausschließlich über eine Schnittstellenverbindung damit. Wenn dieses Objekt nicht mehr benötigt wird, wird die Verknüpfung zurückgesetzt und der Nutzungszähler des Objekts um eins verringert. Wenn das Objekt an keiner anderen Stelle verwendet wird, wird der Zähler auf 0 zurückgesetzt und das Objekt wird zerstört.
Zweites Beispiel. Es gibt viele verschiedene Arten von Objekten. Alle von ihnen haben mehrere identische Methoden, und wir sind gezwungen, mit diesen Methoden zu arbeiten, unabhängig vom Objekttyp. Beispielsweise gibt es viele Dialogfelder, Methoden sind putData, getData, Execute. Nehmen wir an, es ist prinzipiell problematisch, sie auf einen Vorfahren zu reduzieren, oder es ist unpraktisch. Wir werden hier nicht auf den Konstruktionsfehler eingehen - vielleicht ein erfolgloses Beispiel, aber es veranschaulicht die Idee.
Wir können also eine Schnittstelle deklarieren, die diese drei Methoden enthält, und diese Dialoge lehren, um diese Schnittstelle zu implementieren. Und dann diese Schnittstelle durcharbeiten, ohne wirklich zu untersuchen, welche Dialoge wir für diese Schnittstelle abrufen.




Alex134   (2003-07-14 01:13) [3]

Jetzt ist alles klar geworden, vielen Dank!



Крот   (2003-07-14 08:11) [4]

http://www.clubpro.spb.ru/cominside/

Hier ist ein sehr guter Newsletter zu COM-Technologien, besser als alle anderen Bücher, es gibt Beispiele zu Delphi, ich empfehle einen Blick.



Seiten: 1 ganze Branche

Forum: "Haupt";
Aktuelles Archiv: 2003.07.24;
Herunterladen: [xml.tar.bz2];

nach oben





Speicher: 0.58 MB
Zeit: 0.028 c
9-77703
Antichacker
2003-01-31 10:32
2003.07.24
2 Frage zu GLScene (irgendwie einfach)


1-77864
Dyuzhev
2003-07-02 14:55
2003.07.24
Dropdown-Menü


1-77936
Luarvik
2003-07-10 14:49
2003.07.24
Kompatibel mit FORTRAN


4-78182
777
2003-05-22 00:35
2003.07.24
Menü


6-78016
vereint
2003-05-16 14:46
2003.07.24
Mail senden





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarisch katalanisch Chinesisch (vereinfacht) Chinesisch (traditionell) kroatisch Tschechisch Dänisch Niederländisch Englisch estnisch Philippinisch Finnisch Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italienisch Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegisch
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Schwedisch Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch Bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada Khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu Yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch