.net Remoting Chapitre 1 : Introduction au.net Remoting



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

.NET remoting. Plan. Principes de.net Remoting

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

18 TCP Les protocoles de domaines d applications

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

Guide d installation de ArcGIS server 9.3.1

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Configuration de base de Jana server2. Sommaire

L3 informatique TP n o 2 : Les applications réseau

Java Naming and Directory Interface

Remote Method Invocation (RMI)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

FAIRE UN PAIEMENT TIPI

Préconisations Techniques & Installation de Gestimum ERP

Terminal Server RemoteAPP pour Windows Server 2008

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

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

25 septembre Migration des accès au Registre national en protocole X.25 vers le protocole TCP/IP, pour les utilisateurs du Registre national

TP1 : Initiation à Java et Eclipse

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Introduction aux «Services Web»

VoIP et "NAT" VoIP et "NAT" 1/ La Traduction d'adresse réseau. 1/ La traduction d'adresse réseau. 1/ La traduction d'adresse réseau

Les données (voix, vidéo, etc.) sont échangées à l aide du protocole RTP (Real-time Transport Protocol).

Cette option est aussi disponible sur les clients Windows 7 sous la forme d un cache réparti entre les différentes machines.

Atelier Le gestionnaire de fichier

Installation et configuration de base de l active Directory

SIP. Sommaire. Internet Multimédia

avast! EP: Installer avast! Small Office Administration

Network musical jammin

Remote Method Invocation en Java (RMI)

Système Principal (hôte) 2008 Enterprise x64

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

WEB APPLICATION FIREWALL AVEC APACHE ET MOD_SECURITY

LAB : Schéma. Compagnie C / /24 NETASQ

4. SERVICES WEB REST 46

Intergiciel - concepts de base

Compte Rendu d intégration d application

Projet Active Object

WINDOWS SHAREPOINT SERVICES 2007

INFO-F-404 : Techniques avancées de systèmes d exploitation

CAHIER DES CHARGES D IMPLANTATION

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

SIP A. Aoun - La Visioconférence SIP - 1

Fiche Technique Windows Azure

Le modèle client-serveur

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

INSTALLATION DES SERVICES DE DOMAINE ACTIVE DIRECTORY Windows Server 2008 R2

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Prérequis. Résolution des problèmes WMI. Date 03/30/2010 Version 1.0 Référence 001 Auteur Antoine CRUE

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Guide d'installation. Release Management pour Visual Studio 2013

IPS-Firewalls NETASQ SPNEGO

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Groupe Eyrolles, 2004 ISBN :

Informations de sécurité TeamViewer

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

JOnAS Day 5.1. Clustering

Reporting Services - Administration

RMI le langage Java XII-1 JMF

Menu Vocal Interactif (MVI) GEN-IP SOLUTIONS

Le Printemps rajeunit ses listes de mariage en magasin et sur Internet avec Printemps à Deux

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Architectures web/bases de données

Configuration du driver SIP dans ALERT. V2

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Configuration du nouveau Bureau Virtuel (BV) collaboratif de Lyon I

Logiciel de connexion sécurisée. M2Me_Secure. NOTICE D'UTILISATION Document référence :

Fiche technique RDS 2012

Comment se connecter au dossier partagé?

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Migration NT4 vers Windows 2003 Server

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Solutions informatiques (SI) Semestre 1

Le langage C. Séance n 4

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Editer un script de configuration automatique du proxy

Description de la maquette fonctionnelle. Nombre de pages :

Traduction des Langages : Le Compilateur Micro Java

VoIP - TPs Etude et implémentation

Mise en œuvre des serveurs d application

Guide de configuration de la Voix sur IP

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Pré-requis installation

Architecture BIGBLUEBUTTON Groupe BigBlueButton - Sénégal

Remote Method Invocation Les classes implémentant Serializable

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

TD/TP 1 Introduction au SDK d Android

Module.NET 3 Les Assemblys.NET

ALOHA LOAD BALANCER METHODE DE CONTROLE DE VITALITE

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Réseau : Interconnexion de réseaux, routage et application de règles de filtrage.

Le routeur de la Freebox explications et configuration

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Transcription:

.net Remoting Chapitre 1 : Introduction au.net Remoting Maxime LAMURE I : Présentation... 2 II : Principe de base... 3 1.1 Introduction... 3 1.2 Architecture :... 4 III : Outils et compilateurs... 7 IV : Méthodes type de développement... 8 1 : Au niveau Serveur... 8 2: Au niveau Client... 8 V: Exemple simple: Hello World... 9 5.1 : Interface... 10 5.2 : Serveur... 11 5.3 : Client... 13 5.4 : Compilation... 13 5.5 : Exécution... 14 5.6 : Amusons nous et observons... 14 VI : Conclusion... 15 Annexe A : Liens... 16

I : Présentation Le but de cet article est de vous exposer ce qu est le.net Remoting le plus simplement possible. Pour ce faire, je ne vais pas détailler tous les aspects techniques, mais vous montrer un premier mécanisme d application en expliquant les bases nécessaires. A travers ce premier article, je vais expliquer les différentes notions nécessaires pour construire une application distribuée. Je présenterai un exemple simple en détaillant les différentes étapes. Des articles complémentaires insisteront plus sur les détails techniques, ainsi que les différentes façons de monter une application distribuée avec le.net Remoting. 2

II : Principe de base 1.1 Introduction La technologie.net Remoting (que j appellerai Remoting par la suite) est la dernière technologie de Microsoft permettant de faire de la programmation repartie en utilisant la plateforme.net. On parle de programmation répartie lorsqu on utilise plusieurs machines pour exécuter un processus. En d autres termes, une application qui tourne sur une machine A peut lancer un processus sur une machine B distante et récupérer le résultat. Domaine d application sur une Machine A Domaine d application sur une Machine B Pile d exécution Pile d exécution On appelle une méthode sur un objet. On récupère le résultat. On effectue le traitement d une méthode à la demande d un client. On retourne le résultat On a économisé le coût du traitement au détriment du serveur. On a effectué le traitement pour le client. L intérêt est de développer les traitements sur un serveur accessible par des applications clientes qui peuvent l interroger et récupérer les résultats. Les applications clientes sont donc plus légères. De plus, la technologie.net permet l interopérabilité entre les langages et les plateformes. Les applications clientes peuvent donc être développées dans des langages différents et tourner sur des systèmes différents. 3

1.2 Architecture : A : Fonctionnement Client Serveur Message Message Formateur Formateur Message Formaté Message Formaté Canal Canal Requête Réponse Les applications communiquent entre elles en s envoyant des messages. Pour ce faire, ces derniers sont codés, formatés afin qu ils puissent être envoyés sur le canal et transmis entre applications. Ce codage est assuré par des formateurs. Il peut être binaire (TCP), textuel avec SOAP-XML (HTTP) ou bien défini par le développeur. (cf article 2 pour plus de précision) B : Les proxies Les proxies sont les représentants locaux des objets distants. Quand on veut communiquer avec un objet distant, on créé un proxy qui sera la représentation locale de cet objet. Pour appeler les méthodes de l objet distant, il suffit de récupérer le proxy et d appeler les méthodes sur ce dernier. On peut donc dire qu au niveau client, une fois le proxy créé, on l utilise comme un objet local, sans se soucier du codage des messages. 4

C : Le rôle de l interface La question qu on peut se poser est comment une application cliente indépendante peut connaître le type d objet qu elle va recevoir. En d autres termes, lorsqu on demande une référence, il nous faut donner son type pour la récupérer. Pour palier à ce problème, le.net Remoting utilise les interfaces qui seront un moyen pour le serveur de publier le type de l objet ainsi que la signature de ses méthodes distantes. Le serveur devra donc implémenter cette interface. Un client peut connaître les méthodes de l objet distant grâce à cette interface mais aussi de récupérer une référence dans une variable de ce type (Voir l exemple chapitre V.2.3). Quand un client récupérera une référence, il pourra accéder aux méthodes dont la signature est donnée dans l interface et uniquement celles là. En effet, le serveur pourra développer d autres méthodes non accessibles à distance et donc, qui ne figureront pas dans l interface. D : Mode de passage des objets En.net, les objets sont passés par référence et les types primitifs (int, short ) par valeur. Mais cela est valable lorsque nous sommes dans le même domaine d application. En effet, la référence d un objet dans un domaine d application A n a plus de valeur dans le domaine d application B. Pour palier à cela, lorsque qu on passe des objets en paramètre ou en résultat d une fonction d un objet distant, le passage se fait alors par valeur. Pour ce faire, ils doivent implémenter l interface ISerializable. Enfin, si on veut qu un objet soit un objet distant, il doit dériver de MarshalByRefObject. E : Type d appels Lorsqu un client fait des appels sur un objet distant, il y a forcément la création d une instance de cet objet au niveau serveur. Nous allons voir les différentes solutions que nous avons à ce niveau. (voir V.5.6) Mode Singleton : Tous les messages entrant utilisent le même objet. En d autres termes, toutes les applications clientes qui font appel à un objet remote, utilisent la même instance de cet objet. On peut donc modifier l état de l objet distant par un appel et cet état sera conservé pour les appels suivants. Mode SingleCall : Chaque message entrant utilise une nouvelle instance de l objet. A chaque client est associé une nouvelle instance coté serveur. 5

F : Le Service de nommage En.net, pour qu un client récupère une référence sur un objet distant, il doit communiquer directement avec le serveur à partir d un port et d une URL. Nous verrons dans les prochains articles, qu il est possible de créer un service de nommage qui joue le rôle d un annuaire de références d objets distants. G : Le ramasse miette Les objets distants ont une durée de vie. En effet, si un objet n est plus utilisé, on peut dire que personne ne pointe sur lui et qu il est déréférencé. Au niveau serveur, il existe un mécanisme qui inspecte le domaine d application et qui supprime toutes les instances non référencées. On appelle cela le ramasse miette. Lorsqu un objet est créé, on lui associe une durée de vie. Quand elle atteint 0, cette instance est susceptible d être supprimée par le ramasse miette. Pour palier à cela, nous avons la possibilité d augmenter la durée de vie d un objet : Dès qu on utilise cet objet, sa durée de vie est initialisée à la valeur maximale. On peut directement augmenter la durée de vie d une instance à l aide de fonctions spécifiques. Enfin, on peut modifier les propriétés des ramasses miettes pour contrôler la durée de vie des objets. 6

III : Outils et compilateurs Pour développer des applications distribuées, il ne faut rien de plus que pour développer une application normale. Néanmoins, il est plus facile et donc plus productif d utiliser des IDE. Malgré son prix, je conseille fortement Visual Studio.net qui me parait être l IDE le plus complet à ce niveau. Sinon il existe un IDE gratuit, C# Builder, qui est très bien fait. Enfin, vous pouvez toujours utiliser un éditeur de texte pour taper votre code.net et compiler avec le compilateur (gratuit) de Microsoft fournit avec le framework. 7

IV : Méthodes type de développement Maintenant que nous avons les bases, nous allons voir les différentes fonctions, librairies que nous fourni.net pour nous aider à construire une application distribuée. 1 : Au niveau Serveur Tous d abord, il nous faut les trois packages suivant. using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp ; Ils vont nous permettre de nous fournir les librairies pour les actions suivantes: Ouverture du canal selon un protocole et sur un port TcpChannel chan = new TcpChannel(8085); Enregistrement du canal ouvert précédemment ChannelServices.RegisterChannel(chan); Publication de son type avec l URI et le mode pour y accéder RemotingConfiguration.RegisterWellKnownServiceType(typeof( HelloServer), "HelloServer", WellKnownObjectMode.SingleCall); 2: Au niveau Client Ici aussi, on a besoin des packages suivants : using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; Ces librairies vont nous permettre d accéder à un objet distant On ouvre un canal récepteur en fonction d un protocole TcpChannel chan = new TcpChannel(); On enregistre ce canal ChannelServices.RegisterChannel(chan); On récupère l objet à partir de l URI et de l interface (pour le type d objet) IRemote.Expose obj = (IRemote.Expose)Activator.GetObject(typeof(IRemote.Expose), "tcp://localhost:8085/helloserver"); 8

V: Exemple simple: Hello World Fini la théorie et passons à la pratique. Pour bien comprendre le mécanisme, je vais vous montrer le code d une méthode d un objet distant renvoyant juste une chaîne de caractères. Je vais aussi vous montrer le code client pour accéder à cet objet et appeler cette méthode. Voici une idée de l arborescence générale : 9

5.1 : Interface 10

5.2 : Serveur 11

12

5.3 : Client 5.4 : Compilation Pour l interface : csc /target:library Expose.cs Pour le client: csc /reference:c:\chemin_interface\bin\debug\iremote.dll Client.cs Pour le serveur: csc /reference :c:\chemin_interface\bin\debug\iremote.dll Serveur.cs 13

5.5 : Exécution Au niveau client comme au niveau serveur, il suffit de lancer l exécutable généré précédemment (le serveur avant le client ;-) ). 5.6 : Amusons nous et observons Modifions quelques options pour vérifier la théorie, notamment le mode de configuration de l objet distant (single call, singleton) : Mode Single Call : On lance le serveur, puis plusieurs clients. Quand on quitte le serveur voila ce qui s affiche : Mode Singleton : Même chose, mais le serveur réagit différemment : 14

VI : Conclusion Le but de cet article est de vous montrer qu il n est pas difficile de monter une architecture distribuée. Certes, il faut acquérir quelques notions supplémentaires, et même si je n ai expliqué que le minimum à travers cet article, j espère que vous avez perçu le mécanisme de ce type de développement. Une fois ce mécanisme bien assimilé, je vous conseille de lire les prochains articles qui vous montreront la puissance du.net Remoting. 15

Annexe A : Liens http://alain.vizzini.free.fr/essi2reso2.html http://www.dotnetguru.org/articles/remotingrmi.htm http://www.dotnetguru.org/articles/reflexion/remotingdrawbacks/remotingdrawbacks.html http://www.microsoft.com/france/outils/imprime/info.asp?mar=/france/msdn/technologies/tec hnos/framework/info/netframremotingintro.html&css=& http://www.microsoft.com/france/outils/imprime/info.asp?mar=/france/msdn/technologies/tec hnos/framework/info/netframremoting.html&css=& 16