Fichiers de configuration.net Remoting



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

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Programme Compte bancaire (code)

.NET remoting. Plan. Principes de.net Remoting

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

Notions fondamentales du langage C# Version 1.0

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

Corrigé des exercices sur les références

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Projet de programmation (IK3) : TP n 1 Correction

Hébergement et configuration de services WCF. Version 1.0

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmer en JAVA. par Tama

.NET - Classe de Log

Premiers Pas en Programmation Objet : les Classes et les Objets

Module.NET 3 Les Assemblys.NET

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Package Java.util Classe générique

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

Déploiement et monitoring

Paginer les données côté serveur, mettre en cache côté client

WebParts. Version 1.0

Tutoriel d installation de Hibernate avec Eclipse

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

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

Un ordonnanceur stupide

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

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Sommaire. 2 LINQ to Objects

Auto-évaluation Programmation en Java

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

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

Java Licence Professionnelle CISII,

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

TP1 : Initiation à Java et Eclipse

Plateforme PAYZEN. Définition de Web-services

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Utilisation d objets : String et ArrayList

Programmation avec des objets : Cours 7. Menu du jour

Gestion distribuée (par sockets) de banque en Java

OpenPaaS Le réseau social d'entreprise

Dis papa, c est quoi un bus logiciel réparti?

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Alfstore workflow framework Spécification technique

Utilitaires méconnus de StrataFrame

Corrigés des premiers exercices sur les classes

Rapport de Mini-Projet en ArcGIS Engine

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014

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

RMI le langage Java XII-1 JMF

Développement XNA. pour la Xbox et le PC. Premiers pas en développement de jeu vidéo. Léonard Labat

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

as Architecture des Systèmes d Information

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

Création d objet imbriqué sous PowerShell.

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

Documentation CAS à destination des éditeurs

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

Editer un script de configuration automatique du proxy

Services Windows et Domaines d application

Rafraichissement conditionné d'une page en.net

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

7 Développement d une application de MapReduce

Introduction à ADO.NET

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction aux «Services Web»

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Arbres binaires de recherche

Tester ses applications

Programmation par les Objets en Java

Une introduction à Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Gestion du cache dans les applications ASP.NET

Desktop Intégration. Rémi Forax

Introduction au langage Java

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Master d Informatique Corrigé du partiel novembre 2010

Algorithmique & programmation

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Aspects techniques : guide d interfaçage SSO

Environnements de développement (intégrés)

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

Le framework contient deux éléments principaux : le Common Language Runtime et la bibliothèque de classes du.net Framework.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Cours 1: Java et les objets

Applet pour visualiser les variables «automate» notifiées

Programmation Orientée Objet

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

Java 1.5 : principales nouveautés

Spécifications techniques et fonctionnelles du multi-années pour les noms de domaine en.fr

Synchro et Threads Java TM

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Transcription:

Fichiers de configuration.net Remoting

2 Fichiers de configuration.net Remoting 29/07/09 Sommaire 1 Introduction... 3 2 Qu es ce qu un fichier de configuration?... 4 3 L intérieur du fichier... 5 3.1 Pour un modèle CAO... 5 3.2 Pour un modèle WKO... 7 4 Implémentation dans le code... 9 4.1 Dans le code serveur... 9 4.2 Dans le code client... 9 4.2.1 Code client CAO... 9 4.2.2 Code client WKO... 9 5 Durée de vie... 11 6 Exemple... 12 7 Conclusion... 16

3 Fichiers de configuration.net Remoting 29/07/09 1 Introduction Dans ce chapitre, nous allons nous pencher sur les fichiers de configuration. En effet dans la plupart de nos programmes, l adresse de nos serveurs, les protocoles des canaux ou le numéro du port sont définis à l intérieur du code. Ici nous allons voir une nouvelle méthode utilisant des fichiers de configuration.

4 Fichiers de configuration.net Remoting 29/07/09 2 Qu est ce qu un fichier de configuration? Le fichier de configuration du.net remoting se présente avec l extension.config. Souvent nommé App.config (par défaut), il s agit d un fichier contenant une architecture de balise précise permettant à notre programme de récupérer les informations. Le fichier de configuration contient : Des informations sur l application hôte. Le nom des objets. L URI des objets. Les canaux enregistrés. Des informations sur la durée de bail.

5 Fichiers de configuration.net Remoting 29/07/09 3 L intérieur du fichier L intérieur du fichier de configuration contient différentes balises : La balise d entête suivante : Cet entête est par défaut créée lors de la création d un fichier par Visual Studio 2008. Elle renseigne la version et l encodage effectués sur le fichier. La balise configuration est la racine du document ; ici le fait que la balise soit «configuration» montre qu elle servira à paramétrer certaines fonctions du.net Remoting. La balise system.runtime.remoting contient les paramètres qui seront pris en charge par la structure.net Remoting. On peut y retrouver entre autres, les canaux, le protocole 3.1 Pour un modèle CAO A chaque modèle d activation correspond une mise en forme du fichier de configuration. Pour le serveur lors d une activation côté client, on réalise un fichier le plus souvent similaire à celui-ci : <application name="operation"> Ce code peut remplacer celui-ci : RemotingConfiguration.ApplicationName = "Operation"; Ensuite on peut définir les paramètres tels que : Activation avec un code similaire à celui-ci :

6 Fichiers de configuration.net Remoting 29/07/09 <application name="operation"> <service> <activated type="serveur.serveuroperation, Serveur"/> </service> Remplaçant le code suivant : RemotingConfiguration.RegisterActivatedServiceType(typeof(ServeurOperatio n)); En effet les balises <service> référence tous les types de service tels que l activation. Le canal de transport : pour le configurer dans notre fichier il convient de saisir les lignes suivantes <channels> <channel ref="tcp" port="8000" /> </channels> Ici notre canal utilise le protocole TCP et le port 8085. Nous allons maintenant nous pencher sur le fichier de configuration client. Celui-ci est assez similaire. <client url="tcp://localhost:8000/operation"> <activated type=" ServeurInterface.IServeurOperation, ServeurInterface "/> </client> <channels> <channel ref="tcp" /> </channels> On note toutefois des différences notables : Le paramètre name n existe plus dans la balise application

7 Fichiers de configuration.net Remoting 29/07/09 Les balises service sont remplacées par les balises client, car ici on fait appel à un service. <client url="tcp://localhost:8000/operation"> <activated type=" ServeurInterface.Operation, ServeurOperation "/> </client> On note l apparition de l url qui correspond à l adresse réseau de l objet Dans le code client on ne spécifie le canal que par le protocole sur le client (le port étant contenu dans l url) <client url="tcp://localhost:8000/operation"> <activated type=" ServeurInterface.Operation, ServeurOperation "/> </client> <channels> <channel ref="tcp" /> </channels> 3.2 Pour un modèle WKO Les fichiers de configuration pour le mode d activation serveur sont légèrement différents du mode CAO. Par exemple le nom du service ne se trouve plus dans la balise application mais c est le service qui le contient. On voit apparaitre une balise <WellKnow> qui prend plusieurs paramètres dont le mode d activation SingleCall ou Singleton. objecturi contient le nom du service. Enfin les balises pour la programmation du canal restent inchangées.

8 Fichiers de configuration.net Remoting 29/07/09 <service> <wellknown type=" ServeurInterface.Operation, ServeurOperation " mode="singlecall" objecturi="operation" /> </service> <channels> <channel ref="tcp" port="8000" /> </channels> Dans le code client on retrouve là encore les balises <client> qui regroupent les services, dont le WKO représenté par la balise <wellknow>. Le reste du code est similaire à celui du CAO. <client> <wellknown type=" ServeurInterface.Operation, ServeurOperation " url="tcp://localhost:8000/operation" /> </client> <channels> <channel ref="tcp" /> </channels>

9 Fichiers de configuration.net Remoting 29/07/09 4 Implémentation dans le code 4.1 Dans le code serveur Pour utiliser le fichier de configuration dans notre code serveur et ainsi réduire celui-ci à un simple appel de fichier, on utilise la méthode suivante : RemotingConfiguration.Configure(string filename,bool ensuresecurity); VB.NET Dim filename As String Dim ensuresecurity As Boolean RemotingConfiguration.Configure(filename, ensuresecurity) Ainsi on intègre tous les paramètres de configuration contenus dans le fichier. Le string correspond au nom du fichier (et extension) et le booléen permet de définir si la sécurité est requise ou non. RemotingConfiguration.Configure("app.config",false); VB.NET RemotingConfiguration.Configure("app.config", False) Cette ligne remplace toute les lignes de création de canal et d activation que ce soit en CAO ou WKO. Seul le fichier de configuration sera différent comme vu précédemment. 4.2 Dans le code client Le code client quant à lui est différent entre les deux modes d activation. 4.2.1 Code client CAO Le code client pour le mode d activation CAO se caractérise par le chargement du fichier et des paramètres qu il contient et d un simple appel de service comme ceci : RemotingConfiguration.Configure("app.config",false); VB.NET RemotingConfiguration.Configure("app.config", False) Il suffit ensuite de faire appel au service comme vu dans le chapitre 2 (déclaration du service et appel de ces méthodes). 4.2.2 Code client WKO Le code client pour le mode d activation WKO est légèrement différent du code sans fichier. En effet dans le chapitre 2 on avait vu que le client WKO utilisait simplement cette ligne pour se connecter au service.

10 Fichiers de configuration.net Remoting 29/07/09 Interface.IServeurOperation Service = (Interface.IServeurOperation)Activator.GetObject( typeof(interface.iserveuroperation), "tcp://localhost:8000/serveuroperation"); VB.NET Dim Service As Interface.IServeurOperation = DirectCast(Activator.GetObject(GetType(Interface.IServeurOperation), "tcp://localhost:8000/serveuroperation"), Interface.IServeurOperation) Cette ligne regroupe en fait une multitude d informations telles que : Le type de l objet distribué L adresse de cet objet Et enfin une demande de connexion à cet objet. Mais avec le fichier de configuration, il est nécessaire de séparer la demande de connexion qui fera partie du code et les paramètres qui feront partie du fichier X ML. Ainsi on commence donc par ajouter le fichier dans notre code avec la ligne suivante : RemotingConfiguration.Configure("app.config",false); VB.NET RemotingConfiguration.Configure("app.config", False) Il faut ensuite récupérer les informations pour la connexion et se connecter grâce aux lignes suivantes : WellKnownClientTypeEntry entry = RemotingConfiguration.GetRegisteredWellKnownClientTypes()[0]; IServeurOperation Service = RemotingServices.Connect(entry.ObjectType, entry.objecturl) as IServeurOperation; VB.NET Dim entry As WellKnownClientTypeEntry = RemotingConfiguration.GetRegisteredWellKnownClientTypes()(0) Dim Service As IServeurOperation = TryCast(RemotingServices.Connect(entry.ObjectType, entry.objecturl), IServeurOperation) Ici entry.objecttype correspond au type défini dans la balise Wellknown et entry.objecturl correspond à l adresse défini dans la même balise.

11 Fichiers de configuration.net Remoting 29/07/09 5 Durée de vie La durée de vie de l objet décrit précédemment peut être aussi paramétrée dans le fichier. En effet dans le fichier de configuration serveur, on peut paramétrer les différentes propriétés, (leasetime, renewoncalltime, ). Pour intégrer la durée de vie dans le fichier.config, il faut intégrer la balise orpheline <lifetime /> à l intérieur des balises. <lifetime leasetime="2s" sponsorshiptimeout="2s" renewoncalltime="2s" />

12 Fichiers de configuration.net Remoting 29/07/09 6 Exemple Ici je vais montrer avec l exemple du chapitre 2 (addition), comment ajouter les fichiers de configuration. La première étape réalisée consiste à créer un fichier «Client.config» dans le dossier Debug dans lequel la solution Client.exe sera générée (C:\User\PFCH5\Visual Studio 2008\Projects\SolutionRemotable\Client\bin\Debug), ainsi qu un fichier «Serveur.config» dans le dossier debug du serveur (C:\User\PFCH5\Visual Studio 2008\Projects\SolutionRemotable\Serveur\bin\Debug). Voici donc le code xml Client.config : <?xml version="1.0" encoding="utf-8"?> <client> <wellknown type="interface.iserveuroperation, Interface" url="tcp://localhost:8000/serveuroperation"/> </client> <channels> <channel ref="tcp" /> </channels> Et celui du serveur Serveur.config : <?xml version="1.0" encoding="utf-8"?> <service> <wellknown type="serveur.serveuroperation, Serveur" mode="singlecall" objecturi="serveuroperation"/> </service> <channels> <channel ref="tcp" port="8000" /> </channels> Ensuite nous ne modifions le code que dans les fichiers : Serveurmain.cs pour qu il prenne en charge le fichier, je rappelle que le mode d activation de ma méthode addition était WKO.

13 Fichiers de configuration.net Remoting 29/07/09 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace Serveur class Serveurmain [STAThread]//ligne à rajouter static void Main(string[] args) RemotingConfiguration.Configure("Serveur.config",false); RemotingConfiguration.RegisterWellKnownServiceType( typeof(serveuroperation), "ServeurOperation", WellKnownObjectMode.SingleCall); Console.ReadLine(); VB.NET Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Channels.Tcp Namespace Serveur Class Serveurmain 'ligne à rajouter <STAThread()> _ Private Shared Sub Main(ByVal args As String()) RemotingConfiguration.Configure("Serveur.config", False) RemotingConfiguration.RegisterWellKnownServiceType(GetType(ServeurOperati on), "ServeurOperation", WellKnownObjectMode.SingleCall) Console.ReadLine() End Sub End Class End Namespace Program.cs où là aussi on modifie simplement les informations relatives à la connexion comme vu précédemment.

14 Fichiers de configuration.net Remoting 29/07/09 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using Interface; using Serveur; namespace Client class Program private static IServeurOperation GetService(Type type) foreach (WellKnownClientTypeEntry entry in RemotingConfiguration.GetRegisteredWellKnownClientTypes()) if (entry.objecttype!= null) if (entry.objecturl!= null) return RemotingServices.Connect(entry.ObjectType, entry.objecturl) as IServeurOperation; throw new Exception("erreur"); static void Main(string[] args) int nombre1, nombre2, somme; //configuration du canal TCP RemotingConfiguration.Configure("Client.config",false); WellKnownClientTypeEntry entry = RemotingConfiguration.GetRegisteredWellKnownClientTypes()[0]; IServeurOperation Service = RemotingServices.Connect(entry.ObjectType, entry.objecturl) as IServeurOperation; Console.WriteLine("Entrer le premier nombre:"); nombre1 = Int32.Parse(Console.ReadLine()); Console.WriteLine("Entrer le deuxieme nombre:"); nombre2 = Int32.Parse(Console.ReadLine()); somme = Service.addition(nombre1, nombre2); Console.WriteLine(string.Format("Résultat :0",somme)); Console.ReadLine();

15 Fichiers de configuration.net Remoting 29/07/09 VB.NET Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Channels.Tcp Imports [Interface] Imports Serveur Namespace Client Class Program Private Shared Function GetService(ByVal type As Type) As IServeurOperation For Each entry As WellKnownClientTypeEntry In RemotingConfiguration.GetRegisteredWellKnownClientTypes() If entry.objecttype IsNot Nothing Then If entry.objecturl IsNot Nothing Then Return TryCast(RemotingServices.Connect(entry.ObjectTyp e, entry.objecturl), IServeurOperation) End If End If Next Throw New Exception("erreur") End Function Private Shared Sub Main(ByVal args As String()) Dim nombre1 As Integer, nombre2 As Integer, somme As Integer 'configuration du canal TCP RemotingConfiguration.Configure("Client.config", False) Dim entry As WellKnownClientTypeEntry = RemotingConfiguration.GetRegisteredWellKnownClientTypes()(0) Dim Service As IServeurOperation = TryCast(RemotingServices.Connect(entry.ObjectType, entry.objecturl), IServeurOperation) Console.WriteLine("Entrer le premier nombre:") nombre1 = Int32.Parse(Console.ReadLine()) Console.WriteLine("Entrer le deuxieme nombre:") nombre2 = Int32.Parse(Console.ReadLine()) somme = Service.addition(nombre1, nombre2) Console.WriteLine(String.Format("Résultat :0", somme)) Console.ReadLine() End Sub End Class End Namespace Le reste de la solution n a pas été modifiée.

16 Fichiers de configuration.net Remoting 29/07/09 7 Conclusion Dans ce chapitre nous avons vu la programmation avancée en Remoting avec l utilisation de fichier pour la configuration. Ces fichiers permettent d indiquer au programme distribué des informations sur les canaux, la durée de vie ou encore le nom de l objet distribué. L avantage démontré dans ce chapitre consiste dans le fait qu un programme utilisant ce fichier n a pas à être recompilé à chaque changement (de port par exemple) ; il suffit juste de changer le.