Semaine 8: Java 2, Enterprise Edition 1
Patron d’intégration d’entreprise
• Architectures de message asynchrone
Semaine 8: Java 2, Enterprise Edition 2
Le besoin d’intégration d’entreprise
• Plus d’une application• Souvent des centaines• Une simple application trop difficile
et inflexible• Spécialisation des vendeurs• Raisons historiques, fusions• Culture politique de l’organisation
• Les clients perçoivent l’entreprise comme un tout, et veulent faire exécuter des fonctions d’entreprises qui recouvrent plusieurs applications.
Semaine 8: Java 2, Enterprise Edition 3
Défis de l’intégration inter-entreprise
• Les réseaux sont lents• Les réseaux ne sont pas fiables• Il n’y a pas 2 applications semblables• Le changement est inévitable• Plus
• Intrésèquement à grande échelle et complexe• Contrôle limité sur les applications et les participants• Implications profondes, impacts d’affaire critiques• Entrelacé avec la politique corporative• Peu de standards existent et ils évoluent encore…
Semaine 8: Java 2, Enterprise Edition 4
Couplage faible recherché
• Couplage: mesure de la dépendance entre les applications• Dépendance technologique• Dépendance sur lieu• Dépendance temporelle• Dépendance sur les données
• Waldo et al, 1994: “Objects that interact in a distributed system need to be dealt with in ways that are ntrinsically different from objects that interact in a single address space
Exemple de couplage fort
Semaine 8: Java 2, Enterprise Edition 5
Intergiciel basé message
• Les canaux sont séparés des applications • Enleve la dépendance physique
• Les canaux sont asynchrones et fiables • Enleve les dépendances temporelles
• Les données sont échangées dans des messages complets et autonomes• Enleve les dépendances aux formats de données
Semaine 8: Java 2, Enterprise Edition 6
Une approche asynchrone
Semaine 8: Java 2, Enterprise Edition 7
L’évolution du paradigme
Semaine 8: Java 2, Enterprise Edition 8
Plusieurs produits
• Intergiciels basés message (MOM)• IBM MQ• Microsoft MSMQ• Java Message Service Implémentations
• Suite d’intégration d’applications d’entreprise• TIBCO, Webmethods, SeeBeyond, Vitria, BEA
Integration• Service Web asynchrone
• WS-ReliableMessaging, ebMS (ebXML)• Sun JAXMI Microsoft Web Service Extension
Semaine 8: Java 2, Enterprise Edition 9
Intégration basée message
• 1. Transporter les messages
• 2. Concevoir les messages
• 3. Acheminer le message à sa destination
• 4. Transformer le message à son format
• 5. Produire et consommer le message dans l’application
• 6. Gérer et tester le système
Semaine 8: Java 2, Enterprise Edition 10
Les patrons d’intégration
• 1. Le canal de transport des messages
• 2. La conception des messages
• 3. La route du message à sa destination appropriée
• 4. La traduction du message au format approprié
• 5. La production et la consommation des messages
• 6. La gestion et le test du système
Semaine 8: Java 2, Enterprise Edition 11
“Bonjour”, façon asynchrone
• Le consommateur• Le fournisseur de service• Échanges de type Requête-Réponse• Deux canaux de communications point à point• Des messages de requête et de réponse séparés
Semaine 8: Java 2, Enterprise Edition 12
Plusieurs consommateurs
• Chaque composant consommateur a sa propre queue de réponse, son propre canal
• Comment le fournisseur du service sait-il où envoyer la réponse?• A tous – très innéficace• Adresse codée- viole le principe d’indépendance et de non
couplage
Semaine 8: Java 2, Enterprise Edition 13
Patron “adresse de retour”
• Le consommateur fournit une adresse de retour (un canal)
• Le fournisseur de service répond avec un message dans le canal de réponse.
• Si l’adresse de retour pointe sur un canal différent que celui du consommateur, alors on utilise le chaînage
Semaine 8: Java 2, Enterprise Edition 14
Multiple fournisseur de service
• Les messages de requête peuvent être traités par plus d’un service fournisseur
• Les canaux points à points supportent des consommateurs en compétition, dans ce cas-ci un seul service reçoit chacun des messages de requête
• Le canal enfile dans la queue les requêtes non répondues
Semaine 8: Java 2, Enterprise Edition 15
Problèmes
• Les messages peuvent être traités par des services différents• Soit par répartion de charge• Ou par un aiguilleur
• Les messages peuvent devenir hors séquence
• Comment pairer les requêtes et les réponses• Envoyer une seule requête à la
fois? Très inéficace• Se baser sur la séquence
naturelle? Faux en réalité
Semaine 8: Java 2, Enterprise Edition 16
Patron “Corrélation”
• Fournir à chaque message un identificateur unique• Message ID (Simple, limité)• GUID (Globally Uniqaue ID)• Clef d’affaire (ID de l’ordre)
• Le fournisseur copie l’identificateur dans le message de réponse
• L’émetteur peut pairer les requêtes et les réponses
Semaine 8: Java 2, Enterprise Edition 17
Un aiguilleur de message
• Comment pouvons-nous découpler des étapes de traitement individuel?• Les messages seront acheminés à des composants différents selon
les conditions• Les différents canaux dépendront du contenu des messages, de
l’environnement (tests ou production)• Nous ne voulons pas charger l’émetteur avec la décision
• Un aiguilleur de message acheminera les messages d’un canal à un autre
Semaine 8: Java 2, Enterprise Edition 18
Un diviseur
• Comment nous pouvons traiter un message s’il contient plusieurs éléments, chacun devant être traité différemment?• Nous voulons
• Traiter chaque élément indépendamment• Éviter de produire des éléments absents ou doubles• Faire une utilisation efficace des resources du réseau
• Un diviseur sépare un message agrégé en une série de messages individuels, chacun contenant les données d’un seul item
Semaine 8: Java 2, Enterprise Edition 19
Un aggrégateur
• Comment combiner plusieurs messages reliés en un seul message?• Les messages peuvent être hors séquence• Les messages peuvent être retardés
• Un aggrégateur gère la réconcialition de plusieurs messages en un seul• Composant avec état
Semaine 8: Java 2, Enterprise Edition 20
Un aggrégateur
• Corrélation• Quels messages entrants vont ensemble?
• Condition de complétude• Quand sommes-nous prêt à publier le message résultant?
• Attendre pour tous• Expiration du délai (absolu ou incrémentiel)• Après les premiers• Un événement externe
• Algorithme de l’aggrégation• Comment combiner les messages reçus en un seul
message résultant• Un seul, le meilleur• Condenser les données• Concaténer les données pour une analyse ultérieure
Semaine 8: Java 2, Enterprise Edition 21
L’enchère
• Envoyer un message à un ensemble dynamique de participants, et retourner un message unique qui incorpore les réponses
Semaine 8: Java 2, Enterprise Edition 22
Un exemple de combinaison
• Recevoir un ordre, choisir la meilleure offre de chaque item parmi les vendeurs, combiner le tout en un ordre valide
Semaine 8: Java 2, Enterprise Edition 23
Semaine 8: Java 2, Enterprise Edition 24
Résumé
• Un langage visuel simple pour décrire des solutions intégrées
• Combiner les patrons pour décrire des solutions plus larges
• Pas un outil compliqué• Pas un langage de spécification UML