Monday 9 October 2017

Trading System Uml Diagramme


Kontextdiagrammvorlage Diese Vorlage zeigt das Kontextdiagramm. Es wurde in ConceptDraw PRO-Diagramm und Vektor-Zeichnungs-Software mit der Block Diagramme Lösung aus dem Was ist ein Diagramm Bereich von ConceptDraw Solution Park erstellt. Das Kontextdiagramm identifiziert das System grafisch. Äußere Faktoren und Beziehungen zwischen ihnen. Es ist ein High-Level-Blick auf das System. Die Kontextdiagramme sind weit verbreitet in Software Engineering und System Engineering für die Gestaltung der Systeme, die die Informationen verarbeiten verwendet. Nutzen Sie die Data Flow Diagrams-Lösung aus dem Bereich Software Development von ConceptDraw Solution Park, um eigene ContextDraw PRO-Diagramme und Vektor-Zeichnungs-Software zu erstellen. Datenflussdiagramme stellen grafisch die Informationsübertragungen und Prozessschritte eines Systems dar. Sie stellen visuell dar, wie Daten von einem System in Bezug auf Ein - und Ausgänge verarbeitet werden, wie erfolgt die Eingabe in einem System, wie die Daten durch ein Informationssystem fließen und wo sie gespeichert sind und wie die Ausgabe aus dem System erfolgt. DFDs geben den Überblick über das System und modellieren die Prozesse Aspekte, sie werden mit anderen Methoden der strukturierten Systemanalyse beibehalten. Das Hauptziel der DFDs ist das Verständnis zwischen Entwicklern und Nutzern. Für ihre Konstruktion werden zwei Notationen verwendet - Gane-Sarson und Yourdon, jeder von ihnen benutzt seinen eigenen Satz von Symbolen. Data Flow Diagrams Lösung aus dem Bereich Software Development erweitert die ConceptDraw PRO Software mit Vorlagen, Samples und vorgefertigten Bibliotheken von Datenflussdiagrammsymbolen für beide Notationen, so dass Sie die prozessorientierten und datenorientierten Modelle einfach gestalten, die Datenflussdiagramme zeichnen, Datenflussdiagramme, Datenprozessdiagramme, Informationsflussdiagramme, strukturierte Analyseschemata etc. Ein Datenflussdiagramm (DFD) veranschaulicht den Datenfluss durch ein Informationssystem, visualisiert, wie die Informationen in Bezug auf Ein - und Ausgänge behandelt werden, wie die Daten Betreten Sie das System und lassen Sie es. Es ist effektiv, ein Datenflussdiagramm für die Erstellung der Systemübersicht zu verwenden, um den Systemumfang und die Grenzen zu zeigen. Es gibt zwei verschiedene Arten von Notationen für DFDs: Yourdon-Coad und Gane-Sarson, die sich in visuellen Darstellungen für Prozesse, Datenfluss, Datenspeicher, externe Entitäten usw. unterscheiden. So werden beispielsweise die Prozesse als Kreise in Yourdon - Coad Notation und als runde Quadrate in Gane-Sarson Notation. Gane-Sarson-Notation wird in der Regel für Visualisierungs-Informationssysteme und Yourdon-Coad verwendet - für Systemanalyse und Design. Die Datenflussdiagramme, die im Softwareentwicklungsbereich von ConceptDraw Solution Park enthalten sind, bieten viele DFD-Vorlagen, Beispiele und Beispiele, Bibliotheken von Vektorschablonen für den Bau ohne Anstrengungen der DFDs nach Gane-Sarson - und Yourdon-Coad-Notationen. Datenflussdiagramm (DFD) ist ein spezieller Diagrammtyp, der den Datenfluss durch ein Informationssystem grafisch darstellen lässt. So können die Datenflussdiagramme erfolgreich zur Visualisierung von Datenverarbeitung oder strukturiertem Design genutzt werden, für die Erstellung eines Überblicks über das System, für die Geschäftsprozessmodellierung, für die Erforschung der High-Level-Design in Bezug auf Datenflüsse und die Dokumentation der großen Datenflüsse. Die Einbindung von leistungsstarken Datenflussdiagrammen Lösung für den Softwareentwicklungsbereich von ConceptDraw Solution Park macht den ConceptDraw PRO zu einer vorteilhaften Datenflussdiagrammsoftware und versorgt sie mit zahlreichen Schnellseitenvorlagen, professionell gestalteten Mustern und umfangreichem Angebot an ready-for - Verwenden Sie Vektorobjekte, die die Datenflussdiagramme, Gane-Sarson Notation und Yourdon und Coad Notation Bibliotheken enthalten. Verwenden Sie die ConceptDraw PRO-Anwendung, um die Datenflussdiagramme, einschließlich der Datenspeicher, Datenflüsse, externe Entitäten, funktionale Transformationen, Steuerungsumwandlungen und Signale, einfach und schnell zu gestalten. Data Flow Diagram (DFD) ist eine Methodik der grafischen Strukturanalyse und Informationssysteme, die die Quellen extern in Bezug auf das System beschreibt, Datenempfänger, logische Funktionen, Datenflüsse und Datenspeicher, auf die zugegriffen wird. DFDs erlauben es, Beziehungen zwischen verschiedenen Systemkomponenten zu identifizieren und werden effektiv in der Analyse von Geschäftsanalysen und Informationssystemen verwendet. Sie sind nützlich für Systeme, die auf High-Level-Details basieren, um zu zeigen, wie die Eingabedaten über die Abfolge von funktionalen Transformationen in Ausgabeergebnisse umgewandelt werden. Für die Beschreibung der DFD-Diagramme werden zwei Notationen verwendet, die Sie in der Syntax unterscheiden. Online-Shop DFD-Beispiel veranschaulicht das Datenflussdiagramm für Online-Shop, die Interaktionen zwischen Kunden, Besuchern, Verkäufern, stellt Benutzerdatenbanken und die Datenströme der Website dar. Mit der Data Flow Diagrams-Lösung können Sie mit dem ConceptDraw PRO ein einfaches und einfaches Beispiel für DFD für den Online-Shop mit speziellen Bibliotheken vordefinierter DFD-Symbole erstellen. Strukturierte Systemanalyse und Designmethode (Abk. SSADM) ist eine Methode, die in Großbritannien entwickelt wurde und 1993 als nationaler Standard für die Entwicklung und Analyse von Informationssystemen akzeptiert wurde. SSADM basiert auf Datenflussdiagrammen und zeichnet sich durch eine klare Abfolge von Schritten bei der Projektierung, Analyse und Dokumentation des Informationssystems aus. Es handelt sich um 6 Hauptstufen: Analyse des bestehenden Systems oder Einschätzung der Praktikabilität, Anforderungsdefinition, Ermittlung der technischen Anforderungen und Ausrüstungskosten, Entwicklung des logischen Datenmodells, Projektierung von logischen Anforderungen und Spezifikation, physikalische Projektierung. Jeder von ihnen ist auch in mehrere Schritte unterteilt, die die Aufgaben definieren, die in einem bestimmten Stadium erfüllt werden sollten. Die wichtigsten SSADM-Elemente sind Strömungsmodelle mit Hilfe von DFD, Datenlogikmodellierung mit Hilfe von LDS (Logical Data Struktur) und Beschreibung von Entitäten Verhalten. Die Anwendung von SSADM ist mit der ConceptDraw PRO-Diagramm - und Vektor-Zeichnungssoftware und der Data Flow-Diagramm-Lösung einfach. Data Flow Diagram (DFD) ist der Teil der Strukturierten Systemanalyse und Design Methodology (SSADM), die für die Informationssysteme Projektion und Analyse gedacht ist. Datenflussdiagramme erlauben grafisch die Datenströme im Informationssystem und analysieren die Datenverarbeitung während der strukturellen Projektion. Diese Art von Diagrammen lässt visuell eine Arbeit des Informationssystems und der Ergebnisse dieser Arbeit zeigen, wird sie häufig in Verbindung mit menschlichen Prozessen verwendet und kann als Workflow-Diagramm dargestellt werden. Datenflussdiagramm visualisiert Prozesse und Funktionen, externe Entitäten, Datenverwahrer und Datenflüsse, die diese Elemente verbinden und Richtungs - und Datenzeichen anzeigen. Jedes dieser Elemente, die für DFD verwendet werden, hat eine eigene grafische Notation. Es gibt zwei Notationen, um DFDs zu zeichnen - Yourdon Coad und Gane Sarson. ConceptDraw PRO erweitert mit Data Flow Diagrams (DFD) Lösung von Software Developmant Bereich ist ideal für die Gestaltung professionell aussehende DFDs, die dann leicht in verschiedenen Formaten exportiert werden können. GET MEIN KONZEPTDRAW SOFTWARE Datenflussdiagramm (DFD) ist eine Technik der grafischen Strukturanalyse, die die Quellen außerhalb des Systems beschreibt, Datenempfänger, auch logische Funktionen, Datenflüsse und Datenspeicher, auf die zugegriffen wird. Das Ziel der DFD ist es, zu zeigen, wie jeder Prozess seine Eingaben in die Ausgänge umwandelt und die Beziehungen zwischen diesen Prozessen identifiziert, damit die Systembeschreibung auf jeder Detailebene klar und verständlich ist. Historisch geschehen, dass für die Beschreibung von Datenflussdiagrammen zwei Notationen verwendet werden - Yourdon und Gane-Sarson, die sich von anderen durch grafische Darstellung von Symbolen unterscheiden. Das DFD-Modell, wie die meisten anderen Strukturmodelle, ist ein hierarchisches Modell. Jeder Prozeß kann einer Zerlegung auf den Strukturkomponenten unterworfen werden, wobei die Beziehungen zwischen denen in derselben Notation in einem separaten Diagramm dargestellt werden kann. Typischerweise werden bei der Modellierung des Systems mehrere DFD-Modelle aufgebaut. ConceptDraw PRO Software erweitert mit Data Flow Diagrams Lösung ideal geeignet für die Erstellung DFD Modelle und professionelle Zeichnung Data Flow Diagramme. Datenflussdiagramme sind eine der drei wesentlichen Perspektiven der strukturierten Systemanalyse und Designmethode SSADM. Der Sponsor eines Projektes und die Endbenutzer müssen in allen Phasen einer Systementwicklung informiert und konsultiert werden. Mit einem Datenflussdiagramm können die Benutzer visualisieren, wie das System funktionieren wird, was das System durchführt und wie das System implementiert wird. Die alten Systemdatenplandiagramme können erstellt und mit den neuen Systemdatenflussdiagrammen verglichen werden, um Vergleiche zu analysieren, um ein effizienteres System zu implementieren. Datenflussdiagramme können verwendet werden, um dem Endbenutzer eine physikalische Vorstellung zu geben, wo die Daten, die sie eingeben, letztlich eine Auswirkung auf die Struktur des gesamten Systems von der Reihenfolge zum Versand zum Bericht haben. Wie ein System entwickelt wird, kann durch ein Datenflussdiagramm modelliert werden. Im Zuge der Entwicklung eines Satzes von nivellierten Datenflussdiagrammen sind die Analystendesigner gezwungen, zu adressieren, wie das System in Komponenten-Subsysteme zerlegt werden kann und um die Transaktionsdaten im Datenmodell zu identifizieren. Datenflussdiagramme können sowohl in der Analyse - als auch in der Entwurfsphase des SDLC verwendet werden. Es gibt verschiedene Notationen, um Datenflussdiagramme (Yourdon Coad und Gane Sarson) zu zeichnen und verschiedene visuelle Darstellungen für Prozesse, Datenspeicher, Datenfluss und externe Einheiten zu definieren. Datenflussdiagramm. Wikipedia Das DFD (Yourdon und Coad Notation) Beispiel Der Prozess der Forderung wurde mit der ConceptDraw PRO-Diagramm - und Vektor-Zeichnungssoftware erstellt, die mit der Data Flow Diagrams-Lösung aus dem Bereich Software Development von ConceptDraw Solution Park erweitert wurde. DatenflussdiagrammConceptDraw Samples Geschäftsprozesse Ablaufdiagramme Beispiele Geschäftsprozesse Cross-Functional Flowcharts Cross-Functional Flowcharts Geschäftsprozess-Ablaufdiagramme (Audit - und Chance-Flowcharts, Swim-Spur-Prozessdiagramme) werden mit ConceptDraw PRO-Diagramm und Vektor-Zeichnungssoftware erstellt, die mit der Business Process-Lösung von ConceptDraw erweitert wurde Lösungspark. ConceptDraw PRO bietet Export von vektorgrafischen Mehrfachdokumenten in mehrere Dateiformate: Vektorgrafiken (SVG, EMF, EPS), Bitmap-Grafiken (PNG, JPEG, GIF, BMP, TIFF), Webdokumente (HTML, PDF), PowerPoint-Präsentationen (PPT ), Adobe Flash (SWF). Tutorials und Lösungen: Beispiel 1: Cross-Functional Flowchart Bereitstellung von Telecom Services Cross-Functional Flowchart Beispiel: Bereitstellung von Telekommunikationsdiensten. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 2: Cross-Functional Flowchart Kreditgenehmigungsverfahren Cross-Functional Flowchart Beispiel: Kreditgenehmigungsverfahren. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 3: Deployment Flowchart Trading Process Diagram Deployment Flussdiagramm Beispiel: Trading Prozess Diagramm. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 4: Opportunity-Flussdiagramm Bestellabwicklung Opportunity Flussdiagramm Beispiel: Auftragsabwicklung. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 5: Swim Lane Process Mapping Diagramm Abrechnungsprozess Swim Lane Prozess Mapping Diagrammbeispiel: Abrechnungsprozess. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 6: Cross-Functional Flow Chart Dokumentenfluss Cross-Functional Flowchart Beispiel: Dokumentenfluss. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 7: Flow Chart Website Anmeldungs - und Registrierungsprozess Flow Chart Beispiel: Website Login und Registrierung Prozess. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 8: Opportunity Flowchart Austauschen von Motoröl Opportunity Flow Chart Beispiel: Motoröl austauschen. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 9: Projektmanagement Prozess-Ablaufdiagramm Cross-Functional Flowchart Beispiel: Projektmanagement Prozess-Ablaufdiagramm. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 10: Bereitstellung von Telekommunikationsdiensten Cross-Functional Flowchart-Beispiel: Bereitstellung von Telekommunikationsdiensten. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 11: Audit Flowchart Cross-Functional Flowchart Beispiel: Audit Process Flowchart. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 12: Genehmigungsverfahren Flowchart Cross-Functional Flowchart Beispiel: Genehmigungsprozess Flussdiagramm. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 13: Fahren auf ein Ziel Cross-Functional Flowchart Beispiel: Fahren zu einem Ziel. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 14: Prozeßablauf Querfunktions-Flowchartprobe: Prozeßablauf. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 15: Technisches Flowchart Cross-Functional Flowchart Beispiel: Technisches Flussdiagramm. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 16: Online Flowchart Cross-Functional Flowchart Beispiel: Online Flußdiagramm. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 17: Pass Klasse 10 Prüfung Cross-Functional Flowchart Probe: Pass Klasse 10 Prüfung. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erweitert wurde. Beispiel 18: Zulassungen Cross-Functional Flowchart Beispiel: Zulassungen. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 19: Incident Identification and Logging Cross-Functional Flowchart Beispiel: Incident Identification and Logging. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 20: Insurrection Act Flowchart Cross-Functional Flowchart Beispiel: Insurrection Act Flowchart. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 21: Investment Management Prozess Cross-Functional Flowchart Beispiel: Investment Management Prozess. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Beispiel 22: Stockbridge System Flowchart Cross-Functional Flowchart Beispiel: Stockbridge System Flowchart. Dieses Diagramm wurde in ConceptDraw PRO mit der Cross-Functional Flowchart-Bibliothek aus der Cross-Functional Flowcharts-Lösung aus dem ConceptDraw Solution Park erstellt. Alle Samples sind urheberrechtlich geschützte CS Odessas. Die Nutzung von ihnen wird durch Creative Commons Attribution Non-Commercial No Derivatives License. Interesting Anwendungen nur selten isoliert isoliert. Ob Ihre Verkaufsanwendung mit Ihrer Inventaranwendung verbunden sein muss, Ihre Beschaffungsanwendung muss sich mit einer Auktionsstelle verbinden oder Ihr PDAs PIM muss mit dem Firmenkalenderserver synchronisieren, es scheint, dass jede Anwendung besser gemacht werden kann, indem Sie sie mit anderen Anwendungen integrieren. Alle Integrationslösungen müssen sich mit einigen grundlegenden Herausforderungen auseinandersetzen: Netzwerke sind unzuverlässig. Integrationslösungen müssen Daten von einem Rechner zum anderen über Netzwerke transportieren. Im Vergleich zu einem Prozess, der auf einem einzigen Rechner läuft, muss das verteilte Computing bereit sein, mit einem viel größeren Satz möglicher Probleme umzugehen. Oftmals sind zwei zu integrierende Systeme durch Kontinente getrennt und Daten zwischen ihnen müssen über Telefonleitungen, LAN-Segmente, Router, Switches, öffentliche Netzwerke und Satellitenverbindungen reisen. Jeder dieser Schritte kann zu Verzögerungen oder Unterbrechungen führen. Netzwerke sind langsam. Das Senden von Daten über ein Netzwerk ist vielfacher Größenordnungen langsamer als ein lokaler Methodenaufruf. Entwerfen einer weit verbreiteten Lösung auf die gleiche Weise, die Sie einer einzigen Anwendung nähern könnten, könnte katastrophale Auswirkungen auf die Leistung haben. Alle zwei Anwendungen sind unterschiedlich. Integrationslösungen müssen Informationen zwischen Systemen übertragen, die unterschiedliche Programmiersprachen, Bedienplattformen und Datenformate verwenden. Eine Integrationslösung muss in der Lage sein, sich mit all diesen verschiedenen Technologien zu vernetzen. Veränderung ist unvermeidlich. Anwendungen ändern sich im Laufe der Zeit. Eine Integrationslösung muss mit Änderungen in den Anwendungen, die es verbindet, Schritt halten. Integrationslösungen können problemlos in einem Lawineneffekt von Änderungen erwischt werden, wenn sich ein System ändert, alle anderen Systeme betroffen sein können. Eine Integrationslösung muss die Abhängigkeiten von einem System zum anderen minimieren, indem eine lose Kopplung zwischen Anwendungen verwendet wird. Im Laufe der Zeit haben die Entwickler diese Herausforderungen mit vier Hauptansätzen überwunden: File Transfer Eine Anwendung schreibt eine Datei, die ein anderer später liest. Die Anwendungen müssen sich auf den Dateinamen und den Ort, das Format der Datei, das Timing von, wenn es geschrieben und gelesen wird, und wer wird die Datei löschen zu vereinbaren. Shared Database Mehrere Anwendungen teilen sich das gleiche Datenbankschema, das sich in einer einzigen physischen Datenbank befindet. Da es keine doppelte Datenspeicherung gibt, müssen keine Daten von einer Anwendung auf die andere übertragen werden. Remote-Prozedur-Aufruf Eine Anwendung stellt einige ihrer Funktionalität bereit, so dass sie von anderen Anwendungen als Remote-Prozedur remote abgerufen werden kann. Die Kommunikation erfolgt in Echtzeit und synchron. Messaging Eine Anwendung veröffentlicht eine Nachricht an einen gemeinsamen Nachrichtenkanal. Andere Anwendungen können die Nachricht aus dem Kanal zu einem späteren Zeitpunkt lesen. Die Applikationen müssen sich auf einen Kanal sowie das Format der Nachricht einigen. Die Kommunikation ist asynchron. Während alle vier Ansätze im Wesentlichen das gleiche Problem lösen, hat jeder Stil seine deutlichen Vor - und Nachteile. In der Tat können Anwendungen integrieren mit mehreren Stilen, so dass jeder Punkt der Integration nutzt den Stil, der es am besten passt. Was ist Messaging Dieses Buch ist über die Verwendung von Messaging, um Anwendungen zu integrieren. Ein einfacher Weg zu verstehen, was Messaging ist, um die Telefonanlage zu betrachten. Ein Telefonanruf ist eine synchrone Form der Kommunikation. Ich kann nur mit der anderen Partei kommunizieren, wenn die andere Partei zur Verfügung steht, wenn ich den Anruf richte. Voicemail auf der anderen Seite, ermöglicht asynchrone Kommunikation. Mit Voicemail, wenn der Receiver nicht antwortet, kann der Anrufer ihm eine Nachricht hinterlassen, so dass der Empfänger (an seiner Bequemlichkeit) die Nachrichten in seinem Briefkasten abhören kann. Voicemail ermöglicht es dem Anrufer, jetzt eine Nachricht zu hinterlassen, damit der Empfänger es später anhören kann, was viel einfacher ist als der Versuch, den Anrufer und den Hörer gleichzeitig am Telefon zu bekommen. Voice Mail Bündel (zumindest ein Teil) eines Anrufs in eine Nachricht und Warteschlangen es für späteren Verbrauch Dies ist im Wesentlichen, wie Messaging funktioniert. Messaging ist eine Technologie, die eine schnelle, asynchrone Programm-zu-Programm-Kommunikation mit zuverlässiger Lieferung ermöglicht. Programme kommunizieren, indem sie Pakete von Daten senden, die mit der Nachricht s bezeichnet werden. Kanal s, auch bekannt als Warteschlangen, sind logische Pfade, die die Programme verbinden und Nachrichten vermitteln. Ein Kanal verhält sich wie eine Sammlung oder ein Array von Nachrichten, aber eine, die magisch über mehrere Computer freigegeben wird und gleichzeitig von mehreren Anwendungen verwendet werden kann. Ein Absender oder Produzent ist ein Programm, das eine Nachricht sendet, indem er die Nachricht an einen Kanal schreibt. Ein Empfänger oder Verbraucher ist ein Programm, das eine Nachricht durch Lesen (und Löschen) von einem Kanal empfängt. Die Nachricht selbst ist einfach eine Art von Datenstrukturen wie ein String, ein Byte-Array, ein Datensatz oder ein Objekt. Es kann einfach als Daten interpretiert werden, wie die Beschreibung eines Befehls, der auf dem Empfänger aufgerufen werden soll, oder als die Beschreibung eines Ereignisses, das im Absender aufgetreten ist. Eine Nachricht enthält tatsächlich zwei Teile, einen Header und einen Körper. Der Header enthält Meta-Informationen über die Nachricht, die es gesendet hat, wo sein Gehen usw. Diese Information wird vom Messaging-System verwendet und wird meistens (aber nicht immer) von den Anwendungen mit den Nachrichten ignoriert. Der Körper enthält die übermittelten Daten und wird vom Messaging-System ignoriert. Im Gespräch, wenn ein Anwendungsentwickler, der Messaging verwendet, über eine Nachricht spricht, hes in der Regel bezieht sich auf die Daten im Körper der Nachricht. Asynchrone Messaging-Architekturen sind mächtig, aber erfordern uns, unseren Entwicklungsansatz zu überdenken. Im Vergleich zu den anderen drei Integrationsansätzen hatten relativ wenige Entwickler Exposition gegenüber Messaging - und Message-Systemen. Infolgedessen sind Anwendungsentwickler im Allgemeinen nicht so vertraut mit den Redewendungen und Besonderheiten dieser Kommunikationsplattform. Was ist ein Messaging-System Messaging-Funktionen werden in der Regel von einem separaten Software-System namens Messaging-System oder Message-orientierte Middleware (MOM) zur Verfügung gestellt. Ein Messaging-System verwaltet Messaging, wie ein Datenbanksystem die Datenpersistenz verwaltet. So wie ein Administrator die Datenbank mit dem Schema für eine Anwendungsdaten füllen muss, muss ein Administrator das Messaging-System mit den Kanälen konfigurieren, die die Kommunikationswege zwischen den Anwendungen definieren. Das Messaging-System koordiniert und verwaltet das Senden und Empfangen von Nachrichten. Der Hauptzweck einer Datenbank ist es, sicherzustellen, dass jeder Datensatz sicher beharrt ist, und ebenso die Hauptaufgabe eines Messaging-Systems ist es, Nachrichten vom Senderscomputer auf den Empfängercomputer zuverlässig zu verschieben. Der Grund, warum ein Messaging-System benötigt wird, um Nachrichten von einem Computer zu einem anderen zu verschieben, ist, dass Computer und die Netzwerke, die sie verbinden, inhärent unzuverlässig sind. Nur weil eine Anwendung bereit ist, eine Kommunikation zu senden, bedeutet das nicht, dass die andere Anwendung bereit ist, sie zu empfangen. Auch wenn beide Anwendungen fertig sind, funktioniert das Netzwerk möglicherweise nicht oder kann die Daten nicht ordnungsgemäß übertragen. Ein Messaging-System überwindet diese Einschränkungen durch wiederholtes Versuchen, die Nachricht zu übertragen, bis es gelingt. Unter idealen Umständen wird die Nachricht beim ersten Versuch erfolgreich übertragen, aber die Umstände sind oft nicht ideal. Im Wesentlichen wird eine Nachricht in fünf Schritten übertragen: Erstellen Der Absender erstellt die Nachricht und füllt sie mit Daten. Senden Der Absender fügt die Nachricht zu einem Kanal hinzu. Liefern Das Messaging-System verschiebt die Nachricht vom Senderscomputer zum Empfängercomputer und stellt sie dem Empfänger zur Verfügung. Empfangen Der Empfänger liest die Nachricht aus dem Kanal. Prozess Der Empfänger extrahiert die Daten aus der Nachricht. Dieses Diagramm veranschaulicht diese fünf Übertragungsschritte, die der Computer durchführt und welche Schritte das Messaging-System beinhalten: Meldungsübertragung Schritt für Schritt Dieses Diagramm veranschaulicht auch zwei wichtige Messaging-Konzepte: Senden und vergessen In Schritt 2 sendet die Sendeanwendung die Nachricht Zum Nachrichtenkanal. Sobald diese Sendung abgeschlossen ist, kann der Absender auf andere Arbeiten gehen, während das Messaging-System die Nachricht im Hintergrund überträgt. Der Absender kann zuversichtlich sein, dass der Empfänger schließlich die Nachricht erhält und muss nicht warten, bis das passiert. Speichern und weiterleiten In Schritt 2, wenn die sendende Anwendung die Nachricht an den Nachrichtenkanal sendet, speichert das Messaging-System die Nachricht auf dem Senderscomputer, entweder im Speicher oder auf der Festplatte. In Schritt 3 liefert das Messaging-System die Nachricht, indem es es vom Senderscomputer an den Empfängercomputer weiterleitet und dann die Nachricht erneut auf dem Empfängercomputer speichert. Dieser Store-and-Forward-Prozess kann viele Male wiederholt werden, da die Nachricht von einem Computer zum anderen verschoben wird, bis er den Empfängercomputer erreicht. Das Erstellen, Senden, Empfangen und Verarbeiten von Schritten kann wie unnötiger Overhead erscheinen. Warum nicht einfach die Daten an den Empfänger übergeben Um die Daten als Nachricht zu verpacken und im Messaging-System zu speichern, delegieren die Applikationen das Messaging-System in die Verantwortung, die Daten zu liefern. Da die Daten als atomare Nachricht verpackt werden, kann die Lieferung wiederholt werden, bis es erfolgreich ist und der Empfänger kann sichergestellt werden, zuverlässig genau eine Kopie der Daten zu empfangen. Warum Messaging verwenden Nun, da wir wissen, was Messaging ist, sollten wir fragen: Warum Messaging verwenden Wie bei jeder anspruchsvollen Lösung gibt es keine einfache Antwort. Die schnelle Antwort ist, dass Messaging ist unmittelbarer als File Transfer. Besser verkapselt als Shared Database. Und zuverlässiger als Remote Procedure Invocation. Allerdings ist das nur der Anfang der Vorteile, die mit Messaging gewonnen werden können. Besondere Vorteile von Messaging sind: Remote Communication. Mit Messaging können separate Anwendungen kommunizieren und Daten übertragen. Zwei Objekte, die sich in demselben Prozess befinden, können einfach dieselben Daten im Speicher teilen. Das Senden von Daten an einen anderen Computer ist viel komplizierter und erfordert, dass Daten von einem Computer zum anderen kopiert werden. Dies bedeutet, dass Objekte serialisierbar sind, d. h. sie können in einen einfachen Byte-Stream umgewandelt werden, der über das Netzwerk gesendet werden kann. Wenn keine Fernkommunikation benötigt wird, wird kein Messaging benötigt. Eine einfachere Lösung wie gleichzeitige Sammlungen oder Shared Memory ist ausreichend. PlatformLanguage Integration. Beim Verbinden mehrerer Computersysteme über die Fernkommunikation nutzen diese Systeme wahrscheinlich unterschiedliche Sprachen, Technologien und Plattformen, vielleicht weil sie im Laufe der Zeit von unabhängigen Teams entwickelt wurden. Die Integration solcher divergenten Anwendungen kann eine entmilitarisierte Zone von Middleware erfordern, um zwischen den Anwendungen zu verhandeln, wobei oft die kleinsten gemeinsamen Nenner wie flache Datendateien mit obskuren Formaten verwendet werden. Unter diesen Umständen kann ein Messaging-System ein universeller Übersetzer zwischen den Anwendungen sein, die mit jeder Sprache und Plattform auf eigene Begriffe arbeiten, aber dennoch können sie alle über ein gemeinsames Messaging-Paradigma kommunizieren. Diese universelle Konnektivität ist das Herz des Message Bus Patterns. Asynchrone Kommunikation. Messaging ermöglicht einen Sende - und Forget-Ansatz zur Kommunikation. Der Absender muss nicht warten, bis der Empfänger die Nachricht empfängt und verarbeitet, dass er nicht einmal auf das Messaging-System warten muss, um die Nachricht zu übermitteln. Der Absender muss nur darauf warten, dass die Nachricht gesendet wird, z. B. Damit die Nachricht erfolgreich vom Messaging-System im Kanal gespeichert werden kann. Sobald die Nachricht gespeichert ist, ist der Absender dann frei, andere Arbeiten auszuführen, während die Nachricht im Hintergrund übertragen wird. Der Empfänger kann eine Bestätigung oder ein Ergebnis zurück an den Absender senden, der eine andere Nachricht benötigt, deren Zustellung durch einen Rückrufmechanismus am Absender erkannt werden muss. Variable Zeitsteuerung. Bei synchroner Kommunikation muss der Anrufer warten, bis der Empfänger die Bearbeitung des Anrufs beendet hat, bevor der Anrufer das Ergebnis empfangen und fortfahren kann. Auf diese Weise kann der Anrufer nur so schnell telefonieren, wie der Empfänger sie ausführen kann. Auf der anderen Seite erlaubt die asynchrone Kommunikation dem Absender, Anfragen an den Empfänger in seinem eigenen Tempo zu binden und für den Empfänger die Anfragen in seinem eigenen unterschiedlichen Tempo zu verbrauchen. Dies ermöglicht es, dass beide Anwendungen mit maximalem Durchsatz laufen und keine Zeit vergeuden, die aufeinander warten (zumindest bis der Empfänger keine Nachrichten verarbeitet). Drosselung. Ein Problem bei Fernprozeduraufrufen ist, dass zu viele von ihnen auf einem einzigen Empfänger gleichzeitig den Empfänger überladen können. Dies kann zu einer Leistungsverschlechterung führen und sogar dazu führen, dass der Empfänger abstürzt. Die asynchrone Kommunikation ermöglicht es dem Empfänger, die Rate zu steuern, mit der er Anfragen verbraucht, um nicht zu viele gleichzeitige Anfragen überladen zu werden. Die nachteilige Auswirkung auf die durch diese Drosselung verursachten Anrufer wird minimiert, da die Kommunikation asynchron ist, so dass die Anrufer nicht auf den Empfänger gesperrt sind. Zuverlässige Kommunikation. Messaging bietet zuverlässige Lieferung, die ein Remoteprozeduraufruf (RPC) nicht kann. Der Grund-Messaging ist zuverlässiger als RPC ist, dass Messaging einen Speicher und Vorwärts-Ansatz für die Übertragung von Nachrichten verwendet. Die Daten werden als Nachrichten verpackt, die atomare, unabhängige Einheiten sind. Wenn der Absender eine Nachricht sendet, speichert das Messaging-System die Nachricht. Er liefert dann die Nachricht, indem er sie an den Empfängercomputer weiterleitet, wo er wieder gespeichert wird. Das Speichern der Nachricht auf dem Senderscomputer und dem Empfängercomputer wird als zuverlässig angenommen. (Um es noch zuverlässiger zu machen, können die Nachrichten auf der Festplatte gespeichert werden, anstatt Speicher siehe Garantierte Lieferung.) Was ist unzuverlässig ist die Weiterleitung (Verschieben) der Nachricht vom Senderscomputer zum Empfängercomputer, da der Empfänger oder das Netzwerk nicht möglich ist Ordentlich laufen Das Messaging-System überwindet dies, indem es die Nachricht erneut sendet, bis es gelingt. Diese automatische Wiederholung ermöglicht es dem Messaging-System, Probleme mit dem Netzwerk zu überwinden, so dass der Sender und der Empfänger nicht über diese Details sorgen müssen. Getrennter Betrieb. Einige Anwendungen sind speziell entworfen, um die Verbindung vom Netzwerk auszuführen, und dennoch mit Servern zu synchronisieren, wenn eine Netzwerkverbindung verfügbar ist. Solche Anwendungen werden auf Plattformen wie Laptop-Computern, PDAs und Automobil-Dashboards eingesetzt. Messaging ist ideal, um diese Anwendungen zu synchronisieren, die synchronisiert werden können, können in die Warteschlange eingereiht werden, wie es erstellt wird, warten, bis die Anwendung wieder mit dem Netzwerk verbunden ist. Vermittlung. The messaging system acts as a mediatoras in the Mediator pattern GoF between all of the programs that can send and receive messages. An application can use it as a directory of other applications or services available to integrate with. If an application becomes disconnected from the others, it need only reconnect to the messaging system, not to all of the other messaging applications. The messaging system can be used to provide a high number of distributed connections to a shared resource, such as a database. The messaging system can employ redundant resources to provide high-availability, balance load, reroute around failed network connections, and tune performance and quality of service. Thread Management. Asynchronous communication means that one application does not have to block while waiting for another application to perform a task, unless it wants to. Rather than blocking to wait for a reply, the caller can use a callback that will alert the caller when the reply arrives. (See the Request-Reply pattern.) A large number of blocked threads, or threads blocked for a long time, can be problematic. Too many blocked threads may leave the application with too few available threads to perform real work. If an application with some dynamic number of blocked threads crashes, when the application restarts and recovers its former state, re-establishing those threads will be difficult. With callbacks, the only threads that block are a small, known number of listeners waiting for replies. This leaves most threads available for other work and defines a known number of listener threads that can easily be re-established after a crash. So there are a number of different reasons an application or enterprise may benefit from messaging. Some of these are technical details that application developers relate most readily to, whereas others are strategic decisions that resonate best with enterprise architects. Which of these reasons is most important depends on the current requirements of your particular applications. Theyre all good reasons to use messaging, so take advantage of whichever reasons provide the most benefit to you. Challenges of Asynchronous Messaging Asynchronous messaging is not the panacea of integration. It resolves many of the challenges of integrating disparate systems in an elegant way but it also introduces new challenges. Some of these challenges are inherent in the asynchronous model while other challenges vary with the specific implementation of a messaging system. Complex programming model. Asynchronous messaging requires developers to work with an event-driven programming model. Application logic can no longer be coded in a single method that invokes other methods, but the logic is now split up into a number of event handlers that respond to incoming messages. Such a system is more complex and harder to develop and debug. For example, the equivalent of a simple method call can require a request message and a request channel, a reply message and a reply channel, a correlation identifier and an invalid message queue (as described in Request-Reply ). Sequence issues. Message channels guarantee message delivery, but they do not guarantee when the message will be delivered. This can cause messages that are sent in sequence to get out of sequence. In situations where messages depend on each other special care has to be taken to re-establish the message sequence. Synchronous scenarios. Not all applications can operate in a send and forget mode. If a user is looking for airline tickets, he or she is going to want to see the ticket price right away, not after some undetermined time. Therefore, many messaging systems need to bridge the gap between synchronous and asynchronous solutions. (See the Request-Reply pattern.) Performance. Messaging systems do add some overhead to communication. It takes effort to make data into a message and send it, and to receive a message and process it. If you have to transport a huge chunk of data, dividing it into a gazillion small pieces may not be a smart idea. For example, if an integration solution needs to synchronize information between two existing systems, the first step is usually to replicate all relevant information from one system to the other. For such a bulk data replication step, ETL (extract, transform, and load) tools are much more efficient than messaging. Messaging is best suited to keeping the systems in sync after the initial data replication. Limited platform support. Many proprietary messaging systems are not available on all platforms. Often times it is easier to FTP a file to another platform than accessing it via a messaging system. Vendor lock-in. Many messaging system implementations rely on proprietary protocols. Even common messaging specifications such as JMS do not control the physical implementation of the solution. As a result, different messaging systems usually do not connect to one another. This can leave you with a whole new integration challenge: integrating multiple integration solutions (See the Messaging Bridge pattern.) So asynchronous messaging does not solve all problems, and can even create some new ones. Keep these consequences in mind when deciding which problems to solve using messaging. Thinking Asynchronously Messaging is an asynchronous technology, which enables delivery to be retried until it succeeds. In contrast, most applications use synchronous function calls for example: a procedure calling a sub-procedure, one method calling another method, or one procedure invoking another remotely through a remote procedure call (RPC) (such as CORBA and DCOM). Synchronous calls imply that the calling process is halted while the sub-process is executing a function. Even in an RPC scenario, where the called sub-procedure executes in a different process, the caller blocks until the sub-procedure returns control (and the results) to the caller. When using asynchronous messaging, the caller uses a send and forget approach that allows it to continue to execute after it sends the message. As a result, the calling procedure continues to run while the sub-procedure is being invoked. Synchronous and Asynchronous Call Semantics Asynchronous communication has a number of implications. First, we no longer have a single thread of execution. Multiple threads enable sub-procedures to run concurrently, which can greatly improve performance and help ensure that some sub-processes are making progress even while other sub-processes may be waiting for external results. However, concurrent threads can also make debugging much more difficult. Second, results (if any) arrive via a callback. This enables the caller to perform other tasks and be notified when the result is available, which can improve performance. However, the caller has to be able to process the result even while it is in the middle of other tasks, and it has to be able to use the result to remember the context in which the call was made. Third, asynchronous sub-processes can execute in any order. Again, this enables one sub-procedure to make progress even while another cannot. But it also means that the subprocesses must be able to run independently in any order, and the caller must be able to determine which result came from which sub-process and combine the results together. So asynchronous communication has several advantages but requires rethinking how a procedure uses its sub-procedures. Distributed Applications vs. Integration This book is about enterprise integrationhow to integrate independent applications so that they can work together. An enterprise application often incorporates an n-tier architecture (a more sophisticated version of a clientserver architecture) enabling it to be distributed across several computers. Even though this results in processes on different machines communicating with each other, this is application distribution, not application integration. Why is an n-tier architecture considered application distribution and not application integration First, the communicating parts are tightly coupledthey dependent directly on each other, so that one tier cannot function without the others. Second, communication between tiers tends to be synchronous. Third, an application (n-tier or atomic) tends to have human users that will only accept rapid system response. In contrast, integrated applications are independent applications that can each run by itself, but coordinate with each other in a loosely coupled way. This enables each application to focus on one comprehensive set of functionality and yet delegate to other applications for related functionality. Integrated applications communicating asynchronously dont have to wait for a response they can proceed without a response or perform other tasks concurrently until the response is available. Integrated applications tend to have a broad time constraint, such that they can work on other tasks until a result becomes available, and therefore are more patient than most human users waiting real-time for a result. Commercial Messaging Systems The apparent benefits of integrating systems using an asynchronous messaging solution have opened up a significant market for software vendors creating messaging middleware and associated tools. We can roughly group the messaging vendors products into the following four categories: Operating Systems. Messaging has become such a common need that vendors have started to integrate the necessary software infrastructure into the operating system or database platform. For example, the Microsoft Windows 2000 and Windows XP operating systems include the Microsoft Message Queuing (MSMQ) service software. This service is accessible through a number of APIs, including COM components and the System. Messaging namespace, part of the Microsoft platform. Similarly, Oracle offers Oracle AQ as part of its database platform. Application Servers. Sun Microsystems first incorporated the Java Messaging Service (JMS) into version 1.2 of the J2EE specification. Since then, virtually all J2EE application servers (such as IBM WebSphere, BEA WebLogic, etc.) provide an implementation for this specification. Also, Sun delivers a JMS reference implementation with the J2EE JDK. EAI Suites. Products from these vendors offer proprietarybut functionally richsuites that encompass messaging, business process automation, workflow, portals, and other functions. Key players in this marketplace are IBM WebSphere MQ, Microsoft BizTalk, TIBCO, WebMethods, SeeBeyond, Vitria, CrossWorlds, and others. Many of these products include JMS as one of the many client APIs they support, while other vendorssuch as SonicSoftware and Fioranofocus primarily on implementing JMS-compliant messaging infrastructures. Web Services Toolkits. Web services have garnered a lot of interest in the enterprise integration communities. Standards bodies and consortia are actively working on standardizing reliable message delivery over web services (i. e. WS-Reliability, WS-ReliableMessaging, and ebMS). A growing number of vendors offer tools that implement routing, transformation, and management of web services-based solutions. The patterns in this book are vendor-independent and apply to most messaging solutions. Unfortunately, each vendor tends to define their own terminology when describing messaging solutions. In this book we have striven to choose pattern names that are technology - and product-neutral, yet descriptive and easy to use conversationally. Many messaging vendors have incorporated some of this books patterns as features of their products, which simplifies applying the patterns and accelerates solution development. Readers who are familiar with a particular vendors terminology will most likely recognize many of the concepts in this book. To help these readers map the pattern language to the vendor-specific terminology, the following tables map the most common pattern names to their corresponding product feature names in some of the most widely-used messaging products. Enterprise Integration Patterns Java Message Service (JMS) Pattern Form This book is structured as a set of patterns organized into a pattern language. Books such as Design Patterns . Pattern Oriented Software Architecture . Core J2EE Patterns . and Patterns of Enterprise Application Architecture have popularized the concept of using patterns to document computer-programming techniques. Christopher Alexander pioneered the concept of patterns and pattern languages in his books A Pattern Language and A Timeless Way of Building . Each pattern represents a decision that the reader must make and the considerations that go into that decision. A pattern language is a web of related patterns where each pattern leads to others, guiding the reader through the decision making process. This approach is a powerful technique for documenting an experts knowledge so that it can be readily understood and applied by non-experts. A pattern language teaches the reader how to solve a limitless variety of problems within a bounded problem space. Because the overall problem that is being solved is different every time, the path through the patterns and how theyre applied is also unique. In this way, this book was written for anyone using any messaging tools for any application, but can be applied specifically for you and the specific application of messaging that you are facing. Just using the pattern form does not guarantee that a book contains a wealth of knowledge. It is not just enough to simply say, When you face this problem, apply this solution. For a reader to truly learn from a pattern, it has to document why the problem is difficult to solve, consider possible solutions that in fact dont work well, and explain why the solution offered is the best available. Likewise, the patterns need to connect to each other so as to walk the reader from one problem to the next. In this way, the pattern form can be used to teach the reader not just what solutions to apply, but how to solve problems the author could not have predicted. These are goals we strive to accomplish in this book. Patterns should be prescriptive, meaning that they should tell you what to do. They dont just describe a problem, and they dont just describe how to solve it, they tell you what to do to solve it. Each pattern represents a decision the reader must make: Should I use Messaging Would a Reply Message help me here The point of the patterns and the pattern language is to help the reader make decisions that lead to a good solution for his specific problem, even if the authors didnt have that specific problem in mind, and even if the reader doesnt have the knowledge and experience to develop that solution on his own. There is no one universal pattern form different books use various structures. We used a style that is fairly close to the Alexandrian form, which was first popularized for computer programming in Smalltalk Best Practice Patterns by Kent Beck. We like the Alexandrian form because it results in patterns that are more prose-like. As a result, even though each pattern follows an identical, well-defined structure, the format avoids headings for each individual sub-section, which disrupt the flow of the discussion. To improve navigability, the format uses style elements such as bolding, indentation, and pictures to help the reader identify important sections even at a quick glance. This pattern language uses the following pattern structure: Name This is an identifier for the pattern that indicates what the pattern does. We chose names that can easily be used in a sentence that describes applying the pattern so that it is easy to reference the patterns concept in a conversation between designers. Icon Many patterns are associated with an icon in addition to the pattern name. Because many architects are used to communicating visually by using diagrams, we wanted to provide a visual language in addition to the verbal language. This visual language underlines the composability of the patterns as multiple pattern icons can be combined to describe the solution of a larger, more complex pattern. Context This explains what you might be working on that would make you likely to run into the problem that this pattern solves. The context sets the stage for the problem and often refers to other patterns you may have already applied. Problem This explains the difficulty you are facing, expressed as a question youre asking yourself, which this pattern solves. You should be able to read the problem statement and quickly determine if this pattern is relevant to your work. Weve formatted the problem to be one sentence, bold and indented. Forces The forces explore the constraints that make the problem difficult to solve. If it were easy, you wouldnt need a pattern. They often consider alternative solutions that seem promising but dont pan out, which helps show the value of the real solution. Solution This is a template that explains what you should do to solve the problem. It is not specific to your particular circumstances, but describes what to do in the variety of circumstances represented by the problem. If you understand a patterns problem and solution, you understand the pattern and dont necessarily need to read the other sections. Weve formatted the solution to be one sentence, bold and indented. Sketch One of the most appealing properties of the Alexandrian form is that each pattern contains a sketch that illustrates the solution. In many cases, just by looking at the pattern name and the sketch you can understand the essence of the pattern. We tried to maintain this style by inserting a solution picture, or sketch, after the solution statement of each pattern. Results This part expands upon the solution to explain the details of how to apply the solution and how it resolves the forces. It also addresses new challenges that may arise as a result of applying this pattern. Next This section lists other patterns to be considered after applying the current one. Patterns dont live in isolation the application of one pattern usually leads you to new problems that are solved by other patterns. This is what makes the collection a pattern language and not just a pattern catalog. Sidebars These sections discuss more detailed technical issues or variations of the pattern. We set these sections visually apart from the remainder of the text so you can easily skip them if they are not be relevant to your particular application of the pattern. Examples A pattern usually includes one or more examples of the pattern being applied or having been applied. An example may be as simple as naming a known use or as detailed as a large segment of sample code. Given the large number of available messaging technologies, we do not expect readers to be familiar with each technology used to implement an example. Therefore, we designed the patterns so that you can safely skip the example without loosing any critical content of the pattern. The beauty in describing solutions as patterns is that it not only teaches the reader how to solve the specific problems discussed, but also how to create designs that solve problems the authors were not even aware of. As a result, these patterns for messaging describe not only messaging systems that exist today, but may also apply to new ones created well after this book is published. Diagram Notation Integration solutions consist of many different piecesapplications, databases, endpoints, channels, messages, routers, etc. If we want to describe an integration solution, we need to define a notation that accommodates all these different components. To our knowledge, there is no widely used, comprehensive notation that is geared towards the description of all aspects of an integration solution. The Unified Modeling Language (UML) does a fine job of describing object-oriented systems with class and interaction diagrams, but it does not contain semantics to describe messaging solutions. The UML Profile for EAI UMLEAI enriches the semantics of collaboration diagrams to describe message flows between components. This notation is very useful as a precise visual description of a system that can serve as the basis for code generation as part of a model-driven architecture (MDA). We decided not to adopt this notation for two reasons. First, the UML Profile does not capture all the patterns described in our pattern language. Second, we were not looking to create a precise visual specification, but images that have a certain sketch quality to them. We wanted pictures that are able to convey the essence of a pattern to the reader at a quick glancevery much like Alexanders sketch . Thats why we decided to create our own notation. Luckily, unlike the more formal notation, ours does not require you to read a large manual. A simple picture should suffice: Visual Notation for Messaging Solutions This simple picture shows a message being sent to a component over a channel. We use the word component very loosely hereit can indicate an application that is being integrated, an intermediary that transforms or routes the message between applications, or a specific part of an application. Sometimes, we also depict a channel as a three-dimensional pipe if we want to highlight the channel itself. Often times we are more interested in the components and draw the channels as simple lines with arrow heads. The two notations are equivalent. We depict the message as a small tree with a round root and nested, square elements. The tree elements can be shaded or colored to highlight their usage in a particular pattern. Many messaging systems allow messages to contain tree-like data structures, for example XML documents. Also, depicting messages in this way allows us to provide a quick visual description of transformation patternsit will be easy to show a pattern that adds, re-arranges or removes fields from the message. When we describe application designsfor example, messaging endpoints or examples written in C or Javawe do use standard UML class and sequence diagrams to depict the class hierarchy and the interaction between objects. The UML notation is widely accepted as the standard way of describing these types of solutions (if you need a refresher on UML, have a look at UML ). Examples and Interludes We have tried to underline the broad applicability of the patterns by including implementation examples using a variety of integration technologies. The potential downside of this approach is that you may not be familiar with each technology that is being used in an example. Thats why we made sure that reading the examples is strictly optional all relevant points are discussed in the pattern description. Therefore, you can safely skip the examples without risk of losing out on important detail. Also, where possible, we provided more than one implementation example using different technologies. When presenting example code we focused on readability over runnability. A code segment can help remove any potential ambiguity left by the solution description and many application developers and architects prefer looking at 30 lines of code as opposed to reading many paragraphs of text. To support this intent we often only show the most relevant methods or classes of a potentially larger solution. We also omitted most forms of error checking to highlight the core function implemented by the code. Most code snippets do not contain in-line comments as the code is explained in the paragraphs before and after the code segment. Providing a meaningful example for a single integration pattern is challenging. Enterprise integration solutions typically consist of a number of heterogeneous components, spread across multiple systems. Likewise, most integration patterns do not operate in isolation but rely on other patterns to form a meaningful solution. To highlight the collaboration between multiple patterns we included more comprehensive examples as interludes at the end of the major sections of the book. These solutions illustrate many of the trade-offs involved in designing a more comprehensive messaging solution. All code samples should be treated as illustrative tools only and not as a starting point for development of an integration solution. For example, almost all examples lack any form of error checking or concern for robustness, security, or scalability. We tried as much as possible to base the examples on software platforms that are available free of charge or as a trial version. In some cases, we used commercial platforms (such as TIBCO ActiveEnterprise or Microsoft BizTalk) to illustrate the difference between developing a solution from scratch and using a commercial tool. We presented those example in such a way that they are educational even if you do not have access to the required run-time platform. For many examples, we use relatively bare-bones messaging frameworks such as JMS or MSMQ. This allows us to be more explicit in the example and focus on the problem at hand instead of distracting from it with all the features a more complex middleware toolset may provide. The Java examples in this book are based on the JMS 1.1 specification, which is part of the J2EE 1.4 specification. By the time this book is published, most messaging and application server vendors will support JMS 1.1. You can download Suns reference implementation of the JMS specification from Suns Web site: java. sunj2ee . The Microsoft examples are based on Version 1.1 of the Framework and are written in C. You can download the Framework SDK from Microsofts Web site: msdn. microsoftnet . Organization of this Book The pattern language in this book, as with any pattern language, is a web of patterns referring to each other. At the same time, some patterns are more fundamental than others, forming a hierarchy of big-concept patterns that lead to finer-detailed patterns. The big-concept patterns form the load-baring members of the pattern language. They are the main ones, what we term root patterns . that provide the foundation of the language and support the other patterns. This book groups patterns into chapters by level-of-abstraction and by topic area. The following diagram shows the root patterns and their relationship to the chapters of the book. Relationship of Root Patterns and Chapters The most fundamental pattern is Messaging thats what this whole book is about. It leads to the six root patternswhich are in the Messaging Systems chapternamely Message Channel . Message . Pipes and Filters . Message Router . Message Translator . and Message Endpoint . In turn, each of these root patterns leads to its own chapter in the book (except Pipes and Filters . which is not specific to messaging but is the basis of the routing and transformation patterns). The pattern language is divided into eight chapters, which follow the hierarchy described above: Chapter 1: Integration Styles This chapter reviews the different approaches available for integrating applications, including Messaging . Chapter 2: Messaging Systems This chapter reviews the six root messaging patterns, giving an overview of the entire pattern language. Chapter 3: Messaging Channels Applications communicate via channels. Channels define the logical pathways a message can follow. This chapter shows how to determine what channels your applications need. Chapter 4: Message Construction Once you have message channels, you need messages to send on them. This chapter explains the different ways messages can be used and how to take advantage of their special properties. Chapter 5: Message Routing As a messaging topography becomes more complex, senders know less and less about who should receive their messages. Rather, they send the messages to intermediate applications that send them to others until the messages finally find their way to their final destination. This chapter teaches you the responsibilities of these routing applications. Chapter 6: Message Transformation Independently developed applications often dont agree on messages formats, on the form and meaning of supposedly unique identifiers, and even the character encoding to be used. Therefore, intermediate components are needed to convert messages from the form one application produced to that which other applications will consume. This chapter shows how to design these transformer applications. Chapter 7: Messaging Endpoints Many applications were not designed to participate in a messaging solution. As a result, they must be explicitly connected to the messaging system. This section describes a messaging layer in the applications that is responsible for sending and receiving the messages, making your application an endpoint for messages. Chapter 8: System Management Once we have a messaging system in place to integrate our applications, how do we make sure that its running correctly and doing what we want This chapter explores how to test and monitor a running messaging system. These eight chapters go together to teach you what you need to know about connecting applications using messaging. Getting Started With any book that has a lot to teach, its hard to know where to start, both for the authors and the readers. Reading all of the pages straight through assures covering the entire subject area, but isnt the quickest way to get to the issues that are of the most help. Starting with a pattern in the middle of the language can be like starting to watch a movie thats half over you see whats happening but dont understand what it means. Luckily, the pattern language is formed around root patterns (as described earlier). These root patterns collectively provide an overview of the pattern language, and individually provide starting points for delving deep into the details of messaging. To get an overall survey of the language without reviewing all of the patterns, start with reviewing the root patterns. To jump into the middle of the language, jump in at a root pattern, a place where the language has finished discussing one major topic and is now starting another. Chapter 1: Integration Styles provides an overview of the four main application integration techniques and settles on Messaging as being the best overall for many integration opportunities. Read this chapter if you are unfamiliar with issues involved in application integration and the pros and cons of the various approaches that are available. If you just want to know whats so great about messaging, go straight to that pattern. If youre already convinced that messaging is the way to go and want to get started with how to use messaging, you can skip the first chapter completely. Chapter 2: Messaging Systems contains all of this pattern languages root patterns (except Messaging . which is in the first chapter). For an overview of the pattern language, read (or at least skim) all of the patterns in this chapter. To dive deep on a particular topic, read its root pattern, then go to the patterns mentioned in its next section at the end of the pattern those next patterns will all be in a chapter named after the root pattern. The root patterns in this language are: Messaging This is the 1 root pattern for the entire book: What is messaging, what problem does it solve, and how does it solve it Message Channel What is the structure in a messaging system that conveys messages from the sender to the receiver How do you know which ones your applications need Message How does information get communicated from a sender to a receiver Pipes and Filters How can intermediate steps be performed after a message is sent but before it is received Message Router If the sender does not know ultimately where the message should go, how can the messaging system get it there Message Translator If the sender and receiver do not agree on the message format, how can they communicate Message Endpoint How do the applications that send and receive messages connect to the messaging system After the first two chapters, different types of messaging developers may be most interested in different chapters, based on the specifics of how each group uses messaging to perform integration: System Administrators may be most interested in Chapter 3: Messaging Channels . the guidelines for what channels to create, and Chapter 8: System Management . guidance on how to maintain a running messaging system. Application Developers should look at Chapter 7: Messaging Endpoints to learn how integrate an application with a messaging system, and Chapter 4: Message Construction to learn what messages to send when. System Integrators will gain the most from Chapter 5: Message Routing how to direct messages to the proper receiversand Chapter 6: Message Transformation how to convert messages from the senders format to the receivers. Keep in mind that when reading a pattern, if youre in a hurry, start by just reading the problem and solution (the two sentences in bold). This will give you enough information to determine if the pattern is of interest to you right now, and if you already know the pattern. If you do not know the pattern and it sounds interesting, go ahead and read the other parts. Also remember that this is a pattern language, so the patterns are not necessarily meant to be read in the order theyre presented in the book. The books order teaches you about messaging by considering all of the relevant topics in turn and discussing related issues together. To use the patterns to solve a particular problem, start with an appropriate root pattern. Its context explains what patterns need to be applied before this one, even if theyre not the ones immediately preceding this one in the book. Likewise, the next section (the last paragraph of the pattern) describes what patterns to consider applying after this one, even if theyre not the ones immediately following this one in the book. Use the web of interconnected patterns, not the linear list of book pages, to guide you through the material. Supporting Web Site Please look for companion information to this book plus related information on enterprise integration at our Web site: enterpriseintegrationpatterns. You can also e-mail your comments, suggestions and feedback to us at authorsenterpriseintegrationpatterns. You should now have a good understanding of the following concepts which are fundamental to the material in this book: What messaging is What a messaging system is Why to use messaging How asynchronous programming is different How application integration is different from application distribution What types of commercial products contain messaging systems You should also have a feel for how this book is going to teach you how to use messaging: The role patterns have in structuring the material The meaning of the custom notation used in the diagrams The purpose and scope of the examples The organization of the material How to get started learning the material Now that you understand the basic concepts and how the material will be presented, you are now ready to start learning how to integrate applications using messaging. Want to keep up-to-date Follow My Blog . Want to read more in depth Check out My Articles . Want to see me live See where I am speaking next . Find the full description of this pattern in: Enterprise Integration Patterns Gregor Hohpe and Bobby Woolf ISBN 0321200683 650 pages Addison-Wesley From Enterprise Integration to Enterprise Transformation: My new book describes how architects can play a critical role in IT transformation by applying their technical, communication, and organizational skills with 37 episodes from large-scale enterprise IT. Parts of this page are made available under the Creative Commons Attribution license. You can reuse the pattern icon, the pattern name, the problem and solution statements (in bold), and the sketch under this license. Other portions of the text, such as text chapters or the full pattern text, are protected by copyright.

No comments:

Post a Comment