Mit AlgoTrader können Handelsunternehmen komplexe, quantitative Handelsstrategien in Devisen, Optionen, Futures, Aktien, ETFs und Rohstoffmärkten automatisieren. Im Gegensatz zu anderen algorithmischen Handelsplattformen verfügt es über eine robuste Open-Source-Architektur, die eine kundenspezifische Anpassung ermöglicht. AlgoTrader ist der anspruchsvolle Investmentbanken, Hedgefonds und proprietäre Händler gewartet. Automatisiert Jede quantitative Handelsstrategie kann vollständig automatisiert werden. Schnell Hohe Mengen an Marktdaten werden automatisch verarbeitet, analysiert und mit hoher Geschwindigkeit gehandelt. Anpassbare Open-Source-Architektur kann für benutzerspezifische Anforderungen angepasst werden. Kostengünstig Vollautomatischer Handel und integrierte Funktionen reduzieren Kosten. Zuverlässig Errichtet auf die robusteste Architektur und state-of-the-art Technologie. Vollständig unterstützte umfassende Anleitung zur Installation und Anpassung. Vor-Ort - und Fernunterricht und Beratung. AlgoTrader Wie es funktioniert Jede regelbasierte Handelsstrategie kann vollautomatisiert werden: Elektronische Marktdaten kommen an. Die Daten werden an Handelsstrategien weitergeleitet, die innerhalb von AlgoTrader laufen. Handelsstrategien analysieren, filtern und verarbeiten Marktdaten und schaffen Handelssignale. Basierend auf Handelssignalen werden Aktionen ausgeführt (z. B. Platzieren einer Bestellung oder Schließen einer Position). Aufträge werden an die jeweiligen Märkte geschickt. Vor-Ort-und Remote-Beratung und Schulung: Automatisierung und Migration bestehender Strategien Verbessern und Optimieren bestehender Strategien Prototyping und Backtesting neuer Strategien Entwicklung individueller Funktionalität Umfassende Dokumentation und Benutzerhandbücher AlgoTrader 3.1 integriert InfluxDB Jan-20-2017 AlgoTrader integriert InfluxDB für die Speicherung von Live - und historischen Märkten Daten. Mit InfluxDB können Milliarden von Zecken gespeichert und für Rücktests verwendet werden. Einführung in AlgoTrader 3.0 8211 Der leistungsstärkste AlgoTrader Yet Apr-07-2016 AlgoTrader 3.0 wurde veröffentlicht. Diese Version enthält das neue HTML5 Frontend, One-Click-Implementierung mit Docker, drei neue Execution Algorithmen und einen Excel-basierten Back Test Report Einführung von AlgoTrader One-Click-Installation von Docker Mar-15-2016 AlgoTrader 3.0 führt eine Klick-Trading-Strategie-Installationen ein Docker Clientrsquos Testimonials Vontobel schätzt die offene und erweiterbare Architektur von AlgoTrader sowie die Verwendung von gängigen Standard-Open-Source-Komponenten wie Esper und Spring. Benjamin Huber, Leiter Algo Trading 038 Smart Order Routing, Bank Vontobel AG, Zrich Wir sind sehr beeindruckt von AlgoTrader8217s Fähigkeiten in Sachen Strategieentwicklung und technischer Flexibilität. AlgoTrader ist die Schlüsseltechnologie, die es uns ermöglicht, mehrere VIX Future und Optionsbasierte Strategien parallel zu handeln. Raimond Schuster, Mitglied des Vorstands, ISP Securities AG, Zrich AlgoTrader Lizenzbestimmungen DIE BEDINGUNGEN DIESER ENDBENUTZERLIZENZVEREINBARUNG (8220AGREEMENT8221) GOVERN IHRE NUTZUNG DER SOFTWARE, WENN SIE UND DER LIZENZGEBER EINE SEPARATE SCHRIFTLICHE LIZENZVEREINBARUNG ÜBER IHREN AUSGEFÜHRT HABEN VERWENDUNG DER SOFTWARE. Der Lizenzgeber ist bereit, die Software an Sie zu lizenzieren, nur unter der Bedingung, dass Sie alle in dieser Vereinbarung enthaltenen Bedingungen akzeptieren. Mit der Unterzeichnung dieses Vertrages oder durch Herunterladen, Installieren oder Verwenden der Software haben Sie angegeben, dass Sie diese Vereinbarung verstehen und alle Bedingungen akzeptieren. Wenn Sie nicht alle Bedingungen dieser Vereinbarung akzeptieren, ist der Lizenzgeber nicht bereit, die Software an Sie zu lizenzieren, und Sie dürfen die Software nicht herunterladen, installieren oder verwenden. 1. GRANT DER LIZENZ a. Auswertung Verwendung und Entwicklung Verwendung Lizenz. Vorbehaltlich Ihrer Einhaltung der Bedingungen dieser Vereinbarung gewährt Ihnen der Lizenzgeber eine persönliche, nicht ausschließliche, nicht übertragbare Lizenz ohne das Recht zur Unterlizenz für die Laufzeit dieses Vertrages, die Software ausschließlich zur Nutzung zu verwenden Auswertung Verwendung und Entwicklung Verwendung. Drittanbieter-Softwareprodukte oder - Module, die vom Lizenzgeber geliefert werden, dürfen nur mit der Software verwendet werden und unterliegen der Annahme von Bedingungen, die von Dritten übernommen werden. Wenn die Lizenz beendet ist, müssen Sie die Software beenden und alle Instanzen deinstallieren. Alle Rechte, die Ihnen hier nicht ausdrücklich gewährt werden, bleiben vom Lizenzgeber erhalten. Der Entwickler darf die Software weder kommerziell nutzen noch irgendwelche abgeleiteten Arbeiten (einschließlich der eigenen internen Geschäftszweige von Developer8217). Die Vervielfältigung und Weiterverbreitung der Software - oder Entwickleranwendung an Ihre direkten oder indirekten Kunden ist in jeglicher Form verboten. B. Produktionsgebrauch Lizenz. Vorbehaltlich Ihrer Einhaltung der Bedingungen dieser Vereinbarung einschließlich der Zahlung der anwendbaren Lizenzgebühr gewährt Ihnen der Lizenzgeber Ihnen eine nicht ausschließliche und nicht übertragbare Lizenz ohne das Recht zur Unterlizenz für die Laufzeit dieses Vertrages : (A) die Software ausschließlich für eigene interne Geschäftszwecke zu verwenden und zu reproduzieren (8220Production Use8221) und (b) eine angemessene Anzahl von Kopien der Software ausschließlich für Back-up-Zwecke zu erstellen. Diese Lizenz beschränkt sich auf die spezifische Anzahl von CPUs (falls von CPU lizenziert) oder Instanzen von Java Virtual Machines (wenn Lizenzen durch virtuelle Maschine), für die Sie eine Lizenzgebühr bezahlt haben. Die Nutzung der Software auf einer größeren Anzahl von CPUs oder Instanzen von Java Virtual Machines erfordert die Zahlung einer zusätzlichen Lizenzgebühr. Drittanbieter-Softwareprodukte oder - Module, die vom Lizenzgeber geliefert werden, dürfen nur mit der Software verwendet werden. C. Keine anderen Rechte. Ihre Rechte und die Nutzung der Software sind auf diejenigen beschränkt, die ausdrücklich in diesem Abschnitt 1 gewährt werden. Sie werden die Software nicht weiter verwenden. Sofern nicht ausdrücklich in diesem Abschnitt genehmigt, gewährt Ihnen der Lizenzgeber keine weiteren Rechte oder Lizenzen implizit, wie es sich auszeichnet. ALLE RECHTE, DIE NICHT AUSDRÜCKLICH GEWÄHRT WERDEN, WERDEN DURCH DEN LIZENZGEBER ODER SEINEN LIEFERANTEN VORBEHALTEN. 2. BESCHRÄNKUNGEN Sofern nicht ausdrücklich in Abschnitt 1 vorgesehen, werden Sie nicht: (a) Änderungen, Übersetzung, Demontage, Ableitung von abgeleiteten Werken der Software oder Kopieren der Software (b) Miete, Verleihung, Übertragung, Verbreitung oder Erteilung von Rechten an der Software in irgendeiner Form an irgendeine Person (c) zur Verfügung zu stellen, zu verbreiten, zu verbreiten oder zugänglich zu machen oder zu erlauben, die Software von Dritten zu veröffentlichen, d) irgendwelche Benchmark - oder Leistungstests zu veröffentlichen, die auf der Software oder irgendeinem Teil davon laufen oder ( E) entfernen Sie alle Eigentumsvermerke, Etiketten oder Markierungen auf der Software. Sie verteilen die Software nicht auf eine eigenständige Person oder auf eine Originalausrüstungshersteller (OEM). 3. EIGENTUM Sowohl zwischen den Parteien ist und bleibt die Software das alleinige und ausschließliche Eigentum des Lizenzgebers, einschließlich aller geistigen Eigentumsrechte darin. ein. Für den Fall, dass Sie die Software unter der Lizenz gemäß Abschnitt 1 (a) verwenden, bleibt diese Vereinbarung für die Dauer der Auswertungs - oder Entwicklungsperiode gültig. B. Für den Fall, dass Sie die Software unter der Lizenz gemäß Abschnitt 1 (b) verwenden, bleibt diese Vereinbarung entweder (a) für eine Laufzeit von einem Jahr, wenn sie als jährliche Zeichnungslizenz erworben wird, oder (b) unaufgefordert, wenn sie gekauft wird unbefristete Lizenz. Eine jährliche Abonnement-Lizenz verlängert sich automatisch um ein Jahr, es sei denn, es wird mit einem Monat nach vorheriger Benachrichtigung gekündigt. Diese Vereinbarung wird automatisch ohne vorherige Ankündigung gekündigt, wenn Sie gegen eine Laufzeit dieses Vertrages verstoßen. Bei Kündigung müssen Sie unverzüglich die Software nicht mehr nutzen und alle Kopien der Software in Ihrem Besitz oder Ihrer Kontrolle zerstören. 5. UNTERSTÜTZUNGSDIENSTLEISTUNGEN Wenn Sie diese Lizenz einschließlich Support Services erworben haben, gehören dazu Wartungsfreigaben (Updates und Upgrades), Telefonunterstützung und E-Mail oder webbasierte Unterstützung. ein. Der Lizenzgeber wird kommerziell vernünftige Anstrengungen unternehmen, um ein Update bereitzustellen, das entworfen ist, um einen gemeldeten Fehler zu lösen oder umzugehen. Wenn ein solcher Fehler in einer Wartungsfreigabe korrigiert wurde, muss der Lizenznehmer die anwendbare Wartungsfreigabe installieren und implementieren, andernfalls kann das Update in Form einer vorübergehenden Fixierung, Prozedur oder Routine bereitgestellt werden, die bis zu einer Wartungsfreigabe mit dem permanenten Update verwendet werden soll ist verfügbar. B. Während des Lizenzvertrags hat der Lizenzgeber dem Lizenznehmer Wartungsfreigaben zur Verfügung zu stellen, wenn der Lizenzgeber diese Wartungsfreigaben im Allgemeinen für seine Kunden zur Verfügung stellt. Wenn eine Frage auftaucht, ob ein Produktangebot ein Upgrade oder ein neues Produkt oder eine neue Funktion ist, wird die Licensor8217s-Stellungnahme vorherrschen, vorausgesetzt, dass der Lizenzgeber das Produktangebot als neues Produkt oder Feature für seine Endkunden im Allgemeinen behandelt. C. Die Licensor8217s Verpflichtung zur Bereitstellung von Support Services ist abhängig davon: (a) Der Lizenznehmer bemüht sich, den Fehler nach Rücksprache mit dem Lizenzgeber zu korrigieren (b) Der Lizenznehmer stellt dem Lizenzgeber genügend Informationen und Ressourcen zur Verfügung, um den Fehler entweder auf der Licensor8217s Website zu korrigieren Oder über den Fernzugriff auf die Website von Licensee8217 sowie über den Zugriff auf das Personal, die Hardware und jede zusätzliche Software, die bei der Ermittlung des Error (c) des Lizenznehmers beteiligt ist, installiert alle Wartungsfreigaben und (d) Der Lizenznehmer beschafft, installiert und verwaltet alle Geräte, die Kommunikation Schnittstellen und andere Hardware, die für den Betrieb des Produkts erforderlich sind. D. Der Lizenzgeber ist nicht verpflichtet, Support-Services in folgenden Situationen zur Verfügung zu stellen: (a) das Produkt wurde geändert, geändert oder beschädigt (außer wenn unter der direkten Aufsicht des Lizenzgebers) (b) der Fehler durch den Lizenznehmer verursacht wird8217s Fahrlässigkeit, Hardware-Störung Oder andere Ursachen jenseits der vernünftigen Kontrolle des Lizenzgebers (c) der Fehler wird durch Software von Drittanbietern verursacht, die nicht durch den Lizenzgeber lizenziert wurde (d) Der Lizenznehmer hat keine Wartungsfreigabe installiert und implementiert, so dass das Produkt eine von der Software unterstützte Version ist Lizenzgeber oder (e) Der Lizenznehmer hat die Lizenzgebühren nicht akzeptiert. Darüber hinaus ist der Lizenzgeber nicht verpflichtet, Support-Services für Software-Code zur Verfügung zu stellen, die vom Kunden selbst auf der Grundlage des Produkts geschrieben wurden. E. Der Lizenzgeber behält sich das Recht vor, die Support-Services einzustellen, falls der Lizenzgeber nach eigenem Ermessen feststellen soll, dass die fortgesetzte Unterstützung für jedes Produkt nicht mehr wirtschaftlich praktikabel ist. Der Lizenzgeber gewährt dem Lizenznehmer mindestens drei (3) Monate vor schriftlicher Kündigung einer solchen Unterbrechung der Support-Services und erstattet alle nicht abgegrenzten Support-Services-Gebühren. Der Lizenznehmer kann in Bezug auf das betroffene Produkt vorbezahlt haben. Der Lizenzgeber ist nicht verpflichtet, jegliche Version des Produkts oder der zugrunde liegenden Drittplattformen (einschließlich aber nicht beschränkt auf Software, JVM, Betriebssystem oder Hardware) zu unterstützen oder zu pflegen, für die das Produkt unterstützt wird, außer (i) die damalige Version des Produkt und zugrundeliegende Plattform von Drittanbietern und (ii) die beiden unmittelbar vorangegangenen Versionen des Produkts und des Betriebssystems für einen Zeitraum von sechs (6) Monaten nach dem ersten Ersetzen. Der Lizenzgeber behält sich das Recht vor, die Leistung der Support-Services auszusetzen, wenn der Lizenznehmer den Betrag, der dem Lizenzgeber im Rahmen des Vertrages zu zahlen ist, innerhalb von dreißig (30) Tagen nach Erfüllung dieses Betrags nicht bezahlt. 6. GARANTIE a. Der Lizenzgeber garantiert, dass die Software in der Lage ist, in allen wesentlichen Punkten in Übereinstimmung mit den funktionalen Spezifikationen, die in der anwendbaren Dokumentation für einen Zeitraum von 90 Tagen nach dem Datum, an dem Sie die Software installieren, durchgeführt werden. Im Falle einer Verletzung dieser Gewährleistung hat der Lizenzgeber nach seiner Wahl die Software zu korrigieren oder diese Software kostenlos zu ersetzen. Die vorstehenden Ausführungen sind Ihre alleinigen und ausschließlichen Rechtsbehelfe und die alleinige Haftung des Lizenzgebers für die Verletzung dieser Garantien. Die oben dargelegten Garantien werden zu und nur zu Gunsten von Ihnen gemacht. Die Garantien gelten nur, wenn (a) die Software jederzeit ordnungsgemäß installiert und verwendet wurde und gemäß den Gebrauchsanweisungen (c) die neuesten Aktualisierungen auf die Software angewendet wurden und (c) keine Änderung, Änderung oder Ergänzung erfolgt Wurde von anderen Personen als dem Lizenzgeber oder dem Lizenzbevollmächtigten des Lizenzgebers 8217 zugelassen. 7. DER HAFTUNGSAUSSCHLUSS AUSSERGEWIESEN WERDEN, DASS DER LIZENZNEHMER AUSDRÜCKLICH ALLE GARANTIEN AUSDRÜCKLICH ODER IMPLIZIERT WERDEN KANN, EINSCHLIESSLICH EINER IMPLIZITEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG UND JEGLICHE GEWÄHRLEISTUNGEN, DIE AUS DEM HANDELSGEBIET WERDEN ODER VERWENDUNG DES HANDELS. KEINE BERATUNG ODER INFORMATIONEN, OB ODER SCHRIFTLICH, DIE AUS DEM LIZENZGEBER ODER ANDEREN GEWÄHRT WERDEN, WIRD EINE GARANTIE NICHT AUSDRÜCKLICH IN DIESER VEREINBARUNG ERHÖHEN. Der Lizenzgeber übernimmt keine Gewähr dafür, dass das Softwareprodukt Ihren Anforderungen entspricht oder unter Ihren spezifischen Nutzungsbedingungen arbeitet. Der Lizenzgeber übernimmt keine Gewähr dafür, dass der Betrieb des Softwareproduktes sicher, fehlerfrei oder frei von Unterbrechungen ist. SIE MÜSSEN BESTIMMEN, WENN DAS SOFTWAREPRODUKT IHRE ANFORDERUNGEN ZUR SICHERHEIT UND UNTERNEHMENSBILDUNG BESTIMMT. SIE BILDEN SOHLE VERANTWORTUNG UND ALLE HAFTUNG FÜR JEDEN VERLUST, DER DURCH DIE VERLETZUNG DES SOFTWAREPRODUKTS ZURÜCKZUFÜHREN IST, IHRE ANFORDERUNGEN ZU TREFFEN. DER LIZENZNEHMER WERDEN NICHT IN UNSEREN UMSTÄNDEN VERANTWORTLICH ODER HAFTBAR FÜR DEN VERLUST VON DATEN AUF EINEM COMPUTER ODER INFORMATIONSLAGERVORRICHTUNG. 8. HAFTUNGSBESCHRÄNKUNG DIE LIZENZGEBIETE IHNEN VON ALLEN URSACHEN DER MASSNAHME UND UNTER ALLEN HAFTUNGSBESCHRÄNKUNGEN WERDEN DURCH DEN LIZENZGEBER FÜR DIE SOFTWARE BESCHRÄNKT WERDEN. IN KEINEM FALL HAFTET DER LIZENZNEHMER FÜR IHNEN FÜR SPEZIELLE, ZUFÄLLIGE, EXEMPLARISCHE, STRAFEN ODER FOLGESCHÄDEN (EINSCHLIESSLICH VERLUST VON GEBRAUCH, DATEN, GESCHÄFT ODER GEWINNEN) ODER FÜR DIE KOSTEN, DIE VON ODER IN VERBINDUNG MIT DIESEM ODER IN VERBINDUNG ZU VERMEIDEN KÖNNEN VEREINBARUNG ODER DURCH DIE VERWENDUNG ODER DURCHFÜHRUNG DER SOFTWARE, OB DIESE HAFTUNG AUS EINEM VERTRAG, DER AUF VERTRAG, GEWÄHRLEISTUNG, SCHÄDEN (EINSCHLIESSLICH FAHRLÄSSIGKEIT), STRICT HAFTUNG ODER ANDERWEITIG IST, UND OB NICHT DER LIZENZGEBER DER MÖGLICHKEIT SOLCHER VERLUST ODER BESCHÄDIGUNG. DIE VORGESEHENEN EINSCHRÄNKUNGEN WERDEN ÜBERLEGEN UND GELTEN, WENN JEDE BESCHRÄNKTE RECHTSVORSCHRIFTEN, DIE IN DIESER VEREINBARUNG SPEZIFIZIERT WERDEN, GEFUNDEN WERDEN, DASS IHREN WESENTLICHEN ZWECK VERLETZT WIRD. DARAUF HINZUFÜGEN, DASS DIE ANWENDBARE RECHTSVORSCHRIFTEN DIE LIZENZGEBUNG BEGRENZT WERDEN, DASS DIESER HAFTUNGSAUSSCHLUSS DURCH DEN MAXIMALEN ZULÄSSIGEN WETTBEWERB WIRKSAM IST. 9. ALLGEMEINES Sollte eine Bestimmung dieses Vertrages als ungültig oder undurchsetzbar gelten, so bleibt der Rest dieses Vertrages in vollem Umfang wirksam. Soweit ausdrückliche oder stillschweigende Beschränkungen nach den anwendbaren Gesetzen nicht zulässig sind, bleiben diese ausdrücklichen oder stillschweigenden Beschränkungen in vollem Umfang in Kraft und wirksam, soweit dies durch die geltenden Gesetze zulässig ist. Diese Vereinbarung ist die vollständige und ausschließliche Vereinbarung zwischen den Parteien in Bezug auf den Gegenstand hiervon, ersetzt und ersetzt alle vorherigen Vereinbarungen, Mitteilungen und Verständnisse (sowohl schriftlich als auch mündlich) zu diesem Gegenstand. Die Parteien dieses Vertrages sind unabhängige Vertragspartner und haben weder die Befugnis, das andere zu binden oder Verpflichtungen gegenüber dem anderen zu erheben. Kein Versäumnis einer der beiden Parteien, ihre Rechte aus diesem Abkommen auszuüben oder durchzusetzen, wird als Verzicht auf diese Rechte fungieren. Alle Bedingungen, die in einer Bestellung oder einem anderen Bestelldokument enthalten sind, die mit den Bestimmungen dieser Vereinbarung unvereinbar sind oder zusätzlich zu den Bedingungen dieser Vereinbarung sind, werden vom Lizenzgeber abgelehnt und gelten als nichtig und unwirksam. Diese Vereinbarung wird nach den Gesetzen der Schweiz ausgelegt und ausgelegt, ohne Rücksicht auf Kollisionsnormen. Die Parteien stimmen hiermit der ausschließlichen Zuständigkeit und dem Gerichtsstand der Gerichte in Zürich, Schweiz zur Beilegung von Streitigkeiten, die sich aus oder im Zusammenhang mit diesem Abkommen ergeben. 10. BEGRIFFSBESTIMMUNGEN 8220Evaluation Use8221 bedeutet die Nutzung der Software ausschließlich zur Auswertung und Prüfung für neue Anwendungen, die für Ihre Produktion bestimmt sind. 8220Produktion Use8221 bedeutet, dass die Software nur für interne Geschäftszwecke verwendet wird. Die Produktion verwendet nicht das Recht, die Software zur Unterlizenzierung, Weiterveräußerung oder Verteilung zu reproduzieren, einschließlich, ohne Einschränkung, den Betrieb einer zeitlichen Freigabe oder Verteilung der Software als Teil eines ASP-, VAR-, OEM-, Distributor - oder Reseller-Arrangements. 8220Software8221 bedeutet die Licensor8217s Software und alle ihre Komponenten, Dokumentation und Beispiele, die vom Lizenzgeber enthalten sind. 8220Error8221 bedeutet entweder (a) einen Ausfall des Produkts, um den in den Unterlagen festgelegten Spezifikationen zu entsprechen, was zu einer Unfähigkeit zur Verwendung oder Beschränkung der Verwendung des Produkts führt, und (b) ein Problem, das neue Verfahren erfordert, Klarstellungen , Zusätzliche Informationen und Fragen für Produktverbesserungen. 8220Maintenance Release8221 bedeutet Upgrades und Updates für das Produkt, die den Lizenznehmern gemäß den in Abschnitt 5 definierten Standard Support Services zur Verfügung gestellt werden. 8220Update8221 bedeutet entweder eine Softwareänderung oder Ergänzung, die beim Erstellen oder Hinzufügen des Produkts den Fehler oder einen Verfahren oder Routine, die, wenn sie im regulären Betrieb des Produkts beobachtet wird, die praktische nachteilige Wirkung des Error auf den Lizenznehmer beseitigt. 8220Upgrade8221 bedeutet eine Revision des vom Lizenzgeber freigegebenen Produkts an seine Endkunden im Allgemeinen, während des Support Services Term, um neue und verschiedene Funktionen hinzuzufügen oder die Kapazität des Produkts zu erhöhen. Upgrade beinhaltet nicht die Freigabe eines neuen Produkts oder zusätzliche Features, für die es eine separate Ladung geben kann. Erste Eindrücke zählen. Achten Sie darauf, wenn Sie Ihre Bewerbung abschließen. Unser Zulassungsausschuss trifft sich einmal pro Woche, um Bewerber zu beurteilen. Die erfolgreichsten Bewerberinnen und Bewerber verfügen über eine Kombination aus starken Akademikern, außerschulischen Interessen und einer Leidenschaft, um in ihrer künftigen Karriere zu übertreffen. Die Plätze für unsere Programme werden nach dem ersten Treffen vergeben. Gut informieren Sie innerhalb von zehn Arbeitstagen, wenn Sie erfolgreich sind. Leben, arbeiten, studieren amp reisen ins Ausland. Nicht kompromittieren Intern, lernen, führen, wachsen amp erforschen in einer globalen Stadt. Seize heute amp sicher morgen. Nicht kompromittieren Die Erfahrung eines Lebens vervollkommnen die Fähigkeiten, um Ihnen ein Leben lang zu dauern. Entdecken Sie amp beschleunigen Sie Ihre Karriere. Nicht kompromittieren Entdecken Sie Ihren potenziellen Verstärker auf dem Weg zu realisieren. Wir sind stolze Mitglieder der folgenden Verbände: CI ist ein beschleunigter Lernanbieter. Wir bieten immersive Erlebnispädagogik für College-Studenten, jüngsten Absolventen und frühen Stadium Karriere-Changer. Interesting Anwendungen selten in Isolation zu leben. 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. Das Messaging-System fungiert als Mediatoras im Mediator-Muster GoF zwischen allen Programmen, die Nachrichten senden und empfangen können. Eine Anwendung kann sie als ein Verzeichnis von anderen Anwendungen oder Dienstleistungen verwenden, die zur Integration mit vorhanden sind. Wenn eine Anwendung von den anderen getrennt wird, muss sie nur wieder mit dem Messaging-System verbunden sein, nicht auf alle anderen Messaging-Anwendungen. Das Messaging-System kann verwendet werden, um eine hohe Anzahl von verteilten Verbindungen zu einer freigegebenen Ressource, wie z. B. einer Datenbank, bereitzustellen. Das Messaging-System kann redundante Ressourcen einsetzen, um Hochverfügbarkeit, Balance-Last, Umleitung um ausgefallene Netzwerkverbindungen und Optimierung der Leistung und Qualität des Dienstes zu ermöglichen. Thread Management. Asynchrone Kommunikation bedeutet, dass eine Anwendung nicht blockieren muss, während sie auf eine andere Anwendung warten muss, um eine Aufgabe auszuführen, es sei denn, sie will. Anstatt zu blockieren, um auf eine Antwort zu warten, kann der Anrufer einen Rückruf verwenden, der den Anrufer benachrichtigt, wenn die Antwort ankommt. (Siehe das Request-Reply-Muster.) Eine große Anzahl von blockierten Threads oder Threads, die für eine lange Zeit blockiert sind, kann problematisch sein. Zu viele blockierte Threads können die Anwendung mit zu wenigen verfügbaren Threads verlassen, um echte Arbeit zu leisten. Wenn eine Anwendung mit einer gewissen dynamischen Anzahl von blockierten Threads abstürzt, wenn die Anwendung neu gestartet wird und ihren früheren Zustand wiederherstellt, wird die Wiederherstellung dieser Threads schwierig sein. Bei Rückrufen sind die einzigen Threads, die blockieren, eine kleine, bekannte Anzahl von Zuhörern, die auf Antworten warten. Dies lässt die meisten Threads für andere Arbeit verfügbar und definiert eine bekannte Anzahl von Listener-Threads, die nach einem Crash leicht wiederhergestellt werden können. So gibt es eine Reihe von verschiedenen Gründen eine Anwendung oder Unternehmen von Messaging profitieren können. Einige davon sind technische Details, die Anwendungsentwickler am ehesten beziehen, während andere strategische Entscheidungen sind, die am besten mit Firmenarchitekten in Resonanz stehen. Welcher dieser Gründe am wichtigsten ist, hängt von den aktuellen Anforderungen Ihrer jeweiligen Anwendungen ab. Sie sind alle guten Gründe, um Messaging zu verwenden, also nutzen Sie, welche Gründe Ihnen den größten Nutzen bieten. Herausforderungen der asynchronen Messaging Asynchrone Messaging ist nicht das Allheilmittel der Integration. Es behebt viele der Herausforderungen der Integration von disparaten Systemen in einer eleganten Weise, aber es stellt auch neue Herausforderungen vor. Einige dieser Herausforderungen sind dem asynchronen Modell innewohnt, während andere Herausforderungen mit der spezifischen Implementierung eines Messaging-Systems variieren. Komplexes Programmiermodell. Asynchrones Messaging erfordert Entwickler, um mit einem ereignisgesteuerten Programmiermodell zu arbeiten. Die Anwendungslogik kann nicht mehr in einer einzigen Methode codiert werden, die andere Methoden aufruft, aber die Logik wird nun in eine Anzahl von Ereignishandlern aufgeteilt, die auf eingehende Nachrichten antworten. Ein solches System ist komplexer und schwieriger zu entwickeln und zu debuggen. Beispielsweise kann das Äquivalent eines einfachen Methodenaufrufs eine Anforderungsnachricht und einen Anforderungskanal, eine Antwortnachricht und einen Antwortkanal, eine Korrelationskennung und eine ungültige Nachrichtenwarteschlange (wie in Request-Reply beschrieben) erfordern. Sequenzprobleme Nachrichtenkanäle garantieren Nachrichtenübermittlung, aber sie garantieren nicht, wann die Nachricht ausgeliefert wird. Dies kann dazu führen, dass Nachrichten, die nacheinander gesendet werden, aus der Sequenz herauskommen. In Situationen, in denen Nachrichten von einander abhängen, muss besondere Sorgfalt angewendet werden, um die Nachrichtenfolge wiederherzustellen. Synchrone Szenarien. Nicht alle Anwendungen können im Sende - und Vergabemodus betrieben werden. Wenn ein Benutzer nach Flugtickets sucht, wird er oder sie den Ticketpreis sofort sehen wollen, nicht nach einer unbestimmten Zeit. Daher müssen viele Messaging-Systeme die Lücke zwischen synchronen und asynchronen Lösungen überbrücken. (Siehe das Request-Reply-Muster.) Leistung. Messaging-Systeme fügen einen Overhead der Kommunikation hinzu. Es bemüht sich, Daten in eine Nachricht zu verschicken und zu senden und eine Nachricht zu erhalten und zu verarbeiten. Wenn du einen riesigen Teil der Daten transportieren musst, so teile ich ihn in eine Gazillion kleine Stücke, die vielleicht keine scharfe Idee haben. Wenn zum Beispiel eine Integrationslösung Informationen zwischen zwei vorhandenen Systemen synchronisieren muss, ist der erste Schritt in der Regel, um alle relevanten Informationen von einem System zum anderen zu replizieren. Für einen solchen Bulk-Datenreplikationsschritt sind ETL-Werkzeuge (extrahieren, transformieren und laden) viel effizienter als Messaging. Messaging eignet sich am besten, um die Systeme nach der ersten Datenreplikation synchron zu halten. Begrenzte Plattformunterstützung. Viele proprietäre Messaging-Systeme sind nicht auf allen Plattformen verfügbar. Oft ist es einfacher, FTP eine Datei auf eine andere Plattform als Zugriff auf sie über ein Messaging-System. Vendor Lock-in. Viele Messaging-System-Implementierungen beruhen auf proprietären Protokollen. Auch gängige Messaging-Spezifikationen wie JMS kontrollieren nicht die physikalische Implementierung der Lösung. Infolgedessen verbinden sich verschiedene Messaging-Systeme in der Regel nicht miteinander. Dies kann Ihnen eine ganz neue Integrations-Herausforderung hinterlassen: Integration mehrerer Integrationslösungen (siehe Messaging-Bridge-Muster). So asynchrone Messaging löst nicht alle Probleme und kann sogar neue erstellen. Halten Sie diese Konsequenzen im Auge bei der Entscheidung, welche Probleme zu lösen mit Messaging. Thinking Asynchronous Messaging ist eine asynchrone Technologie, die die Lieferung wiederbegibt, bis es gelingt. Im Gegensatz dazu verwenden die meisten Anwendungen beispielsweise synchrone Funktionsaufrufe: eine Prozedur, die eine Unterprozedur aufruft, eine Methode, die eine andere Methode aufruft, oder eine Prozedur, die eine weitere Fernsteuerung über einen Remoteprozeduraufruf (RPC) (wie CORBA und DCOM) aufruft. Synchrone Aufrufe bedeuten, dass der Aufrufprozess angehalten wird, während der Unterprozess eine Funktion ausführt. Sogar in einem RPC-Szenario, in dem die aufgerufene Subprozedur in einem anderen Prozess ausgeführt wird, blockiert der Anrufer, bis die Subprozedur das Steuerelement (und die Ergebnisse) an den Anrufer zurückgibt. Bei der Verwendung von asynchroner Messaging verwendet der Anrufer einen Sende - und Forget-Ansatz, der es ermöglicht, dass er weiterhin ausgeführt wird, nachdem er die Nachricht gesendet hat. Infolgedessen läuft die Aufrufprozedur weiter, während das Unterverfahren aufgerufen wird. Synchrone und asynchrone Aufruf-Semantik Die asynchrone Kommunikation hat eine Reihe von Implikationen. Zuerst haben wir nicht mehr einen einzigen Faden der Ausführung. Mehrere Threads ermöglichen es, dass Sub-Prozeduren gleichzeitig ausgeführt werden, was die Leistung erheblich verbessern und dazu beitragen kann, dass einige Teilprozesse Fortschritte machen, auch wenn andere Teilprozesse auf externe Ergebnisse warten können. Allerdings können gleichzeitige Threads auch das Debugging viel schwieriger machen. Zweitens kommen die Ergebnisse (falls vorhanden) über einen Rückruf an. Dies ermöglicht es dem Anrufer, andere Aufgaben auszuführen und benachrichtigt zu werden, wenn das Ergebnis verfügbar ist, was die Leistung verbessern kann. Allerdings muss der Anrufer das Ergebnis auch dann verarbeiten können, wenn es sich in der Mitte anderer Aufgaben befindet, und es muss in der Lage sein, das Ergebnis zu verwenden, um sich an den Kontext zu erinnern, in dem der Anruf gemacht wurde. Drittens können asynchrone Teilprozesse in beliebiger Reihenfolge ausgeführt werden. Auch dies ermöglicht es einem Unterverfahren, Fortschritte zu machen, auch wenn ein anderer nicht kann. Aber es bedeutet auch, dass die Teilprozesse in jeder Reihenfolge unabhängig laufen können, und der Anrufer muss in der Lage sein zu bestimmen, welches Ergebnis aus welchem Teilprozess stammt und die Ergebnisse zusammen kombiniert. So hat die asynchrone Kommunikation mehrere Vorteile, erfordert aber das Umdenken, wie ein Verfahren seine Unterprozeduren verwendet. Verteilte Anwendungen vs. Integration Dieses Buch beschäftigt sich mit Enterprise Integrationhow, um unabhängige Anwendungen zu integrieren, damit sie zusammenarbeiten können. Eine Enterprise-Anwendung enthält oft eine n-Tier-Architektur (eine anspruchsvollere Version einer Client-Server-Architektur), die es ermöglicht, über mehrere Computer verteilt zu werden. Auch wenn dies dazu führt, dass Prozesse auf verschiedenen Rechnern miteinander kommunizieren, ist dies eine Anwendungsverteilung, keine Anwendungsintegration. Warum ist eine n-Tier-Architektur als Anwendungsverteilung und nicht Anwendungsintegration eingestuft. Zuerst werden die kommunizierenden Teile eng miteinander verknüpft, so dass eine Stufe nicht ohne die anderen funktionieren kann. Zweitens tendiert die Kommunikation zwischen den Ebenen dazu, synchron zu sein. Drittens neigt eine Anwendung (n-Tier oder atomar) dazu, menschliche Benutzer zu haben, die nur eine schnelle Systemreaktion akzeptieren. Im Gegensatz dazu sind integrierte Anwendungen unabhängige Anwendungen, die jeweils von selbst laufen können, aber miteinander koordiniert werden. Dies ermöglicht es jedem Anwendungsbereich, sich auf einen umfassenden Satz von Funktionalität zu konzentrieren und dennoch auf andere Anwendungen für verwandte Funktionalität zu delegieren. Integrierte Anwendungen, die asynchron kommunizieren, müssen nicht auf eine Antwort warten, die sie ohne Antwort ausführen können oder andere Aufgaben gleichzeitig ausführen können, bis die Antwort verfügbar ist. Integrierte Anwendungen neigen dazu, eine breite Zeitbeschränkung zu haben, so dass sie an anderen Aufgaben arbeiten können, bis ein Ergebnis verfügbar ist und daher geduldiger sind als die meisten menschlichen Benutzer, die in Echtzeit auf ein Ergebnis warten. Kommerzielle Messaging-Systeme Die offensichtlichen Vorteile der Integration von Systemen mit einer asynchronen Messaging-Lösung haben einen bedeutenden Markt für Software-Anbieter eröffnet, die Messaging-Middleware und zugehörige Tools erstellen. Wir können die Messaging-Anbieter Produkte in die folgenden vier Kategorien grob gruppieren: Betriebssysteme. Messaging ist so ein gemeinsames Bedürfnis geworden, dass die Anbieter begonnen haben, die notwendige Software-Infrastruktur in das Betriebssystem oder die Datenbankplattform zu integrieren. Zum Beispiel enthalten die Microsoft Windows 2000- und Windows XP-Betriebssysteme die Microsoft Message Queuing (MSMQ) - Service-Software. Dieser Dienst ist über eine Reihe von APIs, einschließlich COM-Komponenten und den System. Messaging-Namespace, Teil der Microsoft-Plattform zugänglich. Ähnlich bietet Oracle Oracle AQ als Teil seiner Datenbankplattform an. Anwendungsserver. Sun Microsystems hat den Java Messaging Service (JMS) erstmals in die Version 1.2 der J2EE-Spezifikation integriert. Seither bieten praktisch alle J2EE Applikationsserver (wie IBM WebSphere, BEA WebLogic etc.) eine Implementierung für diese Spezifikation. Außerdem liefert Sun eine JMS-Referenzimplementierung mit dem J2EE JDK. EAI Suiten. Produkte von diesen Anbietern bieten proprietäre, aber funktionale Richsuites, die Messaging, Business Process Automation, Workflow, Portale und andere Funktionen umfassen. Hauptakteure auf diesem Markt sind IBM WebSphere MQ, Microsoft BizTalk, TIBCO, WebMethods, SeeBeyond, Vitria, CrossWorlds und andere. Viele dieser Produkte umfassen JMS als eine der vielen Client-APIs, die sie unterstützen, während andere Anbieter wie SonicSoftware und Fioranofocus in erster Linie auf die Implementierung von JMS-kompatiblen Messaging-Infrastrukturen. Web Services Toolkits. Web-Services haben ein großes Interesse an den Unternehmensintegrationsgemeinschaften gesammelt. Normengremien und Konsortien arbeiten aktiv an der Standardisierung einer zuverlässigen Nachrichtenübermittlung über Web Services (d. H. WS-Reliability, WS-ReliableMessaging und ebMS). Eine wachsende Anzahl von Anbietern bietet Werkzeuge, die Routing, Transformation und Verwaltung von Web Services-basierten Lösungen implementieren. Die Muster in diesem Buch sind herstellerunabhängig und gelten für die meisten Messaging-Lösungen. Leider neigt jeder Anbieter dazu, ihre eigene Terminologie zu definieren, wenn er Messaging-Lösungen beschreibt. In diesem Buch haben wir uns bemüht, Musternamen zu wählen, die technologie - und produktneutral sind, aber dennoch beschreibend und einfach zu bedienen sind. Viele Messaging-Anbieter haben einige dieser Büchermuster als Features ihrer Produkte integriert, was die Anwendung der Muster vereinfacht und die Lösungsentwicklung beschleunigt. Leser, die mit einer bestimmten Anbieter-Terminologie vertraut sind, werden höchstwahrscheinlich viele der Konzepte in diesem Buch erkennen. Um diesen Lesern zu helfen, die Mustersprache der herstellerspezifischen Terminologie zuzuordnen, ordnen die folgenden Tabellen die häufigsten Musternamen zu ihren entsprechenden Produktmerkmalnamen in einigen der am häufigsten verwendeten Messaging-Produkte zu. Enterprise Integration Patterns Java Message Service (JMS) Pattern Form Dieses Buch ist als ein Satz von Mustern, die in einer Mustersprache organisiert sind, strukturiert. Bücher wie Design Patterns. Musterorientierte Softwarearchitektur. Core J2EE Patterns Und Patterns of Enterprise Application Architecture haben das Konzept der Verwendung von Patterns zur Dokumentation von Computer-Programmierungstechniken populär gemacht. Christopher Alexander pionierte das Konzept der Muster und Mustersprachen in seinen Büchern A Pattern Language und A Timeless Way of Building. Jedes Muster stellt eine Entscheidung dar, die der Leser machen muss, und die Überlegungen, die in diese Entscheidung gehen. Eine Mustersprache ist ein Netz von verwandten Mustern, bei denen jedes Muster zu anderen führt und den Leser durch den Entscheidungsprozess führt. Dieser Ansatz ist eine leistungsstarke Technik für die Dokumentation eines Expertenwissens, so dass es leicht verständlich und von Nicht-Experten angewendet werden kann. Eine Mustersprache lehrt den Leser, wie man eine grenzenlose Vielfalt von Problemen innerhalb eines beschränkten Problemraums löst. Denn das Gesamtproblem, das gelöst wird, ist jedes Mal anders, der Weg durch die Muster und wie sie angewendet werden, ist auch einzigartig. Auf diese Weise wurde dieses Buch für jedermann mit jedem Messaging-Tools für jede Anwendung geschrieben, kann aber speziell für Sie und die spezifische Anwendung von Messaging, die Sie konfrontiert sind. Die Verwendung des Musterformulars garantiert nicht, dass ein Buch eine Fülle von Wissen enthält. Es ist nicht nur genug, um einfach zu sagen, wenn Sie dieses Problem stellen, wenden Sie diese Lösung an. Für einen Leser, um wirklich von einem Muster zu lernen, muss es dokumentieren, warum das Problem schwer zu lösen ist, betrachten mögliche Lösungen, die in der Tat nicht gut funktionieren und erklären, warum die angebotene Lösung die beste verfügbare ist. Ebenso müssen die Muster miteinander verbunden sein, um den Leser von einem Problem zum nächsten zu gehen. Auf diese Weise kann die Musterform verwendet werden, um dem Leser nicht nur die Lösungen zu vermitteln, sondern auch, wie man Probleme lösen kann, die der Autor nicht vorhergesagt haben könnte. Das sind Ziele, die wir in diesem Buch anstreben. Muster sollten präskriptiv sein, was bedeutet, dass sie Ihnen sagen sollten, was zu tun ist. Sie beschreiben nicht einfach ein Problem, und sie beschreiben nicht einfach, wie man es löst, sie sagen Ihnen, was zu tun ist, um es zu lösen. Jedes Muster stellt eine Entscheidung dar, die der Leser machen muss: Sollte ich Messaging verwenden, würde mir eine Antwortbotschaft hier helfen. Der Punkt der Muster und die Mustersprache soll dem Leser helfen, Entscheidungen zu treffen, die zu einer guten Lösung für sein spezifisches Problem führen, auch wenn Die Autoren haben nicht das spezifische Problem im Auge, und selbst wenn der Leser nicht das Wissen und die Erfahrung hat, um diese Lösung auf eigene Faust zu entwickeln. Es gibt kein universelles Muster aus verschiedenen Büchern, die verschiedene Strukturen verwenden. Wir verwendeten einen Stil, der ziemlich nah an der alexandrinischen Form ist, die zuerst für Computerprogrammierung in Smalltalk Best Practice Patterns von Kent Beck populär wurde. Wir mögen die alexandrinische Form, weil es zu Mustern führt, die eher prosa-like sind. 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