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émarrez Delphi XE. Sélectionnez dans le menu principal « Fichier -> Nouveau -> Autre », dans la boite de dialogue « Nouveaux éléments » double-cliquez sur l'icône « Serveur DataSnap » dans la catégorie « Projets Delphi -> Serveur DataSnap ».
Dans le premier onglet, laissez le « type de projet » DataSnap qui par défaut est à « Application fiches VCL ».
Dans le second onglet, gardez les valeurs par défaut. Plus tard nous allons remplacer, les méthodes serveur exemples 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 ».
Cliquez sur le bouton « Terminer » et l'assistant devrait créer un nouveau projet avec trois unités.
Sauvegarder tout le projet en cliquant sur le menu « Fichier -> Tout enregistrer ».
Créez un nouveau répertoire pour tous les fichiers de ce tutoriel. Par exemple « C:\DataSnapLabs\SimpleCalc\ ».
Sauvegardez la fiche principale de l'application sous le nom « FormServerUnit » et gardez les noms de fichier par défaut pour les autres unités (« ServerContainerUnit1 » et « ServerMethodsUnit1 ») et enregistrez le projet sous le nom « SimpleCalcServer ».
À ce niveau, vous devriez avoir ceci dans le gestionnaire de projets de Delphi.
Ouvrez à présent l'unité « ServerMethodsUnit1.pas » et implémentez les fonctions de notre service de calculatrice simple. Remplacez 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électionnez le menu « Exécuter -> Exécutez sans débogage » pour démarrer le projet serveur, puis minimisez 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▲
Faites un clic droit sur le groupe de projets dans le gestionnaire de projets, et sélectionnez « Ajouter un nouveau projet ».
À partir de la boite de dialogue « Nouveaux éléments », sélectionnez « Application fiches VCL » à partir de la catégorie « Projets Delphi ».
Cliquez sur le bouton « OK ». Un nouveau projet devrait s'ajouter dans le groupe de projets.
Sauvegardez tout en cliquant sur le menu « Fichier -> Tout enregistrer ».
Naviguez vers le dossier où a été enregistré le serveur et sauvegardez-y 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 ».
À 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 », choisissez « Module client DataSnap ».
Une fois de plus, nous allons garder les valeurs par défaut de l'assistant.
Sur le premier onglet, gardez l'option « Emplacement du serveur DataSnap » à « Serveur Local ».
Notre serveur DataSnap est « Stand alone », gardez donc la valeur par défaut et cliquez sur « Suivant ».
Notre serveur utilise « TCP/IP » comme protocole de connexion, gardez donc le choix par défaut et cliquez sur suivant.
Cliquez sur le bouton « Tester la connexion » afin de vérifier que le serveur est à l'écoute sur le port 211 et cliquez 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 est ouverte dans l'éditeur, et sélectionnez 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 ensemble via le protocole TCP/IP.
Le code source complet de cet article est disponible en téléchargement à l'adresse : http://cc.embarcadero.com/Item/28184.
Les versions vidéo des étapes décrites dans ce tutoriel peuvent être visionnées sur YouTube (https://www.youtube.com/watch?v=Qm__RdmIWSg).
Pour plus d'informations sur Delphi, consultez les pages : http://www.embarcadero.com/products/delphihttps://delphi.developpez.com