Extension de l'interface du serveur d'applications
Remonter à Création de l'application serveur
Les applications client interagissent avec le serveur d'applications en créant, ou en s'y connectant, une instance du module de données distant. Elles utilisent son interface comme base de toute communication avec le serveur d'applications.
Vous pouvez effectuer un ajout à l'interface de votre module de données distant afin d'améliorer la prise en charge de vos applications client. Cette interface est un descendant de IAppServer ; elle est automatiquement créée par l'expert lorsque vous créez le module de données distant.
Pour effectuer un ajout à l'interface du module de données distant, vous pouvez
- Choisir la commande Ajouter à l'interface dans le menu Edition de l'EDI. Indiquez si vous ajoutez une procédure, une fonction ou une propriété et entrez la syntaxe. Lorsque vous cliquez sur OK, vous vous retrouvez dans l'éditeur de code sur l'implémentation du nouveau membre de votre interface.
- Utiliser l'éditeur de bibliothèque de types. Sélectionnez l'interface de votre serveur d'applications dans l'éditeur de bibliothèque de types et cliquez sur le bouton d'outil correspondant au type de membre d'interface (méthode ou propriété) que vous ajoutez. Nommez votre membre d'interface dans la page Attributs, spécifiez les paramètres et le type dans la page Paramètres puis rafraîchissez la bibliothèque de types. Pour plus d'informations sur l'éditeur de bibliothèque de types, voir Utilisation des bibliothèques de types.
Remarque : Aucune de ces approches ne fonctionne si vous implémentez TSoapDataModule. Pour les descendants de TSoapDataModule, vous devez modifier l'interface du serveur directement.
Quand vous ajoutez une interface COM, vos modifications sont ajoutées au code source de l'unité et dans le fichier de la bibliothèque de types (.TLB).
Remarque : Vous devez enregistrer explicitement le fichier TLB en choisissant Rafraîchir dans l'éditeur de bibliothèque de types et en sauvegardant ensuite les modifications depuis l'EDI.
Une fois que vous avez effectué un ajout à l'interface de votre module de données distant, localisez les propriétés et les méthodes ajoutées à l'implémentation de votre module de données distant. Ajoutez du code pour terminer cette implémentation en remplissant le corps des nouvelles méthodes.
Si vous n'écrivez pas un module de données SOAP, les applications client appellent les extensions de votre interface à l'aide de la propriété AppServer de leur composant connexion. Avec des modules de données SOAP, elles appellent la méthode GetSOAPServer du composant connexion. Pour plus d'informations sur la façon d'appeler les extensions de vos interfaces, voir Appel des interfaces serveur.
Ajout de rappels à l'interface du serveur d'applications
Vous pouvez faire que le serveur d'applications appelle votre application client en introduisant un rappel. Pour ce faire, l'application client passe une interface à l'une des méthodes du serveur d'applications, et le serveur d'applications appelle ensuite cette méthode. Cependant, si vos extensions à l'interface du module de données distant comprennent des rappels, vous ne pouvez pas utiliser de connexion HTTP ou SOAP. Datasnap.Win.SConnect.TWebConnection et SoapConn.TSoapConnection ne supportent pas les rappels. Si vous utilisez une connexion de type socket, les applications client doivent indiquer si elles utilisent ou non les rappels par la définition de la propriété SupportCallbacks. Tous les autres types de connexions supportent automatiquement les rappels.
Extension de l'interface d'un serveur d'applications transactionnel
Si vous utilisez les transactions ou l'activation juste à temps, vous devez vous assurer que toutes les nouvelles méthodes appellent SetComplete pour indiquer leur achèvement. Cela permet l'arrêt des transactions et la désactivation du module de données distant.
De plus, vous ne pouvez pas renvoyer depuis ces nouvelles méthodes de valeurs qui rendraient possible une communication directe entre les clients et les objets ou interfaces du serveur d'applications sans fournir une référence fiable. Si vous utilisez un module de données MTS sans état, oublier d'utiliser une référence fiable peut provoquer des blocages car vous ne garantissez pas que le module de données distant soit actif.