.NET remoting. Plan. Principes de.net Remoting



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

RMI le langage Java XII-1 JMF

Architectures n-tiers Intergiciels à objets et services web

Remote Method Invocation (RMI)

Intergiciel - concepts de base

Programmation par composants (1/3) Programmation par composants (2/3)

Accès optiques : la nouvelle montée en débit

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

dénombrement, loi binomiale

NFE107 Urbanisation et architecture des systèmes d information. Juin «La virtualisation» CNAM Lille. Auditeur BAULE.L 1

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Environnements de Développement

Introduction aux «Services Web»

Architectures web/bases de données

Aménagements technologiques

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Module : réponse d un système linéaire

Un modèle de composition automatique et distribuée de services web par planification

Projet gestion d'objets dupliqués

Introduction aux intergiciels

Procès - Verbal du Conseil Municipal Du lundi 15 décembre 2014

Java - RMI Remote Method Invocation. Java - RMI

Héritage presque multiple en Java (1/2)

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

Chapitre 2 Rôles et fonctionnalités

NFP111 Systèmes et Applications Réparties

JOnAS Day 5.1. Clustering

Patrons de Conception (Design Patterns)

prix par consommateur identiques différents prix par identiques classique 3 unité différents 2 1

Architectures d'intégration de données

Messagerie asynchrone et Services Web

Conception de serveurs d'applications ouverts

CAHIER DES CHARGES D IMPLANTATION

OPC Factory Server- Réglage des paramètres de communication

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Java Naming and Directory Interface

Introduction aux. services web 2 / 2

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

Guide d'installation. Release Management pour Visual Studio 2013

Définition des Webservices Ordre de paiement par . Version 1.0

Etude critique de mécanismes de sécurité pour l architecture Jini

Plateforme PAYZEN. Définition de Web-services

CORBA. (Common Request Broker Architecture)

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

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

Conception des systèmes répartis

Des familles de deux enfants

Application web de gestion de comptes en banques

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

Manuel de l'utilisateur

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

L information sera transmise selon des signaux de nature et de fréquences différentes (sons, ultrasons, électromagnétiques, électriques).

Authentifications à W4 Engine en.net (SSO)

Le cadre des Web Services Partie 1 : Introduction

Sous le feu des questions

molis result portal Description fonctionnelle La structure système Configuration système requise Architecture du système

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Installation 4D. Configuration requise Installation et activation

CS REMOTE CARE - WEBDAV

Découvrez les bâtiments* modulaires démontables

Les Architectures Orientées Services (SOA)

Mettre en place un accès sécurisé à travers Internet

Bois. P.21 Bois-béton à Paris. Carrefour du Bois. Saturateurs. Usinage fenêtres. Bardages P.25 P.34 P.31 P.37. La revue de l activité Bois en France

Projet Active Object

CA Network Flow Analysis

Introduction à la plateforme J2EE

1 Introduction. 2 Les contrats. 3 Les bindings. 4 Hébergement. 5 Consommation. 6 WCF et remoting. 7 Sessions, instantiations et concurrence

Installation 4D. Configuration requise Installation et activation

K?ellaWeb Saisie des absences, retards et sanctions APLON en mode Web

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

18 TCP Les protocoles de domaines d applications

Architectures Web Services RESTful

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Software Engineering and Middleware A Roadmap

Architecture et Extensions d ArcGIS Server

Urbanisation et architecture des systèmes d information

Guide Utilisateur Transnet

Découvrez notre solution Alternative Citrix / TSE

Programmation répartie RPC & RMI

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

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

Systèmes d'informations historique et mutations

S2I 1. quartz circuit de commande. Figure 1. Engrenage

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Cours de Génie Logiciel

Urbanisation des Systèmes d'information

GEI 465 : Systèmes répartis

Java DataBaseConnectivity

PREREQUIS TECHNIQUES ETAFI DECISIV. PRT ETAFI Decisiv 12/2014 Page 1 sur 16

Analyse des techniques et des standards pour l interopérabilité entre plateformes

Serveur d'archivage 2007 Installation et utilisation de la BD exist

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Description de la formation

Composants Logiciels. Le modèle de composant de CORBA. Plan

Mise en œuvre d une Gateway HTTP/HTTPS avec un serveur de Présentation en DMZ

Chapitre 1 Windows Server

Configurer l adressage des serveurs et des clients

Installation d'un serveur DHCP sous Windows 2000 Serveur

Transcription:

Plan.NET remoting Clémentine Nebut LIRMM / Université de Montellier 2 de.net Remoting côté serveur côté client.net Remoting en ratique Les canaux de communication L'activation L'invocation Les aramètres Pour aller lus loin Conclusion Introduction Princie de.net remoting Communication client/serveur entre objets.net distants Proche de Java RMI Successeur de DCOM htt://msdn2.microsoft.com/fr fr/library/2e7z38xb(vs.80).asx Princie de.net remoting Au niveau des entités... Entités qui interagissent : Client Serveur Proxy (généré dynamiquement) L'interface de l'objet serveur artagée ar le client et le serveur 3 rogrammes : client.exe serveur.exe interface.dll Client Proxy Canal de communication Côté serveur Installation des objets serveurs Serveur

Au niveau des rogrammes... Côté serveur Client.exe Interface.dll Canal de communication Côté serveur Serveur.exe Interface.dll Définition de l'interface de l'objet distribué Définition de l'objet distribué hérite de MarshalByRefObject (ou est sérialisable) imlémente l'interface Définition du serveur création du canal de communication enregistrement du canal enregistrement du service Référence à l interface de l objet distribué Récuération d une référence d objet distant Puis utilisation de la référence.net remoting en ratique Les canaux de communication Activation d un objet distribué Tyes d invocations Le assage de aramètres Pour aller lus loin Durée de vie des objets ubliés Ramasse miettes Utilisation d un fichier de configuration Les canaux de communication 2 tyes de canaux «de base» TCP TcChannel format de message binaire transort ar socket HTTP HttChannel format de message SOAP (Simle Object Access Protocol) transort ar htt On eut créer de nouveaux canaux et/ou formats IIOP (ex. IIOP.NET htt://iio net.sourceforge.net) Les canaux de communication Définition du numéro de ort Enregistrement du canal de communication //numéro de ort int numort=8085; // on définit le canal de communication (ici : TCP) TcChannel canal=new TcChannel(numort); // on l'enregistre ChannelServices.RegisterChannel(canal, true); indique si le canal est sécurisé ou as, true valable our htt et TCP

Activation d un objet distribué Quand un objet est ublié côté serveur : son roxy est mis en lace quand un client fait un new() ou un Activator.getObject( ) MAIS il n est instancié que lors du remier ael de méthode Activation ar le serveur mode singleton = une seule instance de serveur artagée ar tous les clients mode singlecall = une instance ar ael de méthode Activation ar le client = une instance ar client Activation mode singleton Publication du service : RemotingConfiguration.RegisterWellKnownServiceTye( tyeof(maclasse), // le tye de l objet distribué "nomservice", // le nom que l on donne au service WellKnownObjectMode.Singleton);//le mode, ici : singleton Ael à l objet distribué : RemotingConfiguration.RegisterWellKnownClientTye( tyeof(maclasse),"tc://localhost:8085/nomservice"); MaClasse roxy = new MaClasse(); Si on a utilisé une interface (si MaClasse est une interface) : MaClasse roxy = (MaClasse)Activator.GetObject( tyeof(maclasse),"tc://localhost:8085/nomservice"); Activation mode singlecall Publication du service : RemotingConfiguration.RegisterWellKnownServiceTye( tyeof(maclasse), // le tye de l objet distribué "nomservice", // le nom que l on donne au service WellKnownObjectMode.Singlecall); //mode singlecall Ael à l objet distribué : RemotingConfiguration.RegisterWellKnownClientTye( tyeof(maclasse),"tc://localhost:8085/nomservice"); MaClasse roxy = new MaClasse(); Si on a utilisé une interface (si MaClasse est une interface) : MaClasse roxy = (MaClasse)Activator.GetObject( tyeof(maclasse),"tc://localhost:8085/nomservice"); Activation côté client L instance est créée dès le new du client Publication du service : RemotingConfiguration.RegisterActivatedServiceTye( tyeof(maclasse)); // le tye de l objet distribué Ael à l objet distribué : RemotingConfiguration.RegisterActivatedClientTye( tyeof(maclasse),"tc://localhost:8085"); MaClasse roxy = new MaClasse(); Si on a utilisé une interface : object[] url = new UrlAttribute("tc://localhost:8085 ")}; MaClasse roxy = (MaClasse)Activator.CreateInstance( tyeof(maclasse),null,url); Portée de la ublication.net Remoting exose les objets à d'autres domaines d'a. comme s'ils étaient locaux sauf : Membres statiques et méthodes rivées. Chams d'instance et accesseurs. Vérif au moment de l'exécution : si objet as un roxy, accès direct au cham ; sinon, le roxy fournit les accesseurs à l'aelant. Délégués. Marshalés ar valeur. L'objet au sein du délégué eut corresondre à n'imorte quel tye d'objet accessible à distance. Excetion : un délégué de méthode d'interface ne eut as être distant. Tyes d invocations Synchrone cas ar défaut Semi synchrone (ou asynchrone avec retour) une méthode our déclencher l ael : BeginInvoke une méthode our récuérer le résultat : EndInvoke utilisation de délégués Asynchrone (ou oneway) côté serveur : attribut [oneway] sur la méthode, as de tye de retour côté client : BeginInvoke suivi de EndInvoke

Invocation semi synchrone Exemle issu de la doc msdn une classe service un serveur un client qui utilise des aels semi synchrones Par valeur Par référence Le assage de aramètres Tyes de base : ar valeur Objets : ar valeur ou ar référence Passage de aramètre ar référence L objet transmis doit être d un tye héritant de MarshalByRefObject MarshalByRefObject :Client :Serveur Param :Param Passage de aramètre ar valeur L objet transmis doit être sérialisable soit imlémenter ISerializable soit attribut [Serializable] :Client :Param :Serveur :Param Param [Serializable] Pour aller lus loin... Durée de vie des objets ubliés Ramasse miettes Utilisation d un fichier de configuration Durée de vie des objets ubliés Si objet activé côté serveur en singlecall durée de vie as sécifiable car 1 nouvelle instance à chaque ael Les objets activés côté client et côté serveur en mode Singleton ossèdent un bail (lease) Par défaut : bail de 5 minutes, renouvelé de 2 minutes à chaque ael de méthode Possibilité de ersonnaliser le bail

Le bail Proriétés : InitLeaseTime durée de vie entre activation et 1er ael de méthode accès en lecture et en écriture RenewOnCallTime durée du renouvellement de bail accès en lecture et en écriture CurrentLeaseTime durée restante du bail accès en lecture seule Personnalisation des baux Possible AVANT l activation de l objet (i.e. quand lease.currentstate==leasestate.initial) En surchargeant la méthode InitializeLifetimeService de l objet ublié Si on veut une durée de vie illimitée, InitializeLifetimeService doit retourner null Le ramasse miettes Quand libérer la mémoire d un objet distribué, et donc otentiellement utilisé ar des clients? Utilisation des baux quand le bail d un objet exire : le gestionnaire de bail interroge les sonsors (clients) un sonsor qui ne réond as au bout d un certain tems (SonsorshiTimeout) est surimé s il n y a lus de sonsors, le bail exire effectivement, et l objet distribué est détruit Utilisation d un fichier de configuration Configuration de la connexion dans un fichier XML lutôt que dans le code RemotingConfiguration.Configure("Config.xml"); <configuration> <system.runtime.remoting> <alication> <service> <wellknown mode="singleton" tye="tyeobj, AssemblyName" objecturi= "URI" /> </service> <channels> <channel ref="tc" ort="8085" /> </channels> </alication> </system.runtime.remoting> </configuration>.net remoting et RMI Points communs distribution d'objets assage ar valeur et ar référence Différences ublication des objets Interface requise vs facultative... La gestion des roxies Rael : roxy = rerésentation locale d un objet distant En java Proxies générés avec l outil rmic ou dynamiquement En.NET Proxies générés dynamiquement avec un new Nécessité d avoir fourni des infos de localisation de l objet distant Nécessité d avoir déloyé chez le client la totalité de l imlémentation de l objet distribué Donc si on modifie le serveur, il faut modifier tous les clients Sauf si on a utilisé une interface

Le service de nommage En java : service de nommage résent Serveur de nom, enregistrement des associations noms logiques / localisation En.net : rien! Si le serveur change de nom ou dadresse, il faut changer tous les clients! Pourquoi? Raisons historiques : COM s auyait sur d autres systèmes our le nommage Microsoft refuse d imoser au client un service uniquement dédié au nommage La sécurité En java Intégrée au middleware de manière native En.NET Rien, de manière native Possible avec les serviced comonents, mais se base sur COM+ (cf cours sur les serviced comonents) System.EnterriseServices.SecurityCallContext Possible si utilisation d IIS IIS = Internet Information Server = serveur web roosé ar Microsoft, concurrent d Aache Les erformances Conclusion htt://www.dotnetguru.org/articles/comaratifs/benchj2eedotnet/j2eevsnetbench.html Pas de serveur de noms comme avec RMI «.NET en moyenne 2 à 3 fois + raide que J2EE!» Génération dynamique de roxy Mais as our rmi vs remoting Invocation asynchrone ou semi synchrone Guerre sur la erformance entre J2EE et.net Activation ar le client Références htt://www.labodotnet.com/desktomodules/labodotnet.articles/contentfiles/d f/remoting.df Cours Lionel Seinturier Cours Didier Donsez