Tutoriel : Application DataSnap utilisant un serveur ISAPI DLL

De RAD Studio
Aller à : navigation, rechercher

Remonter à Tutoriels Bases de données et LiveBindings

Ce tutoriel décrit les étapes de base pour créer une application client-serveur simple. Le serveur est implémenté en tant qu'application ISAPI DLL, et le client est écrit en Delphi. Après la création du serveur et l'activation de la connexion entre le client et le serveur avec DataSnap, le client peut appeler des méthodes définies et implémentées sur le serveur.

Les principales étapes sont les suivantes :

Configuration de votre environnement de développement

  1. Cliquez sur Démarrer, tapez "Activer ou désactiver" dans le champ de recherche. Puis, sélectionnez Activer ou désactiver des fonctionnalités Windows parmi les entrées correspondantes.
  2. Développez le noeud Services Internet (IIS) dans la boîte de dialogue Fonctionnalités de Windows, puis :
    • Dans Outils d'administration Web, cochez Console de gestion IIS.
    • Dans Services World Wide Web, développez Fonctionnalités de développement d'applications, puis cochez CGI et Extensions ISAPI :
    WindowsFeatures.png

  3. Une fois les fonctionnalités Windows activées, cliquez sur Démarrer, tapez "Gestionnaire" dans le champ de recherche et ouvrez Gestionnaire des services Internet (IIS). Développez les noeuds Connexions, cliquez sur Pools d'applications et sélectionnez DefaultAppPool :
  4. Enable32bit.png

    • Dans le volet Actions, cliquez sur Paramètres avancés et définissez Activer les applications 32 bits sur True :

    AppPoolSett.png

  5. Développez le noeud Sites à partir du volet Connexions, cliquez avec le bouton droit sur Default Web Site et sélectionnez Ajouter un répertoire virtuel. Entrez un alias et un chemin d'accès physique :
  6. AddVirtualDir.png

  7. Accédez au noeud racine à partir du volet Connexions et double-cliquez sur Restrictions ISAPI et CGI. Sélectionnez Modifier les paramètres de fonction dans le volet Actions et cochez les deux options :
  8. ISAPI&CGI.png

  9. Retournez au noeud racine et double-cliquez sur Mappages de gestionnaires. Allez dans le volet Actions, sélectionnez Modifier les autorisations de fonction et cochez Exécution.
  10. EditFeaturesPerm.png

  11. Sélectionnez le noeud racine et, à partir du volet Actions, cliquez sur Démarrer pour démarrer le serveur.

Création du serveur

  1. Sélectionnez Fichier > Nouveau > Autre > Projets Delphi > Serveur DataSnap et choisissez Application DataSnap WebBroker.
    • Définissez le type de projet sur Bibliothèque de liaison dynamique ISAPI. Cliquez sur Suivant.
    • Dans Fonctionnalités serveur, assurez-vous que Classe de méthodes serveur est sélectionné. Cliquez sur Suivant.
    • Sélectionnez TComponent en tant que type ancêtre. Cliquez sur Terminer.
    Le nouveau projet comporte deux unités :
    • ServerMethodsUnit1 implémente les méthodes serveur pour ce serveur DataSnap. Elle contient l'implémentation de deux méthodes simples appelées EchoString et ReverseString, qui renvoient la Valeur donnée sous la forme d'un paramètre dans des états inversés respectifs normaux.
    • WebModuleUnit1 contient les composants qui permettent à cette fonction DLL ISAPI de fonctionner comme un serveur DataSnap. DSHTTPWebDispatcher est responsable de la gestion des requêtes et réponses HTTP ISAPI/WebBroker pour le compte du serveur DataSnap.
    Les composants DSHTTPWebDispatcher1 et DSServerClass1 ont tous deux leur propriété Server définie sur DSServer1.
  2. Définissez le répertoire de sortie sur le chemin physique du répertoire virtuel 'C:\myExample' :
    OutputDir.png

  3. Construisez le projet.
  4. Vérifiez que le serveur s'exécute.
  5. Naviguez jusqu'à "localhost/myExample/Project1.dll". Vous devriez voir une page comme celle-ci :
  6. Browser.png

  7. Dans cet exemple, nous ajoutons une nouvelle méthode nommée SayHello à ServerMethodsUnit1. La méthode renvoie une chaîne concaténée comme "Hello, FirstName LastName !", où FirstName et LastName sont deux paramètres chaînes.
    Delphi
     unit ServerMethodsUnit1;
    
    interface
    
    uses System.SysUtils, System.Classes, Datasnap.DSServer, Datasnap.DSAuth;
    
    type {$METHODINFO ON}
      TServerMethods1 = class(TComponent)
      private
        { Private declarations }
      public
        { Public declarations }
        ...
        function SayHello(FirstName: string; LastName: string): string;
      end;
    {$METHODINFO OFF}
    
    implementation
    
    uses System.StrUtils;
    
    ...
    
    function TServerMethods1.SayHello(FirstName, LastName: string): string; begin
      Result := 'Hello, ' + FirstName + ' ' + LastName + ' !';
    end;
    
    end.
    
  8. Construisez Project1.dll. Si une erreur se produit, arrêtez le serveur dans le gestionnaire de services Internet (IIS), construisez le projet, puis démarrez le serveur.
  9. Appelez la méthode à partir du navigateur. Le modèle par défaut pour un appel à DataSnap/REST est :

    http:// servername[:port]/datasnap/rest/classname/method/arg1/arg2/...argN

    où :
    • servername est le nom du serveur ou domaine (une partie standard de la requête HTTP).
    • port est requis si un port non standard est assigné pour http ou https.
    • /datasnap/rest est le modèle pour la gestion spéciale de la répartition par le serveur DataSnap. (Les valeurs "datasnap" et "rest" peuvent être redéfinies par des identificateurs de votre choix.)
    • /classname est le nom de la classe.
    • /method est le nom de la méthode de classe (fonction ou procédure)
    • /arg1 … /argn sont les paramètres transmis à la méthode. Si les arguments contiennent des caractères spéciaux, ils doivent être encodés en URL.

    CallingmethodBrowser.png
    Le contenu est affiché au format JSON.

Création du client

  1. Ajoutez un nouveau projet Application multi-périphérique dans ProjectGroup1.
  2. Déposez un composant TDSRestConnection sur la fiche.
    • A partir de l'inspecteur d'objets, définissez Host sur localhost.
    • Définissez la propriété LoginPrompt sur False.
    • Définissez UrlPath sur myExample/Project1.dll.
    • Cliquez avec le bouton droit sur le composant DSRestConnection1 de la fiche Form1 et sélectionnez Générer les classes client dataSnap. Une nouvelle unité appelée ClientClassesUnit1.pas a été ajoutée à votre projet.
  3. Revenez à Form1 dans Unit1 et déposez deux composants TLabel. Définissez leur propriété Text sur FirstName pour Label1 et LastName pour Label2.
  4. Ajoutez deux composants TEdit sur la fiche. Définissez leur propriété Name sur First et Last.
  5. Déposez un TButton et définissez la propriété Text sur SayHello.
  6. ClientForm.png

  7. Dans l'inspecteur d'objets, accédez à Evénements et implémentez l'événement OnClick pour le TButton SayHello :
     procedure TForm1.SayHelloClick(Sender: TObject); var
      Temp: TServerMethods1Client;
    begin
      Temp := TServerMethods1Client.Create(DSRestConnection1);
      ShowMessage(Temp.SayHello(First.Text, Last.Text));
    end;
    
  8. Enregistrez votre projet et appuyez sur Exécuter.
  9. Final.png

Voir aussi