semaine 8: java 2, enterprise edition1 patron dintégration dentreprise architectures de message...

Post on 04-Apr-2015

106 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related