Principes des Architectures Middleware version 2.0



Documents pareils
Cours 6 : Programmation répartie

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

Urbanisme du Système d Information et EAI

Software Engineering and Middleware A Roadmap

Programmation client-serveur sockets - RPC

Couche application. La couche application est la plus élevée du modèle de référence.

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Messagerie asynchrone et Services Web

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Architectures n-tiers Intergiciels à objets et services web

NOTICE INSTALLATION. ARCHANGE Simplex Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

Introduction aux applications réparties

Le modèle client-serveur

Introduction aux intergiciels

18 TCP Les protocoles de domaines d applications

NOTICE INSTALLATION. ARCHANGE WebDAV Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

2 Chapitre 1 Introduction

Paxton. ins Net2 desktop reader USB

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

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

I>~I.J 4j1.bJ1UlJ ~..;W:i 1U

AMENDMENT TO BILL 32 AMENDEMENT AU PROJET DE LOI 32

RMI le langage Java XII-1 JMF

NFP111 Systèmes et Applications Réparties

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

Le modèle client-serveur

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Intergiciel - concepts de base

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Internet Group Management Protocol (IGMP) Multicast Listener Discovery ( MLD ) RFC 2710 (MLD version 1) RFC 3810 (MLD version 2)

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

Cisco Certified Network Associate

L3 informatique Réseaux : Configuration d une interface réseau

Les commandes relatives aux réseaux

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

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

Mise en œuvre des serveurs d application

Introduction. Adresses

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

Instructions Mozilla Thunderbird Page 1

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Plan. Department of Informatics

SERVEUR DÉDIÉ DOCUMENTATION

Contrôle d'accès Access control. Notice technique / Technical Manual

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Le service FTP. M.BOUABID, Page 1 sur 5

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

Règlement sur le télémarketing et les centres d'appel. Call Centres Telemarketing Sales Regulation

NOTIONS DE RESEAUX INFORMATIQUES

RESEAUX TCP/IP: NOTIONS AVANCEES. Preparé par Alberto EscuderoPascual

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Remote Method Invocation (RMI)

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Serveurs de noms Protocoles HTTP et FTP

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

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

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Programmation Internet en Java

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

Architectures d'intégration de données

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

Installation de GFI MailEssentials

Description de la formation

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Cours 13. RAID et SAN. 2004, Marc-André Léger

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Android et le Cloud Computing

Algorithmique des Systèmes Répartis Protocoles de Communications

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Frequently Asked Questions

Java et les bases de données

Completed Projects / Projets terminés

Introduction : les processus. Introduction : les threads. Plan

Environnements de Développement

Architectures en couches pour applications web Rappel : Architecture en couches

NIMBUS TRAINING. Administration de Citrix NetScaler 10. Déscription : Objectifs. Publics. Durée. Pré-requis. Programme de cette formation

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Cedric Dumoulin (C) The Java EE 7 Tutorial

2. DIFFÉRENTS TYPES DE RÉSEAUX

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

CONVERTISSEUR RS 232/485 NOTICE

Les clés d un réseau privé virtuel (VPN) fonctionnel

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

L intégration d applications unifiée par les Services Web et XML Réconcilier J2EE.NET EIS et mainframes

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

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Le cadre des Web Services Partie 1 : Introduction

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Contrôle d accès Access control MOD-TCPIP-AI. Notice technique / Technical Manual

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

THÈSE. présentée à TÉLÉCOM PARISTECH. pour obtenir le grade de. DOCTEUR de TÉLÉCOM PARISTECH. Mention Informatique et Réseaux. par.

SPECIFICATION ET DESCRIPTION DU MULTICAST FIABLE DANS ETOILE

Transcription:

Principes des Architectures Middleware version 2.0 Technologie des réseaux - rappel Les principaux types de Middleware Principes des middlewares orientés objet Les copies de sites Web commerciaux sont reproduites à la seule fin d illustrer les concepts théoriques, ils ne représentent ni une publicité, ni une quelconque recommandation. @ Vincent Englebert, FUNDP 1

releases 2.0: MOM a été étendu avec les slides du chapitre modèle de communication @ Vincent Englebert, FUNDP 2

Technologie des Réseaux - Rappel Layer Description Examples Application Presentation Session Transport Network Data link Physical Protocols that are designed to meet the communication requirements of specific applications, often defining the interface to a service. Protocols at this level transmit data in a network representation that is independent of the representations used in individual computers, which may differ. Encryption is also performed in this layer, if required. At this level reliability and adaptation are performed, such as detection of failures and automatic recovery. This is the lowest level at which messages (rather than packets) are handled. Messages are addressed to communication ports attached to processes, Protocols in this layer may be connection-oriented or connectionless. Transfers data packets between computers in a specific network. In a WAN or an internetwork this involves the generation of a route passing through routers. In a single LAN no routing is required. Responsible for transmission of packets between nodes that are directly connected by a physical link. In a WAN transmission is between pairs of routers or between routers and hosts. In a LAN it is between any pair of hosts. The circuits and hardware that drive the network. It transmits sequences of binary data by analogue signalling, using amplitude or frequency modulation of electrical signals (on cable circuits), light signals (on fibre optic circuits) or other electromagnetic signals (on radio and microwave circuits). HTTP, FTP, SMTP, CORBA IIOP Secure Sockets (SSL),CORBA Data Rep. TCP, UDP IP, ATM virtual circuits Ethernet MAC, ATM cell transfer, PPP Ethernet base- band signalling, ISDN @ Vincent Englebert, FUNDP 3

Présentation d'un système distribué Component 1 Component n Middleware Component Network Operating System 1 Component n Middleware Hardware Component Network 1 Component Operating n System MiddlewareHardware ComponentNetwork 1 Component Operating n System MiddlewareHardware Network Operating System Hardware Host 1 Host 2 Host n-1 Host n Réseau @ Vincent Englebert, FUNDP 6 Middleware= Application Présentation Session Transport Réseau Données Physique @ Vincent Englebert, FUNDP 4

La couche transport 2 types de couche transport connection-oriented connection-less @ Vincent Englebert, FUNDP 5

Connection-oriented / TCP Basé sur l'existence d'une connexion Ouvrir/créer la connexion entre deux hôtes Utiliser la connexion (écrire/lire) fermer/détruire la connexion transmission correcte transmission ralentie TCP (Transmission Control Protocol) Exemples http, ftp, telnet, smtp, Application Présentation Application Présentation anglais:connection français:connexion Session requête Session Transport OutputStream InputStream Transport Réseau Données résultat Réseau Données Physique Physique @ Vincent Englebert, FUNDP 6

import java.io.*; import java.net.*; public class Client { protected static final int PORT=45678; socket public static void main(string[] args){ Socket s=null; if (args.length!=1){ System.err.println("Usage: java Client <hote>"); System.exit(1); try { // Creates a stream socket and connects it to the specified port number // at the specified IP address. s=new Socket(args[0],PORT); //s.connect( ); DataInputStream canallecture= new DataInputStream(s.getInputStream()); PrintStream canalecriture=new PrintStream(s.getOutputStream()); DataInputStream console=new DataInputStream(System.in); System.out.println("connexion etablie: "+s.getinetaddress()+ " port: "+ s.getport()); String ligne; while (true){ System.out.print("?"); System.out.flush(); ligne=console.readline(); canalecriture.println(ligne); ligne=canallecture.readline(); if (ligne==null){ System.out.println("connexion terminee"); System.exit(0); System.out.println("!"+ligne); catch (Exception e){ e.printstacktrace(); finally { try { if (s!=null){ s.close(); catch (Exception e){ e.printstacktrace(); @ Vincent Englebert, FUNDP 7

import java.io.*; import java.net.*; socket public class Serveur { protected static final int PORT=45678; protected ServerSocket ecoute; public Serveur(){ try { // Creates a server socket on a specified port. ecoute=new ServerSocket(PORT); System.out.println("Serveur en ecoute sur le port "+PORT); while (true){ // Listens for a connection to be made to this // socket and accepts it. The method blocks until // a connection is made. Socket client=ecoute.accept(); System.out.println(«nouveau client»); Connexion c=new Connexion(client); catch (Exception e){ e.printstacktrace(); public static void main(string[] args){ new Serveur(); @ Vincent Englebert, FUNDP 8

import java.io.*; import java.net.*; class Connexion extends Thread { static int nombre=0; protected Socket client; protected BufferedReader in; protected PrintStream out; socket public Connexion(Socket client_soc){ nombre=nombre+1; System.out.println(nombre+" connexions"); client=client_soc; try { in= new BufferedReader(new InputStreamReader(client.getInputStream())); out=new PrintStream(client.getOutputStream()); this.start(); catch (Exception e){ try { client.close(); catch (Exception e1){ e1.printstacktrace(); e.printstacktrace(); public void run(){ String ligne; try { while (true){ ligne=in.readline(); if (ligne.touppercase().compareto("fin")==0) break; out.println(ligne.touppercase()); catch( IOException e){ System.out.println("connexion:"+e.toString()); finally { try { client.close(); catch (IOException e){ e.printstacktrace(); @ Vincent Englebert, FUNDP 9

Connection-less / UDP connection-less envoyer un message de longueur déterminée (datagramme) à un hôte absence de certains tests d'intégrité Omission failures: messages can be dropped occasionally. Ordering: the order of the messages is not ensured. The message can be partially delivered if the buffer allocated on the receiver side is not large enough. rapide & simple UDP (User Datagram Protocol) Exemples rwho, NFS, DNS, Packet lengths can be up to 2^16 bytes (with IP headers). Usually, the size is more or less 8Kb. Application Présentation The sender is blocked until the message is taken by the Transport layer The receiver is blocked while the message is not received. It is possible to limit this waiting time with a timeout. Session Transport Réseau Données Physique @ Vincent Englebert, FUNDP 10

Émetteur datagram import java.net.*; public class emetteur { static final int PORT=1333; public static void main(string arg[]){ try { // Constructs a datagram socket and binds it // to any available port on the local host machine. DatagramSocket socket= new DatagramSocket(); // prepare the data buffer byte[] data=new byte[256]; for (int i=0;i<255;i++) data[i]=(byte)i; System.out.println("Envoi de 256 bytes sur le port "+PORT+"..."); // Constructs a datagram packet for sending packets // of length length to the specified port number on // the specified host DatagramPacket packet=new DatagramPacket(data,data.length, InetAddress.getLocalHost(),PORT); // Sends a datagram packet from this socket. The DatagramPacket // includes information indicating the data to be sent, its // length, the IP address of the remote host, and the port number // on the remote host. socket.send(packet); System.out.println("Paquet envoyé!"); socket.close(); catch (Exception e){ e.printstacktrace(); @ Vincent Englebert, FUNDP 11

Récepteur datagram import java.net.*; public class recepteur { static final int PORT=1333; static final int SIZE_BUFFER=65536; static public void main(string arg[]){ System.out.println("Récepteur à l'écoute sur port "+PORT); try { // Constructs a datagram socket and binds it // to the specified port on the local host machine. DatagramSocket socket=new DatagramSocket(PORT); byte buffer[]= new byte[size_buffer]; // Constructs a DatagramPacket for receiving packets // of length length, specifying an offset into the buffer. DatagramPacket packet=new DatagramPacket(buffer,buffer.length); // Receives a datagram packet from this socket. socket.receive(packet); InetAddress fromaddress=packet.getaddress(); int fromport=packet.getport(); int length=packet.getlength(); byte[] data=packet.getdata(); socket.close(); System.out.println("reçu "+length+" bytes de "+fromaddress +":"+fromport); for (int i=0;i<length;i++){ System.out.print(data[i]+","); catch (Exception e){ e.printstacktrace(); @ Vincent Englebert, FUNDP 12

Remarks The use of those protocols generally obliges the user to manage the faults himself UDP order loss replication messages can be truncated TCP the connection can be broken this information is known only when a process tries to write/read a data the processes using the connection cannot distinguish between network failure and failure of the process at the other end of the connection; the process does not know if the message it has just sent has been received or not. define its own convention to exchange data ASCII EBCDIC UTF-8, 16, 32 (Universal Transfer Format) UNICODE @ Vincent Englebert, FUNDP 13

Exercices Écrivez un serveur de fichiers concevez un protocole qui permet de «uploader» un fichier «downloader» un fichier obtenir la liste des fichiers définissez une syntaxe concrète pour ce protocole implémentez le serveur de sorte à admettre un client à la fois implémentez le serveur de sorte à servir plusieurs clients en même temps quel problème peut il survenir? Écrivez le même serveur avec le protocole UDP. quelles sont les conséquences? faites quelques comparaisons de performance. Modifiez l architecture afin que lorsqu un client demande de uploader un fichier, celui-ci se contente de donner les informations nécessaires afin que le serveur se mue en «client» et downloade le fichier depuis le client. Au niveau de l architecture, comment pourriez vous procéder afin que votre serveur soit indépendant du protocole utilisé (UDP-TCP)? Tentez d écrire un composant exploitant l un de ces protocoles: http://en.wikipedia.org/wiki/list_of_well-known_ports_%28computing%29 @ Vincent Englebert, FUNDP 14

Les Principaux Types de Middleware TCP & UDP sont des protocoles trop élémentaires manque de transparence mise-en-œuvre compliquée Problèmes Les requêtes utilisent des objets dont la structure est large et complexe (tableau, référence, hash-table) la sémantique n'est pas homogène (Object Java / Record COBOL) Vérification de types Transactions Persistance Activation Synchronisation Sécurité Gestion de la localisation des composants Néanmoins, des systèmes distribués ont été (et sont encore) développés avec ces technologies. les protocoles P2P par exemple @ Vincent Englebert, FUNDP 15

Le middleware est une couche entre l'applicatif (le composant) et l'os-réseau Il permet de rendre la distribution des composants transparente aux programmeurs et aux utilisateurs Il résout l'hétérogénéité en termes de Matériel Systèmes d'exploitation Réseaux Langages de programmation Fournit un (ou des) environnement pour la conception des systèmes distribués et leur administration suivi des événements suivi des transactions gestion des utilisateurs migration de composants backup power off/on du système debugging @ Vincent Englebert, FUNDP 16

Middlewares Transactionnels Fournit un service de transactions distribuées utilisé par les composants de type BD (relationnel, OO, ) permet de répliquer des BDs BD (Dupont.age=24) Begin-distributed-transaction BD-Namur(Dupont.age:=24) BD-Charleroi(Dupont.age:=24) End-distributed-transaction & Commit Les middlewares transactionnels permettent de faire coopérer des applications conçues dans des environnements hétérogènes au dessus de bases de données de technologies différentes en garantissant le bon déroulement des transactions (cfr le chapitre sur les transactions). Exemples IBM CICS ----BEA--- Oracle Tuxedo Encina MTS - Microsoft Transaction Server @ Vincent Englebert, FUNDP 17

octobre 2004 - http://www-306.ibm.com/software/htp/cics/tserver/v23/ @ Vincent Englebert, FUNDP 18

http://www.bea.com/content/news_events/white_papers/bea_tuxedo81_ds.pdf @ Vincent Englebert, FUNDP 19

http://www.bea.com/content/news_events/white_papers/bea_tuxedo81_ds.pdf @ Vincent Englebert, FUNDP 20

Middleware de Messagerie Message Oriented Middleware (MOM) Transfert asynchrone de messages Découplage des émetteurs/récepteurs Messages queues (persistence) Tolérance aux pannes 3 2 1 Sécurité Multicasting Publish/Subscribe 2 3 1 Notification d événements Push. L émetteur prend l initiative. Pull. Le récepteur prend l initiative @ Vincent Englebert, FUNDP 21

Systèmes de queuing queries 8 7 6 5 answers application C:Callback 2 3 4 Put(in Q) Get(out Q) Poll(out Q) Notify(in Callback n) Le système de queuing permet d'enregistrer des requêtes afin de les mettre à la disposition d'une application lorsque celle-ci est disposée à les traiter. Le client récupère les résultats lorsqu'ils deviennent présents dans le système de queuing. Exemples Bourse avec créneaux disjoints Workflow (transfert de tâches entre départements) Put ajouter un message à une file d'attente Get attendre après l'occurrence d'un message dans une file d'attente et l'enlever Poll vérifie la présence d'un message dans une file d'attente et l'enlève si oui, mais ne bloque jamais Notify installe un "callback" auprès du gestionnaire de la file d'attente. le gestionnaire avertir le "callback" lorsqu'un message arrive dans la file d'attente @ Vincent Englebert, FUNDP 22

@ Vincent Englebert, FUNDP 23 @tanenbaul

Le routage des messages peut se faire: sur base de l'adresse du récepteur (bourse New York) sur base du type de contenu (quotation) sur base du contenu (intel>100) Un émetteur peut envoyer un message sans connaître le destinataire, il peut éventuellement le placer dans le contenu, ce sera alors une règle de routage qui filtrera les messages vers le bon destinataire. on peut placer beaucoup d'intelligence dans le MOM, par exemple des transformations automatiques "transformer toutes les unités de poids contenues dans tel type de message en Kg" cela surcharge les nœuds du MOM rend le système difficile à maintenir, manque d'outils d'administration. La transmission de messages de grosse taille peut saturer le système à l instar des Emails @ Vincent Englebert, FUNDP 24

Exemples JMS de SUN/Java Event/Notification service de l'omg MSMQ de Microsoft BEA--- Oracle WebLogic Integration Tibco ActiveEnterprise WebMethods Enterprise WebSphere MQ (aka. MQSeries) NaradaBrokering (http://www.naradabrokering.org/) Middleware Business JBI Apache Camel EAI coûts de développement moindres moins d'efforts de maintenance découplage Emetteur/Récepteur utilisation d'adaptateurs et de connecteurs. Plusieurs 100.000 @ Vincent Englebert, FUNDP 25

http://www.microsoft.com/ntserver/techresources/appserv/msmq/msmqfeat.asp @ Vincent Englebert, FUNDP 26

http://www.microsoft.com/ntserver/techresources/appserv/msmq/msmqfeat.asp @ Vincent Englebert, FUNDP 27

http://www.microsoft.com/ntserver/techresources/appserv/msmq/msmqfeat.asp @ Vincent Englebert, FUNDP 28

http://www.tibco.com/resources/software/enterprise_backbone/message_service.pdf http://www-306.ibm.com/software/integration/wmq/ @ Vincent Englebert, FUNDP 29

Middlewares Orientés Objets Généralisation des appels de procédure locaux aux appels distants Fonctionnel RPC Objet Corba, RMI, COM,.NET, ICE Java Cobol C++ Interface Description Language Java Cobol C++ @ Vincent Englebert, FUNDP 30

Time 2000 Corba Components RMI JINI EJB... MS's.NET Web Services Sun's Java MS's DCOM OMG's CORBA MS's COM 1990 OSF's DCE ATT's C++ 1980 Sun's RPC Smalltalk 1970 Simula-67 @ Vincent Englebert, FUNDP 31

Application Serveur Tourne(in dg) Démarre() Stop() Compteur(out cpt) Avance(in kmh) Tourne(in dg) Démarre() Stop() Compteur(out cpt) Avance(in kmh) Stub/Proxy @ Vincent Englebert, FUNDP 32

Tourne(in dg) Démarre() Stop() Compteur(out cpt) Avance(in kmh) Tourne(in dg) Démarre() Stop() Compteur(out cpt) Avance(in kmh) Gérer les appels de méthode Envoyer les arguments Recevoir les résultats Gérer les références distantes Activer le composant Attendre et activer les appels Recevoir les args et les passer Renvoyer les résultats BUS Middleware Couche Transport (TCP/UDP) @ Vincent Englebert, FUNDP 33

Server et threads @tanenbaum @ Vincent Englebert, FUNDP 34

Adaptateur d'objets Chaque adaptateur va gérer un ensemble d'objets distribués selon des politiques différentes priorités parallélisme persistance load balancing Exemple Adaptateur A va devoir se contenter d'un seul thread pour exécuter toutes les requêtes envoyées à ses objets Les objets gérés par l'adaptateur B sont persistants, ils peuvent être dé/chargés sur disque. Les objets gérés par l'adaptateur C sont créés à la volée et détruits aussitôt @tanenbaum @ Vincent Englebert, FUNDP 35

Politiques de gestion de threads workers per-connection threads per-object threads I/O remote objects remote objects I/O remote objects a. Thread-per-request b. Thread-per-connection c. Thread-per-object @ Vincent Englebert, FUNDP 36

@ Vincent Englebert, FUNDP 38