Durch benutzerdefinierte Ereignisse mit Providern kommunizieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Der Quelldatenmenge Parameter übergeben


Client-Datenmengen kommunizieren über die spezielle Schnittstelle Datasnap.Midas.IAppServer mit einer Provider-Komponente. Falls es sich um einen lokalen Provider handelt, ist IAppServer die Schnittstelle zu einem automatisch erzeugten Objekt, das die gesamte Kommunikation zwischen der Client-Datenmenge und ihrem Provider abwickelt. Handelt es sich um einen externen Provider, ist IAppServer die Schnittstelle zu einem Remote-Datenmodul auf dem Anwendungsserver oder (im Falle eines SOAP-Servers) eine von der Verbindungskomponente erzeugte Schnittstelle.

TClientDataSet bietet zahlreiche Möglichkeiten, die Kommunikation unter Verwendung der Schnittstelle IAppServer anzupassen. Vor und nach jedem Aufruf einer IAppServer-Methode, der sich an den Provider der Client-Datenmenge richtet, empfängt TClientDataSet spezielle Ereignisse, die es der Komponente ermöglichen, beliebige Informationen mit dem Provider auszutauschen. Diese Ereignisse sind ähnlichen Ereignissen auf dem Provider zugeordnet. Ruft die Client-Datenmenge beispielsweise ihre Methode ApplyUpdates auf, geschieht Folgendes:

  1. Die Client-Datenmenge empfängt ein BeforeApplyUpdates-Ereignis, bei dessen Behandlung sie beliebige benutzerdefinierte Informationen in einem OleVariant-Objekt namens OwnerData übergeben kann.
  2. Auch der Provider empfängt ein BeforeApplyUpdates-Ereignis, bei dessen Behandlung er auf das OwnerData-Objekt von der Client-Datenmenge reagieren und den Wert von OwnerData mit neuen Informationen aktualisieren kann.
  3. Anschließend durchläuft der Provider den normalen Prozess der Zusammenstellung eines Datenpakets (einschließlich der damit verbundenen Ereignisse).
  4. Der Provider empfängt das Ereignis AfterApplyUpdates, bei dessen Behandlung er auf den aktuellen Wert von OwnerData reagieren und ihn mit einem neuen Wert für den Client aktualisieren kann.
  5. Schließlich empfängt auch die Client-Datenmenge ein AfterApplyUpdates-Ereignis, bei dessen Behandlung sie auf den zurückgegebenen Wert von OwnerData reagieren kann.

Jeder Aufruf einer der Methoden von IAppServer wird von einem ähnlichen Satz von BeforeXXX- und AfterXXX-Ereignissen begleitet, die es Ihnen ermöglichen, die Kommunikation zwischen der Client-Datenmenge und ihrem Provider anzupassen.

Darüber hinaus unterstützt TClientDataSet eine spezielle Methode namens DataRequest, deren einzige Aufgabe darin besteht, eine anwendungsspezifische Kommunikation mit dem Provider zu ermöglichen. Wenn die Client-Datenmenge DataRequest aufruft, übergibt sie ein OleVariant-Objekt als Parameter, das beliebige Informationen enthalten kann. Dadurch wiederum wird auf dem Provider das Ereignis OnDataRequest erzeugt, nach dem Sie auf eine für die Anwendung sinnvolle Möglichkeit reagieren und einen Wert an die Client-Datenmenge zurückgeben können.

Siehe auch