TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting



Documents pareils
Programme Compte bancaire (code)

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Comment autoriser un programme à communiquer avec Internet sous Vista?

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Assistance à distance sous Windows

Services Windows et Domaines d application

Programmation par les Objets en Java

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Java 7 Les fondamentaux du langage Java

Microsoft Application Center Test

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Tutorial et Guide TeamViewer

TAGREROUT Seyf Allah TMRIM

Corrigé des exercices sur les références

Procédure : Sauvegarder un Windows 7 sur un disque réseau

Corrigés des premiers exercices sur les classes

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Groupes et utilisateurs locaux avec Windows XP

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Remote Method Invocation Les classes implémentant Serializable

Programmation C++ (débutant)/instructions for, while et do...while

.NET remoting. Plan. Principes de.net Remoting

avast! EP: Installer avast! Small Office Administration

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Le langage C. Séance n 4

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Java Licence Professionnelle CISII,

Backup Exec 2014 Management Pack for Microsoft SCOM. - Guide de l'utilisateur

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Installation d'un Active Directory et DNS sous Windows Server 2008

Notions fondamentales du langage C# Version 1.0

TP1 : Initiation à Java et Eclipse

Un serveur web, difficile?

COMMENT INSTALLER LE SERVEUR QIPAIE

STATISTICA Version 12 : Instructions d'installation

Rafraichissement conditionné d'une page en.net

Premiers Pas en Programmation Objet : les Classes et les Objets

contact@nqicorp.com - Web :

Gestion d Active Directory à distance : MMC & Délégation

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Programmation Objet - Cours II

DELEGATION ACADEMIQUE AU NUMERIQUE FORMATION ADMINISTRATEUR SCRIBE 2.3 ET CARTABLE EN LIGNE (CEL)

Chapitre 10. Les interfaces Comparable et Comparator 1

Gestion des documents avec ALFRESCO

Reporting Services - Administration

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Service de certificat

RMI le langage Java XII-1 JMF

NAS 206 Utiliser le NAS avec Windows Active Directory

5004H103 Ed. 02. Procédure d installation du logiciel AKO-5004

Volet de visualisation

WINDOWS SHAREPOINT SERVICES 2007

Tutorial Terminal Server sous

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Ouvrez un compte Hotmail pour communiquer

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Windows Serveur 2012 : DHCP. Installation et mise en place

La base de données XML exist. A. Belaïd

Tâches planifiées. Chapitre Introduction

TP1 : Initiation à Java et Eclipse

Guide de configuration. Logiciel de courriel

AFTEC SIO 2. Christophe BOUTHIER Page 1

Comment accéder à d Internet Explorer

Au préalable, nous nous plaçons dans l espace au sein duquel nous allons créer notre raccourci vers l ENTG.

WinReporter Guide de démarrage rapide. Version 4

Généralités sur le Langage Java et éléments syntaxiques.

GUIDE DE DÉMARRAGE RAPIDE

Tp 1 correction. Structures de données (IF2)

NetSupport Notify (v2.01) Guide de démarrage. Tous droits réservés NetSupport Ltd

Remote Method Invocation (RMI)

Didacticiel de mise à jour Web

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Langage Java. Classe de première SI

Découvrir la messagerie électronique et communiquer entre collègues. Entrer dans le programme Microsoft Outlook Web Access

Projet de programmation (IK3) : TP n 1 Correction

Hyper V. Installation et configuration d une machine virtuelle. Joryck LEYES

Utilisation de l ordinateur portable Bluetooth avec le hub Logitech sans fil

McAfee Security-as-a-Service

NAS 106 Utiliser le NAS avec Microsoft Windows

Gestion des licences Mia-Studio Manuel de l'utilisateur. - Procédure d'installation -

Spécifications système. Démarrage de l application CertiBru-Res. Premier accès à l application à partir de cet ordinateur

SERVICE CONTACT INSTANTANÉ GUIDE D UTILISATEUR

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Guide de démarrage

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

Hébergement et configuration de services WCF. Version 1.0

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Terminal Server RemoteAPP pour Windows Server 2008

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

But de cette présentation

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

FANTEC DB-229US Manuel de l'utilisateur

Initiation maintenir son ordinateur en forme

Transcription:

IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances et compteurs L'analyseur de performances de Windows (Démarrer -> Outils d administration -> Performances sous Windows XP) prend en charge l'analyse détaillée de l'utilisation des ressources du système d'exploitation. Une application VC++ avec une ressource à surveiller Développons une application utilisant une certaine ressource dont son activité peut être quantifiée par un compteur (par exemple un interrupteur ON/OFF, un canal FIFO avec des caractères) et créons une application mesurant l utilisation de cette ressource : nous exploiterons l analyseur de performance de Windows pour tester notre application. Notre application devra gérer une instance de compteur de performances : elle incrémentera ou décrémentera les valeurs d un compteur personnalisé (les compteurs non personnalisés présents sur une machine n autorisent qu un accès en lecture seule à leurs informations). Utiliser l explorateur de serveur pour accéder à la liste des compteurs sur de votre machine. Pour créer de nouveaux compteurs sur votre machine, utiliser le nœud compteurs de performance.

Pour un nouveau compteur personnalisé, il faut créer une nouvelle catégorie de compteurs de performance. Pour cela, Bouton Droit -> Nouvelle catégorie. Il suffit ensuite de renseigner les champs «Nom» et «description» de la catégorie depuis la boite de dialogue «Générateur de compteurs de performances», nous allons ajouter un nouveau compteur de performance à la machine locale.

Après avoir renseigné les informations sur le nouveau compteur, il ne reste plus qu à valider l opération et notre nouveau compteur apparaît dans la catégorie correspondante dans le nœud «compteurs de performances» de notre machine locale. Créons maintenant notre Application Windows Form (Menu Fichier/nouveau projet/projet Visual C++/.NET : choisir "application Windows Forms") possédant 2 boutons Augmenter et Diminuer (dans notre cas les noms et le texte sont respectivement «btnaugmenter», «Augmenter» et «btndiminuer», «Diminuer».

Nous allons maintenant associer à ces boutons les fonctions d incrémentation et de décrémentation de notre compteur. La première chose à faire consiste à sélectionner le nouveau compteur créer dans notre nouvelle catégorie et à glisser déposer notre compteur dans la forme principale de notre application. Cela aura pour effet de rajouter un composant «non visuelle» appelé «performancecounter1» dans la barre des composants de VS.NET. Pour être sûr de pouvoir modifier les valeurs de notre compteur, nous allons changer la propriété «ReadOnly» de notre nouvel objet en la positionnant à «False». Il est question maintenant d incrémenter ou de décrémenter notre compteur en gérant les évènement Click des boutons «Augmenter» et «Diminuer». Pour cela, il suffit de créer les gestionnaires de l évènement «Click» de chaque bouton en double-cliquant sur ses boutons

dans le Designer. Une fois cela fait, il suffit ensuite d appeler les méthodes «Increment» et «Decrement» de la classe «PerformanceCounter». Voici le code correspondant : Il est désormais possible d utiliser le «moniteur de performance» de Windows (Démarrer - > Outils d administration -> Performances sous Windows XP) pour effecteur les tests de notre application et utiliser notre nouveau compteur. Nous allons ajouter notre nouveau compteur personnalisé dans le moniteur système en utilisant le bouton + ( ) dans la barre d outils du moniteur système. En tant que «objet de performance», ajoutons la catégorie précédemment créée (CompteurPersonnel) et choisissons notre compteur dans cette catégorie (ici CounterName).

Il suffit ensuite de cliquer sur le bouton «Ajouter» pour ajouter notre nouveau compteur. Maintenant, exécutons notre application :cliquons sur chacun des boutons «Augmenter» ou «Diminuer» pour se rendre compte que cela fait varier les relevés instantanés du moniteur de performance sur notre compteur. Partie 2 : Introduction au.net Remoting et compteurs Dans cette partie, vous mettrez en œuvre votre première application en.net remoting. Les sources sont disponibles sur : http://dept-info.labri.fr/~felix/annee2005-06/licencepro/remoting/

Lancer Visual Studio.NET 2003 et créez une nouvelle solution "PremierRemoting". Nos clients et serveurs seront des applications consoles que nous programmerons en C# : 1. Ajoutez dans votre solution une nouvelle Application Console que vous nommerez "Serveur". 2. Ajoutez une nouvelle Application Console que vous nommerez "Client". 3. Ajoutez enfin un nouveau projet de type "Class library" que vous nommerez "IRemote". Il s'agit là de notre interface. Objet Compteur Côté serveur Nous allons créer un Objet "Compteur" comme ceci : public class Compteur public int iid; public string strnom; public double dniveau; public void Augmenter(double dvaleur) this.dniveau+=dvaleur; Console.WriteLine(" - Compteur Augmenté, nouveau niveau : " + this.dniveau.tostring() + " -"); Une fonction permet d'augmenter la valeur du compteur. Ajouter ensuite cette fonction dans l'interface afin que le client puisse l'utiliser. public interface ICompteur void Augmenter(double dvaleur); Le serveur. Ajouter au projet IRemote une référence à la dll.net qui s'appelle System.Runtime.Remoting. Cette dll contient toutes les classes nécessaires au remoting. Création de l'objet qui sera servi : on crée une classe que l'on appelle CompteurManager. Cette classe implémente l'interface que l'on a définie plus haut. Elle doit donc implémenter les méthodes qui sont listées dans l'interface. public class CompteurManager:MarshalByRefObject,IRemote.ICompteur DemarreServeur myclass = new DemarreServeur(); //C'est cette classe que l'on distribue sur le reseau public override object InitializeLifetimeService() //Durée de vie de l'objet : pour "toujours" return null; public void Augmenter(double dmontant) myclass.moncompteur.augmenter(dmontant); Créons une classe RemotingServer, avec une méthode qui "démarre" le serveur. Il faut spécifier plusieurs choses dans cette méthode :

le canal de transmission, et quel protocole il utilise (HTTP, TCP etc...) le port du canal (éviter certains ports ) le mode de transmission des données (il y a deux choix possible : Singleton ou SingleCall) Singleton : Il n'y a uniquement qu'une seule instance de l'objet au même moment. On peut leur associer une durée de vie (quelques secondes ou éternel). Apres la durée de vie écoulée, le serveur recrée une instance de l'objet à nouveau et la servira aux clients jusqu'à la fin de durée de vie. SingleCall : une nouvelle instance de l'objet sera crée à chaque appel et détruite juste après. using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; public class RemotingServer public void Start() int canal; //Ouvre un canal en mode TCP sur le port '1236' canal=1236; TcpChannel chnl_1 = new TcpChannel(canal); ChannelServices.RegisterChannel(chnl_1); //Publier notre objet CompteurManager RemotingConfiguration.RegisterWellKnownServiceType(typeof(CompteurManager), "CompteurManager", WellKnownObjectMode.Singleton); On spécifie dans la méthode RegisterWellKnownServiceType que c'est la classe CompteurManager que l'on sert. Si vous voulez que votre objet dure pour "toujours", il vous suffit de surcharger une méthode qui s'appelle InitializeLifetimeService. En retournant "null" dans cette méthode, la durée de vie est ainsi infinie. Mais vous pouvez aussi mettre une durée spécifique. Finalement, écrivons un code qui démarre le serveur et attend des instructions dans un nouveau module : class DemarreServeur public Compteur moncompteur = new Compteur(); [STAThread] static void Main(string[] args) Serveur.RemotingServer myserver = new Serveur.RemotingServer(); try Console.WriteLine(" Serveur : Demarrage..."); myserver.start(); Console.WriteLine("Serveur démarré..."); Console.ReadLine(); catch (Exception ex) Console.WriteLine("Serveur : Erreur d'initialisation!!! " + ex.message);

Dans le sub main, appelez la méthode RemotingServer.Start. Compiler et exécuter le serveur. Le client qui utilise le service : Ouvrez le même canal que le serveur, et prenez une référence à l'objet servi. Ensuite il vous suffit d'appeler les méthodes par cette référence : using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace Client class Client /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) try //Enregistrer le canal TCP port 1234 TcpChannel chnl = new TcpChannel(); ChannelServices.RegisterChannel(chnl); //Prendre la référence sur le serveur (tcp://nommachine:port/compteurmanager) IRemote.ICompteur CompteurDistant = (IRemote.ICompteur)Activator. GetObject(typeof(IRemote.ICompteur), "tcp://localhost:1236/compteurmanager"); //Verifier que la reférence au serveur a été acquise if (CompteurDistant == null) Console.WriteLine("Référence non acquise"); else Console.WriteLine("Référence au serveur acquise "); //On peut à présent appeler les méthodes CompteurDistant CompteurDistant.Augmenter(1); CompteurDistant.Augmenter(2); CompteurDistant.Augmenter(3); //Attendre les instructions sur la console... Console.ReadLine(); catch (Exception ex) Console.WriteLine("ERREUR :" + ex.message); Lancer le client et vérifier que : le serveur crée une fois l'instance Compteur, les appels aux méthodes ont été reçus par l objet Compteur (sur la console du serveur), si vous arrêtez le client en appuyant sur une touche et le relancez sans arrêter le serveur, vous verrez qu'il s'agit du même objet Compteur sur le serveur qui est utilisé depuis le début et qui continue d'être augmenté (effet du mode Singleton),

Exercice : Tester votre application avec client et serveur sur machines séparées. Rajouter et utiliser des méthodes pour : 1. diminuer la valeur du compteur, 2. afficher la valeur du compteur chez le client, Ecrire la classique application Hello World en version Distribuée.