Anzeigen: Delphi C++
Anzeigeeinstellungen

XML-Broker verwenden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mehrschichtige Anwendungen erstellen - Index

Der XML-Broker erfüllt zwei wichtige Aufgaben:

  • Er ruft XML-Datenpakete vom Anwendungsserver ab und stellt sie für die Web- Elemente bereit, welche die HTML-Seiten für die InternetExpress-Anwendung generieren.
  • Er empfängt Aktualisierungen in Form von Deltapaketen von Browsern und trägt sie in den Anwendungsserver ein.

XML-Datenpakete abrufen

Bevor der XML-Broker XML-Datenpakete an die Komponenten übergeben kann, die für die Generierung der HTML-Seiten zuständig sind, muss er die Daten vom Anwendungsserver abrufen. Dazu fordert er zunächst mittels einer Verbindungskomponente die IAppServer-Schnittstelle an.

Hinweis: Selbst wenn Sie mit SOAP und einem Anwendungsserver arbeiten, der IAppServerSOAP unterstützt, verwendet der XML-Broker IAppServer, da die Verbindungskomponente als Adapter zwischen den beiden Schnittstellen fungiert.

Damit der XML-Generator die IAppServer-Schnittstelle nutzen kann, müssen die Werte folgender Eigenschaften eingestellt werden:

  • Geben Sie in der Eigenschaft RemoteServer die Verbindungskomponente an, mit der die Verbindung zum Anwendungsserver eingerichtet und dessen IAppServer-Schnittstelle abgerufen wird. Während des Entwurfs kann dieser Wert in einer Dropdown-Liste des Objektinspektors ausgewählt werden.
  • Geben Sie in der Eigenschaft ProviderName den Namen der Verbindungskomponente auf dem Anwendungsserver an, welche die Datenmenge repräsentiert, für die XML-Datenpakete angefordert werden. Dieser Provider stellt die XML-Datenpakete bereit und trägt Aktualisierungen aus XML-Datenpaketen ein. Wenn zur Entwurfszeit die Eigenschaft RemoteServer mit einem Wert belegt ist und von der Verbindungskomponente eine Verbindung eingerichtet wurde, wird im Objektinspektor eine Liste mit allen verfügbaren Providern angezeigt. (Bei Verwendung einer DCOM-Verbindung muss zusätzlich der Anwendungsserver auf dem Client-Computer registriert sein.)

Mit den beiden folgenden Eigenschaften bestimmen Sie den Inhalt der Datenpaketen.

  • Mithilfe der Eigenschaft MaxRecords können Sie die Zahl der Datensätze begrenzen, die in ein Datenpaket aufgenommen werden. Dies ist insbesondere beim Import großer Datenmengen wichtig, da InternetExpress-Anwendungen das gesamte Datenpaket an die Client-Web-Browser senden. Falls das Datenpaket zu groß ist, dauert der Ladevorgang zu lange.
  • Wenn der Provider auf dem Anwendungsserver eine Abfrage oder eine Stored Procedure repräsentiert, kann es sinnvoll sein, vor dem Abrufen eines XML-Datenpakets zusätzliche Parameterwerte zu übergeben. Diese können in der Eigenschaft Params angegeben werden.

Die Komponenten, die für die Generierung von HTML und Javascript für die InternetExpress-Client-Anwendung zuständig sind, verwenden automatisch das XML-Datenpaket des XML-Brokers, sobald ihre Eigenschaft XMLBroker festgelegt wurde. Um das XML-Datenpaket direkt im Quellcode abzurufen, verwenden Sie die Methode RequestRecords.

Hinweis: Wenn der XML-Broker ein Datenpaket für eine andere Komponente bereitstellt (oder wenn Sie RequestRecords aufrufen), erhält der XML-Broker ein XMLBrokr.OnRequestRecords-Ereignis. In diesem Ereignis können Sie einen eigenen XML-String anstelle des Datenpakets vom Anwendungsserver bereitstellen. Sie können beispielsweise ein XML-Datenpaket vom Anwendungsserver mit GetXMLRecords abrufen und es dann bearbeiten, bevor Sie es an die Web-Seite übergeben.

Aktualisierung aus XML-Datenpaketen eintragen

Wenn der XML-Broker in das Web-Modul (bzw. in ein Datenmodul mit einer TWebDispatcher-Komponente) eingefügt wird, registriert er sich beim Web-Dispatcher automatisch als Auto-Dispatcher-Objekt. Sie müssen deshalb im Unterschied zu anderen Komponenten kein Aktionselement für den XML-Broker erstellen, damit dieser auf Aktualisierungsbotschaften eines Web-Browsers antworten kann. Aktualisierungsbotschaften enthalten XML-Datenpakete, die im Anwendungsserver eingetragen werden sollen. Sie werden normalerweise durch das Klicken auf eine Schaltfläche in einer der HTML-Seiten generiert, die von der Web-Client-Anwendung erstellt werden.

Damit der Dispatcher die Botschaften des XML-Brokers erkennt, müssen sie wie im Thema Anforderungsbotschaften verteilen beschrieben werden.

Bei der Weitergabe einer Aktualisierungsbotschaft durch den Dispatcher an den XML-Broker werden gleichzeitig die Aktualisierungen an den Anwendungsserver übergeben. Falls Aktualisierungsfehler vorliegen, empfängt der Dispatcher ein XML-Deltapaket, in dem diese Fehler beschrieben sind. Zuletzt sendet der Dispatcher eine Antwortbotschaft an den Browser zurück, die den Browser entweder dazu veranlasst, zu der Seite zurückzukehren, die das XML-Deltapaket generiert hat, oder irgendeine andere Seite zu senden.

Eine Reihe von Ereignissen gibt Ihnen die Möglichkeit, in die verschiedenen Stadien dieses Aktualisierungsprozesses einzugreifen:

  1. Wenn der Dispatcher die Aktualisierungsbotschaft an den XML-Broker übergibt, empfängt er das Ereignis XMLBrokr.BeforeDispatch. In einer Behandlungsroutine für dieses Ereignis können Sie eine Vorverarbeitung der Anforderung durchführen oder sogar die gesamte Botschaft verarbeiten. Außerdem können Sie den XML-Broker in die Lage versetzen, neben Aktualisierungsbotschaften auch andere Botschaften zu bearbeiten.
  2. Wird die Botschaft nicht in der Ereignisbehandlungsroutine für BeforeDispatch verarbeitet, empfängt der XML-Broker das Ereignis XMLBrokr.OnRequestUpdate. Damit haben Sie die Möglichkeit, die Standardverarbeitung zu umgehen und eine eigene Routine zum Eintragen der Aktualisierungen zu schreiben.
  3. Wenn die Anforderung nicht in einer OnRequestUpdate-Ereignisbehandlungsroutine verarbeitet wird, trägt der XML-Broker die Aktualisierungen ein. Dabei auftretende Fehler werden in einem Deltapaket an den XML-Broker zurückgesendet.
  4. Liegen keine Aktualisierungsfehler vor, empfängt der XML-Broker ein XMLBrokr.OnGetResponse-Ereignis. In einer Behandlungsroutine für dieses Ereignis können Sie eine Antwortbotschaft erstellen, die anzeigt, dass das Eintragen erfolgreich war, oder aktualisierte Daten an den Browser sendet. Wenn die OnGetResponse-Ereignisbehandlungsroutine die Antwort als nicht abgeschlossen signalisiert (der Parameter Handled hat nicht den Wert True), sendet der XML-Broker eine Antwortbotschaft, die den Browser veranlasst, zu dem Dokument zurückzukehren, welches das Deltapaket generiert hat.
  5. Wenn beim Eintragen der Aktualisierungen Fehler aufgetreten sind, empfängt der XML-Broker das Ereignis XMLBrokr.OnGetErrorResponse. In einer entsprechenden Ereignisbehandlungsroutine können Sie dann versuchen, die Aktualisierungsfehler zu beheben. Sie können aber auch eine Web-Seite erstellen, in der die Fehler für den Endbenutzer beschrieben werden. Wenn die OnGetErrorResponse-Ereignisbehandlungsroutine die Antworterstellung nicht abschließt (und damit den Parameter Handled nicht auf True setzt), ruft der XML-Broker, um den Inhalt der Antwortbotschaft zu erstellen, einen speziellen Inhalts-Producer namens ReconcileProducer auf.
  6. Zuletzt empfängt der XML-Broker das Ereignis XMLBrokr.AfterDispatch. In einer Behandlungsroutine für dieses Ereignis können weitere Aktionen implementiert werden, die vor dem Senden der Antwort an den Web-Browser ausgeführt werden sollen.

Siehe auch

In anderen Sprachen