Université Tunis El Manar-Institut Supérieur d’Informatique Module SOA-Web Services - A.U 2012/2013 TP1 : Introduction Aux Architectures CLIENT/SERVEUR Objectifs : Comprendre l’architecture Client/serveur. Explorer et déployer une application de type 2 tiers (service de chat). Explorer et déployer un site marchand ‘Goodiezz’ du type 3 tiers. I. Mise en œuvre d’un service de ‘CHAT’ : On désire développer une application de Chat entre deux entités ‘Client / Serveur’. 1. Technologies à utiliser : Plateforme NetBeans 7 Java : le client et le serveur seront codés tous les deux en JAVA sous la forme d’un projet JAVA application. 2. Réalisation : 1. Charger la plateforme NetBeans. 2. Créer un nouveau projet comme ‘Java Application’ nommé ‘CHAT-CLIENT’ 3. Ajouter une nouvelle classe Java « client » au projet ‘CHAT-CLIENT’. 4. Ajouter le code Java : client d’ANNEXE dans cette classe. 5. Créer de nouveau un projet comme ‘Java Application’ nommé ‘CHATSERVEUR’ 6. Ajouter une nouveau classe Java «serveur » au projet ‘CHAT-SERVEUR’. 7. Ajouter le code Java : serveur d’ANNEXE dans cette classe. 8. Exécuter les projets ‘CHAT-CLIENT’ et ‘CHAT-SERVEUR’. 3 ème SIL p. 1 9. Faire échanger des messages entre le client et le serveur. Remarque : vérifiez que l’option ‘Set Main Class’ est décoché lors de création d’un projet. II. Etude d’un Site marchand « Goodiezz » : 1. Description du site : Goodiezz est un site web de commerce électronique de catégorie B2C (Business to Consumers). Ce site sera spécialisé dans la vente d’accessoires divers et d’objets de décoration. Il sera orienté vers un public « jeune » et il devra : Présenter un choix de produits diversifié et intéressant. Faire connaître ce type de produits. Permettre d’effectuer des achats grâce à des méthodes de paiement en ligne. Assurer des transactions sécurisées. Présenter un aspect visuel attractif. Fidéliser les clients. 2. Fonctionnalités du site : Vente Clients Recherche Catalogue de produits Organisation par rubriques Fiches d’informations sur les produits Système de caddie Paiement en ligne Recherche par nom de produit Recherche par prix Recherche par mots clé Inscription et création de comptes Gestion des sessions Système de contact Consultation et ajout de commentaires sur les produits Page de profil Valeur ajoutée Commentaire sur les objets mise en vente Pla n cliquable du site Téléchargement du catalogue FAQ 3. Architecture applicative du site Le modèle d’architecture utilisé pour notre site est le modèle d’architecture 3-tiers. 3 ème SIL couche présentation : client. couche métier : serveur d’application. couche accès aux données : serveur de données. p. 2 4. Technologies à utiliser : Les logiciels de développement utilisés sont : Adobe Dreamweaver® : un éditeur de site web de type WYSIWYG. Adobe Photoshop® : est un logiciel de retouche, de traitement et de dessin assisté par ordinateur. Adobe Flash® : logiciel multimédia utilisé pour créer le contenu Flash. EasyPHP® : est un package WAMP, une plateforme de développement Web, permettant de faire fonctionner localement (sans se connecter à un serveur externe) des scripts PHP. Pour le développement de goodiezz.com nous avons eu recours a certaines technologies dont : XHTML 2.0 CSS 2.x et 3.x Flash PHP SQL Ajax 5. Réalisation : Le site marchand ‘Goodiezz’ est déployé sur machine. Remarques : le dossier contenant les fichiers du site est sous le répertoire : C:/ProgrammesFiles/EasyPHP1.7/www. 5.1 Charger EasyPHP 1-7. 5.2 Démarrer EasyPHP. 5.3 Charger Web local 5.4 Choisir le dossier ‘Goodiezz’ 5.5. Explorer le site : 1. Consulter les produits. 3 ème SIL p. 3 2. 3. 4. 5. 6. 7. 8. 9. Chercher des produits suivant plusieurs critères. Effectuer l’inscription au site. Ajouter des produits au caddie. Ajouter un commentaire. Enregistrer le caddie. Payer le caddie. Consulter l’historique des caddies précédents. Consulter ton profil. 10. Contacter le site. 5.6 Explorer la base de données du site 1. 2. 3. 4. Charger PHPMyAdmin. Choisir GESTIONBDD. Sélectionner la base de données ‘Godieez’ et ‘laposte’ Afficher et commenter les modifications apportés sur les tables ‘utilisateur’,‘caddie’, ‘comptedinars’, ‘contact’ et ‘commentaire’. ANNEXE 1. LANGAGE O.O JAVA : Une classe Java est un prototype général qui décrit les caractéristiques d’objets similaires ayant des propriétés (données) et des opérations (méthodes). Le constructeur (New) contrôle la création et l’initialisation d’un objet. Un objet est une instance d’une classe particulière. La méthode Main est une méthode existée dans la classe. C’est la première méthode qui sera exécutée. Elle permet de tester les méthodes d’une classe. Package est un ensemble de classes ou interfaces. Il sert à regrouper des classes similaires. (ayant même intérêt). Exception : est un événement anormal ou inattendu. Ce sont des objets qui stockent des informations tels que le type d’exception, la source. 2. Code Java : Client : Package CHAT-CLIENT; import java.net.*; import java.io.*; public class client { public client () { } 3 ème SIL p. 4 public void dialoguer () { Socket sClient=null; try{ // on se connecte au service officiant sur le port P de la machine M System.out.println("Demande de connexion..."); sClient=new Socket("127.0.0.1",7001); System.out.println("Connexion établie..."); // on crée les flux d'entrée-sortie du socket client BufferedReader in=new BufferedReader(new InputStreamReader(sClient.getInputStream())); BufferedReader keybord = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out=new PrintWriter(sClient.getOutputStream(),true); // boucle demande - réponse boolean fini=false; String demande; String reponse; while (! fini){ // on prépare la demande demande = keybord.readLine(); // on l'envoie out.println("CLIENT : "+ demande); // on lit la réponse reponse = in.readLine(); // on traite la réponse System.out.println("client1:" + reponse); if(demande.equals("quitter")||demande.equals("Quitter")) fini=true; } // c'est fini sClient.close(); } catch(Exception e){ // on gère l'exception System.out.println("Erreur "+e); } } } public static void main(String[] args) { client client1 = new client(); client1.dialoguer(); } 3. Code Java : Serveur package CHAT-SERVEUR; import java.net.*; import java.io.*; 3 ème SIL p. 5 public class serveur { public serveur() { } public void dialoguer(){ ServerSocket sEcoute = null; try { // ouverture du service int portEcoute = 7001; int maxConnexions = 1; sEcoute = new ServerSocket(portEcoute, maxConnexions); // traitement des demandes de connexion boolean fini = false; Socket sService = null; System.out.println("Attente de connexion..."); sService = sEcoute.accept(); System.out.println("Connexion établie..."); BufferedReader in = new BufferedReader(new InputStreamReader(sService.getInputStream())); BufferedReader keybord = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(sService.getOutputStream(),true); String demande; String reponse; while (!fini) { demande = in.readLine(); if (demande.equals("CLIENT : quitter")||demande.equals("CLIENT : Quitter")){ out.println("...ok! Bye! fermeture de la connexion "); fini = true; continue; } System.out.println(demande); reponse = keybord.readLine(); out.println("SERVEUR : "+reponse); } // c'est fini - on clôt le service System.out.println("...fermeture de la connexion!"); sEcoute.close(); sService.close(); } catch (Exception e) { // on traite l'exception System.out.println("Erreur !" + e); } } public static void main(String[] args) { serveur serveur1 = new serveur(); serveur1.dialoguer(); } } 3 ème SIL p. 6