Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :


Création d'un Service Calculatrice Simple

Date de publication : 25 mars 2011.

Par Evaris NGOUZO (http://evaris-ngouzo.developpez.com)
 

Ceci est un tutoriel pas à pas pour construire un simple service calculatrice, ainsi que son application cliente en utilisant Delphi XE et DataSnap.

       Version PDF (Miroir)   Version hors-ligne (Miroir)
Viadeo Twitter Facebook Share on Google+        



I. Création de l'application serveur
II. Création de l'application cliente
III. Conclusion


I. Création de l'application serveur

La première étape est de créer une nouvelle application serveur DataSnap, en utilisant l'assistant "Serveur DataSnap". Démarrer Delphi XE. Sélectionner dans le menu principal "Fichier -> Nouveau -> Autre", dans la boite de dialogue "Nouveaux éléments" double-cliquers sur l'icône "Serveur DataSnap" dans la catégorie "Projets Delphi -> Serveur DataSnap".

Dans le premier onglet, laisser le "type de projet" DataSnap qui par défaut est à "Application fiches VCL".

Dans le second onglet, garder les valeurs par défaut. Plus tard nous allons remplacer, les méthodes serveur exemple par nos propres implémentations.

Dans le troisième onglet, nous allons garder la valeur par défaut "211" comme port TCP/IP à utiliser. C'est toujours une bonne idée tester le port en cliquant sur le bouton "Tester le port" pour s'assurer que le port est libre.

Dans le dernier onglet, nous allons également garder la classe ancêtre par défaut des méthodes serveur qui est "TComponent".

Cliquer sur le bouton "Terminer" et l'assistant devrait créer un nouveau projet avec 3 unités.

Sauvegarder tout le projet en cliquant sur le menu "Fichier -> Tout enregistrer".

Créer un nouveau répertoire pour tous les fichiers de ce tutoriel. Par exemple "C:\DataSnapLabs\SimpleCalc\".

Sauvegarder la fiche principale de l'application sous le nom "FormServerUnit" et garder les noms de fichier par défaut pour les autres unités ("ServerContainerUnit1" et "ServerMethodsUnit1") et enregistrer le projet sous le nom "SimpleCalcServer".

A ce niveau, vous devriez avoir ceci dans le gestionnaire de projets de delphi.

Ouvrir à présent l'unité "ServerMethodsUnit1.pas" et implémenter les fonctions de notre service de calculatrice simple. Remplacer les méthodes exemples ajoutées par l'assistant ("EchoString" et "ReverseString") avec les méthodes "Add", "Substract", "Multiply" et "Divide".

Le code source de l'unité "ServerMethodsUnit1" devrait ressembler à ceci :

unit ServerMethodsUnit1;

interface

uses
  Classes;

type
{$METHODINFO ON}
  TServerMethods1 = class(TComponent)
  private
    { Private declarations }
  public
    function Add(a, b: double): double;
    function Subtract(a, b: double): double;
    function Multiply(a, b: double): double;
    function Divide(a, b: double): double;
  end;
{$METHODINFO OFF}

implementation

{ TServerMethods1 }

function TServerMethods1.Add(a, b: double): double;
begin
  Result := a + b;
end;

function TServerMethods1.Subtract(a, b: double): double;
begin
  Result := a - b;
end;

function TServerMethods1.Multiply(a, b: double): double;
begin
  Result := a * b;
end;

function TServerMethods1.Divide(a, b: double): double;
begin
  Result := a / b;
end;

end.
Listing 1: ServerMethodsUnit1.pas

Notre serveur est à présent implémenté. Pour développer l'application cliente, le serveur doit être en cours d'exécution.

Sélectionner le menu "Exécuter -> Exécuter sans débogage" pour démarrer le projet serveur, puis minimiser la fenêtre.

Le serveur doit être en cours d'exécution jusqu'à la fin de ce tutoriel.


II. Création de l'application cliente

Faire un clic droit sur le groupe de projets dans le gestionnaire de projets, et sélectionner "Ajouter un nouveau projet".

A partir de la boite de dialogue "Nouveaux éléments", sélectionner "Application fiches VCL" à partir de la catégorie "Projets delphi".

Cliquer sur le bouton "OK". Un nouveau projet devrait s'ajouter dans le groupe de projets.

Sauvegarder tout en cliquant sur le menu "Fichier -> Tout enregistrer".

Naviguer vers le dossier où a été enregistré le serveur et y sauvegarder la fiche principale de l'application cliente en tant que "FormClientUnit", le nouveau projet en tant que "SimpleCalcClient", et le groupe de projets sous le nom "SimpleCalcGrp".

A présent, le gestionnaire de projets devrait ressembler à ceci :"

Assurez vous que le projet client soit le projet actif, et à partir de la boite de dialogue "Nouveaux éléments", choisir "Module client DataSnap".

Une fois de plus, nous allons garder les valeurs par défaut de l'assistant.

Sur le premier onglet, garder l'option "Emplacement du serveur DataSnap" à "Serveur Local".

Notre serveur DataSnap est "Stand alone", gardez donc la valeur par défaut et cliquer sur "Suivant".

Notre serveur utilise "TCP/IP" comme protocole de connexion, gardez donc le choix par défaut et cliquer sur suivant.

Cliquer sur le bouton "Tester la connexion" afin de vérifier que le serveur est à l'écoute sur le port 211 et cliquer sur le bouton "Terminer".

L'assistant ajoutera deux unités au projet client, "ClientClassesUnit1" et "ClientModuleUnit1".

La dernière chose à faire dans ce tutoriel est de mettre en place l'interface utilisateur de l'application cliente.

Allons-y en utilisant l'unité "ClientModuleUnit1" dans la fiche principale. Assurez vous que l'unité de la fiche client soit ouverte dans l'éditeur, et sélectionner la commande de menu "Fichier -> Utiliser l'unité".

Maintenant, dans le code de la fiche client, vous devez utiliser les méthodes exposées via la propriété "ClientModule1.ServerMethods1Client". Ces méthodes possèdent les mêmes noms et les mêmes signatures que les méthodes disponibles sur le serveur.

Voici l'implémentation de la fiche principale de l'application cliente.

unit FormClientUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    EditA: TEdit;
    ButtonAdd: TButton;
    EditB: TEdit;
    ButtonSub: TButton;
    ButtonMult: TButton;
    ButtonDiv: TButton;
    LabelResult: TLabel;
    procedure ButtonAddClick(Sender: TObject);
    procedure ButtonSubClick(Sender: TObject);
    procedure ButtonMultClick(Sender: TObject);
    procedure ButtonDivClick(Sender: TObject);
  private
    { Private declarations }
  public
    function GetA: double;
    function GetB: double;
    procedure ShowResult(aValue: double);
  end;

var
  Form3: TForm3;

implementation

uses ClientModuleUnit1;

{$R *.dfm}

function TForm3.GetA: double;
begin
  Result := StrToFloat(EditA.Text);
end;

function TForm3.GetB: double;
begin
  Result := StrToFloat(EditB.Text)
end;

procedure TForm3.ShowResult(aValue: double);
begin
  LabelResult.Caption := FloatToStr(aValue);
end;

procedure TForm3.ButtonDivClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Divide(GetA, GetB));
end;

procedure TForm3.ButtonMultClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Multiply(GetA, GetB));
end;

procedure TForm3.ButtonSubClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Subtract(GetA, GetB));
end;

procedure TForm3.ButtonAddClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Add(GetA, GetB));
end;

end.
Listing 2 : Implémentation de la fiche principale du client.

Le client final devrait ressembler à ceci :

Et voilà!

Vous avez certainement constaté combien il est simple de créer des serveurs et des clients DataSnap à l'aide de Delphi XE.


III. Conclusion

Dans ce tutoriel, nous avons utilisé Delphi XE pour construire un service de calculatrice simple DataSnap XE consistant en une application native Win32 serveur et un client communicant ensembles via le protocole TCP/IP.

Le code source complet de cet article est disponible en téléchargement à l'adresse : en http://cc.embarcadero.com/Item/28184.

La version vidéo des étapes décrites dans ce tutoriel peuvent être visionnées sur YouTube (en http://www.youtube.com/watch?v=Qm__RdmIWSg).

Pour plus d'informations sur Delphi, consulter les pages : en http://www.embarcadero.com/products/delphi fr http://delphi.developpez.com



               Version PDF (Miroir)   Version hors-ligne (Miroir)

Valid XHTML 1.0 TransitionalValid CSS!

Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -