Utilisation d'un courtier XML
Remonter à Création d'applications multiniveaux - Index
Un courtier XML a deux fonctions principales :
- Il lit à partir du serveur d'applications les paquets de données XML et les rend disponibles aux éléments Web générant le HTML pour l'application InternetExpress.
- Il reçoit des navigateurs les mises à jour au format des paquets delta XML et les applique au serveur d'applications.
Lecture des paquets de données XML
Avant que le courtier XML fournisse les paquets de données XML aux composants générant les pages HTML, il doit les lire depuis le serveur d'applications. Pour cela, il utilise l'interface IAppServer, qu'il acquiert via un composant connexion.
Remarque : Même lorsque vous utilisez SOAP, où le serveur d'applications prend en charge IAppServerSOAP, le courtier XML utilise IAppServer car le composant connexion agit comme adaptateur entre les deux interfaces.
Vous devez définir les propriétés suivantes pour que le générateur XML utilise l'interface IAppServer :
- Définissez la propriété RemoteServer par le composant connexion qui établit la connexion au serveur d'applications et obtient son interface IAppServer. Au moment de la conception, vous pouvez sélectionner cette valeur dans l'inspecteur d'objets à partir d'une liste déroulante.
- Définissez la propriété ProviderName par le nom du composant fournisseur sur le serveur d'applications qui représente l'ensemble de données pour lequel vous voulez les paquets XML. Ce fournisseur fournit les paquets de données XML et applique les mises à jour à partir des paquets delta XML. Au moment de la conception, si la propriété RemoteServer est définie et si le composant connexion a une connexion active, l'inspecteur d'objets affiche la liste des fournisseurs disponibles. Si vous utilisez une connexion DCOM, le serveur d'applications doit être recensé sur la machine client.
Deux propriétés vous permettent d'indiquer les informations à inclure dans les paquets de données.
- Vous pouvez limiter le nombre d'enregistrements ajoutés au paquet de données en définissant la propriété MaxRecords. Cela est particulièrement important pour les gros ensembles de données car les applications InternetExpress envoient tout le paquet de données aux navigateurs Web client. Si le paquet de données est trop gros, le temps de téléchargement peut devenir excessivement long.
- Si le fournisseur sur le serveur d'applications représente une requête ou une procédure stockée, vous pouvez souhaiter transmettre les valeurs des paramètres avant d'obtenir le paquet de données XML. Vous pouvez fournir ces valeurs à l'aide de la propriété Params.
Les composants qui génèrent le code HTML et javascript pour l'application InternetExpress utilisent automatiquement le paquet de données XML du courtier XML lorsque vous avez défini leur propriété XMLBroker. Pour obtenir le paquet de données XML directement dans le code, utilisez la méthode RequestRecords.
Remarque : Quand le courtier XML fournit un paquet de données à un autre composant (ou que vous appelez RequestRecords), il reçoit un événement XMLBrokr.OnRequestRecords. Vous pouvez utiliser cet événement pour fournir votre propre chaîne XML au lieu du paquet de données du serveur d'applications. Par exemple, vous pouvez lire le paquet de données XML à partir du serveur d'applications à l'aide de GetXMLRecords, puis le modifier avant de le fournir à la page Web.
Application des mises à jour à partir des paquets delta XML
Lorsque vous ajoutez le courtier XML au module Web (ou à un module de données contenant un TWebDispatcher), il se recense lui-même automatiquement avec le répartiteur Web en tant qu'objet auto-réparti. Cela veut dire qu'au contraire des autres composants, il n'est pas nécessaire de créer un élément d'action pour le courtier XML afin qu'il réponde aux messages de mise à jour provenant du navigateur Web. Ces messages contiennent les paquets delta XML à appliquer au serveur d'applications. Habituellement, ils proviennent d'un bouton que vous avez créé dans une des pages HTML produites par l'application client Web.
Afin que le répartiteur reconnaisse les messages pour le courtier XML, vous devez les décrire à l'aide de la propriété WebDispatch. Définissez la propriété PathInfo par la partie chemin d'accès de l'URL à laquelle sont envoyés les messages du courtier XML. Définissez MethodType par la valeur d'en-tête de la méthode des messages de mise à jour adressés à cette URL (classiquement mtPost). Si vous souhaitez répondre à tous les messages avec le chemin d'accès spécifié, définissez MethodType par mtAny. Si vous ne voulez pas que le courtier XML réponde directement aux messages de mise à jour (par exemple, si vous souhaitez les gérer explicitement en utilisant un élément d'action), définissez la propriété Enabled par False. Pour plus d'informations sur la façon dont le répartiteur Web détermine les composants gérant les messages du navigateur Web, voir Répartition des messages de requête.
Lorsque le répartiteur passe un message de mise à jour au courtier XML, il passe les mises à jour sur le serveur d'applications et il reçoit éventuellement un paquet delta XML décrivant toutes les erreurs de mise à jour qui se sont produites. Finalement, il envoie un message de réponse au navigateur, qui redirige le navigateur sur la page ayant généré le paquet delta XML delta ou lui envoie un nouveau contenu.
Certains événements vous permettent d'intégrer des traitements personnalisés au niveau de chacune des étapes de ce processus de mise à jour :
- La première fois que le répartiteur passe le message de mise à jour au courtier XML, il reçoit un événement XMLBrokr.BeforeDispatch, où vous pouvez pré-traiter la demande ou même la gérer entièrement. Cet événement permet au courtier XML de gérer d'autres messages que les messages de mise à jour.
- Si le gestionnaire de l'événement BeforeDispatch ne gère pas le message, le courtier XML reçoit un événement XMLBrokr.OnRequestUpdate, où vous pouvez appliquer les mises à jour vous-même plutôt que de suivre le processus par défaut.
- Si le gestionnaire de l'événement OnRequestUpdate ne gère pas la demande, le courtier XML applique les mises à jour et reçoit un paquet delta contenant les erreurs s'y rapportant.
- S'il n'y a pas d'erreur de mise à jour, le courtier XML reçoit un événement XMLBrokr.OnGetResponse, où vous pouvez créer un message de réponse indiquant que les mises à jour ont été appliquées avec succès ou envoyer des données rafraîchies au navigateur. Si le gestionnaire de l'événement OnGetResponse n'achève pas la réponse (ne définit pas le paramètre Handled par True), le courtier XML envoie une réponse qui redirige le navigateur sur le document ayant généré le paquet delta.
- S'il y a des erreurs de mise à jour, le courtier XML reçoit un événement XMLBrokr.OnGetErrorResponse. Vous pouvez utiliser cet événement pour tenter de résoudre les erreurs ou pour générer une page Web qui les décrit à l'utilisateur final. Si le gestionnaire de l'événement OnGetErrorResponse n'achève pas la réponse (ne définit pas le paramètre Handled par True), le courtier XML appelle un générateur de contenu particulier, appelé le ReconcileProducer, pour générer le contenu du message de réponse.
- Enfin, le courtier XML reçoit un événement XMLBrokr.AfterDispatch, où vous pouvez effectuer toutes les actions voulues avant de renvoyer une réponse au navigateur Web.