No. 240 Marcel Gnoth, NTeam GmbH Message Queueing Stille Post mit dem.Net-Framework.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

Anwendungen des OODM auf die ADB / NDB
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
VFP Class Browser. © 1999 TMN-Systemberatung GmbH Einsatz des Class Browser n Managen von Klassen inklusive, ändern, umbenennen, löschen und umdefinieren.
Visual Extend Features für Entwickler deutschsprachige FoxPro User Group Uwe Habermann VFX 05 D.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Presenter: Daniel Walzenbach Technologieberater
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Presenter: Daniel Walzenbach Technologieberater
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 9 Zeichenketten, Delegates und Events (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Erstellen eines Zufallsgenerators
Marcel Gnoth – Einer für alle – alle für einen! E3 Verteilte Transaktionen mit.NET-Komponenten.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 6 Folie 2 Routed Events s.a.
Microsoft Class Server
Testing using Mock Obejcts
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 14: Mehrfachvererbung.
ETS4 - Was ist neu? - Wie fange ich an? - Noch Fragen?
Test Driven Development - Romano Adler-
Martin LöfflerMurat Yilmaz Labor Informationstechnologie.
SQL Server Service Broker
Best Practices in der Datenbank-programmierung
No. 239 Marcel Gnoth, NTeam GmbH Datenstrukturen Das Framework der Jäger und Sammler.
3 Technologien im Wettstreit um Ihre nächste Webanwendung Rainer Worbis Markus Unterauer Entwickler, cubido business solutions gmbh.
SQL Server 2005 CLR-Integration
3rd Review, Vienna, 16th of April 1999 SIT-MOON ESPRIT Project Nr Siemens AG Österreich Robotiker Technische Universität Wien Politecnico di Milano.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Developer Day Webseiten auf Windows Azure hosten Britta Labud bbv Software Services AG Roland Krummenacher bbv Software Services AG.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
Windows Azure Websites Roland Krummenacher Senior Software Engineer, bbv Software Services
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
Roger Boesch Developer Technical Specialist Developer and Platform Group.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Algorithmen und Datenstrukturen Übungsmodul 6
Real Time Operating System
Visual Studio Tools für Office 2007 Next Generation Applications for Office - Teil 2 Marcel Gnoth, Avanade Deutschland GmbH CS3, VB7, OF2, PA12.
SharePoint FIS HandsOn – out of the Box.
Ein Projekt des Technischen Jugendfreizeit- und Bildungsvereins (tjfbv) e.V. kommunizieren.de Blended Learning for people with disabilities.
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Web Services in.NET und die.NET My Services 14. November Web Services in.NET und die.NET My Services Mario Ehrlicher Senior Consultant Xuccess
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Wie geht es weiter in der nachrichtenbasierten Welt?
Die nächste Generation von Microsoft Office System 2007 Microsoft Office System Gernot Kühn Technologieberater Office System Mittelstandsbetreuung.
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
MTS Microsoft Transaction Server Martin Basziszta
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Thomas Claudius Huber Senior Consultant Trivadis AG WCF RIA Services Datengetriebene Apps.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
Beispielanwendung von Java Threads
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
 Präsentation transkript:

No. 240 Marcel Gnoth, NTeam GmbH Message Queueing Stille Post mit dem.Net-Framework

Zur Person Dipl. Inf. Marcel Gnoth NTeam GmbH, Berlin Senior Consultant, Trainer VB6, COM, Datenbanken Verteilte Informationssysteme Und.....Net

Überblick Einführung MSMQ Vorstellen des Anwendungsszenarios MSMQ im Detail

Message Queueing Einführung

Message – Queueing Transport von Nachrichten zwischen Computern

Einführung Konzepte Asynchrone Abarbeitung von Aufgaben Empfänger oder Sender kann Offline sein Nachrichten werden zwischengepuffert Aktiver Austausch von Informationen zwischen Programmen / Computern Pushen der Infos

Einführung Technik Versionen NT4: MSMQ 1.0 (Option Pack) ab Win2k MSMQ 2.0 Bestandteil des Win2k / WinXP Setup Active Directory / Domänen Controller MQIS Message Queue Information Store Public Queues Aktive Directory Ohne MQIS nur Private Queues

Einführung Programmieren Referenz auf System.Messaging MessageQueue Zugriff auf eine Warteschlange Public Queues Sind im MQIS eingetragen Private Queues Ohne Active Directory Message Nachrichten, die verschickt oder empfangen werden

Öffnen einer Queue MessageQueue.Create (Path As String) New MessageQueue (Path As String) MessageQueue.Exists (Path As String) Imports System.Messaging Private WithEvents m_JobQueue As MessageQueue Sub Test() m_JobQueue = New MessageQueue _ ("Gengar\Private$\Jobs") End Sub Dim mqs As MessageQueue() = _ MessageQueue.GetPrivateQueuesByMachine("Gengar")

Wie findet MSMQ eine Queue? Mit MQIS (Active Directory) Public und Private Path - Property Label - Property FormatName - Property Ohne MQIS Nur Private FormatName - Property

Öffnen mit Path Zugriff auf MQIS Kein Offline Private Queues nur lokal öffnen Dim mq As MessageQueue, s As String s = "Gengar\Jobs" 'Public s = "Gengar\Private$\Jobs"'Private mq = New MessageQueue(s)

Öffnen mit Label Label = Name einer Queue Sucht über MQIS die Queue Langsamer, da Zugriff auf MQIS Kein Offline Nur Public Queues Dim myQueue As New MessageQueue("Label:TheLabel")

Öffnen mit FormatName Offline Mode Ohne MQIS Schnellste und flexibelste Methode FormatName:Public=5A5F7535-AE9A-41d4-935C-845C2AFF7112 FormatName:DIRECT=SPX:NetworkNumber;HostNumber\QueueName FormatName:DIRECT=TCP:IPAddress\QueueName FormatName:DIRECT=OS:MachineName\QueueName FormatName:DIRECT=OS:MachineName\Private$\QueueName Dim myQueue As New MessageQueue _ ("FormatName:DIRECT=OS:Gengar\private$\Jobs")

Senden einer Nachricht Queue öffnen Send Methode mit einen String oder einem Objekt aufrufen Object wird serialisiert XML ist Standardformat z.B. DataSets verschicken msgQ.Send(myObject, "Message Label")

Senden mit explizitem Message - Objekt Konfigurieren der Message – Parameter Format, Verschlüsselung, TimeOuts Formate für Serialisierung: XMLMessageFormatter BinaryMessageFormatter ActiveXMessageFormatter With myMsg.Label = "Job " + theJob.ID.Formatter = New BinaryMessageFormatter().AppSpecific = 34.Priority = MessagePriority.VeryHigh.Body = theJob End With

Demo: Nachricht versenden

Inhalt einer Queue ansehen Peek – Methode GetEnumerator Dim eM As IEnumerator = mqJobs.GetEnumerator() lstJobMessages.Items.Clear() Do While eM.MoveNext() Dim q As Message q = CType(eM.Current, Message) lstJobMessages.Items.Add(q.Label) Loop myMsg = m_JobQueue.Peek()

Nachricht empfangen Receive BeginReceive Asynchrones Empfangen Dim msg As Message = mqResults.Receive() mqResults.BeginReceive() Private Sub mqResults_ReceiveCompleted(..., _ ByVal e As...ReceiveCompletedEventArgs) _ Handles mqResults.ReceiveCompleted Dim myMsg As System.Messaging.Message myMsg = e.Message End Sub

Format der Nachricht Body ist vom Typ Object Mögliche Typen festlegen Formatter initialisieren Für Deserialisierung zuständig Dim m_MsgTargetTypes(1) As Type m_MsgTargetTypes(0) = GetType(String) m_MsgTargetTypes(1) = GetType(Job) Dim m_XmlMsgFrmt As XmlMessageFormatter m_XmlMsgFrmt = New _ XmlMessageFormatter(m_MsgTargetTypes)

Nachrichten Body auspacken Der Formatter deserialisiert den Body Erzeugt gewünschtes Objekt Dim j As Job, s As String myMsg.Formatter = m_XmlMsgFrmt If TypeOf (myMsg.Body) Is Job Then 'Job Object j = CType(myMsg.Body, Job) ProcessJob(j) Else 'String s = CStr(myMsg.Body) Console.Write(s) End If

Woher weiß der Formatter das? Durch Reflection kann zur Laufzeit ein Object untersucht werden Klasse als kennzeichnen Wird automatisch serialisiert Public Class Job Public Name As String End Class

Demo Nachricht empfangen

MSMQ in der Praxis Job Shop Scheduling als Anwendungsszenario

Job Shop Scheduling Viele Jobs die lange dauern Arbeit auf mehrere Rechner verteilen Ergebnisse werden eingesammelt Eine oder mehrere Queue(s) mit Aufträgen Queue(s) mit Ergebnissen

Job Shop Scheduling

Projekte JobShopComponent (Dll) Klassen Job und Jobs Kapselt Aufträge JobShopManager (Exe) Erzeugt Jobs Sammelt Ergebnisse ein Kontrolliert Bestätigungen JobShopWorker (Exe) Nimmt Job aus Queue Verarbeitet Job Sendet Ergebnis in Queue

JobShopManager.vbpj frmCreatorMain Erzeugt Jobs / Nachrichten Stellt Nachrichten in Job-Queue

JobShopManager.vbpj frmResult Überwacht Result-Queue Zeigt Ergebnisse an

JobShopWorker.vbpj Lauscht an der Job-Queue Bearbeitet Jobs Sendet Ergebnisse an Result-Queue

Live - Demo

MSMQ im Detail Acknowledgements TimeOuts Journlaing Transaktionen

Time Outs Was passiert, wenn Nachricht nicht gelesen wird? MSMQ informiert wenn Zeiten zum Übermitteln und zum Lesen überschritten werden Properties: TimeToReachQueue TimeToBeReceived

Acknowlegdgements MSMQ schickt Bestätigungs - Nachrichten ReachQueue: Erreichen der Queue Receive: Aus der Queue entnommen AcknowledgeTypes: None FullReachQueue, PositiveArrival NotAcknowledgeReachQueue FullReceive, NotAcknowledgeReceive NegativeReceive, PositiveReceive

Acknowledgements AdministratorQueue: Wurde der Nachricht beim Versenden übergeben Benachrichtigungen landen in dieser Queue Ganz normale Queue Nach dem Senden ist Message.ID gesetzt theMsg.TimeToBeReceived = New TimeSpan(0, 0, 20) theMsg.AcknowledgeType = _ AcknowledgeTypes.FullReachQueue Or _ AcknowledgeTypes.FullReceive theMsg.AdministrationQueue = m_JobAckQueue m_JobQueue.Send(theMsg) myJob.MQMessageID = theMsg.Id 'für CorrelationID

Acknowledgement Nachrichten MessageType: Acknowledgment CorrelationId: Kennung der betroffenen Nachricht Beim Öffnen der Ack- Queue: Dim j As Job, s As String j = m_Jobs.ItemByMQMessageID(theMsg.CorrelationID) s = Msg.Acknowledgment.ToString m_JobAckQueue.MessageReadPropertyFilter.CorrelationId = True

Journaling Überwacht Transport der Nachrichten zwischen einzelnen Computern Nur bei Versand zwischen Computern! Journal-Queues: System-Queues Individuelle für jede Queue Eine Systemweite Journal-Queue

Journaling Szenario: Negatives Acknowledgement überwachen Betroffene Nachricht aus der Journal- Queue holen (ReceiveByID) System – Journal – Queue Queue eigene Journal - Queue theMsg.UseJournalQueue = True theQueue.UseJournalQueue = True

Demo

Transaktion Interne MSMQ Transaktionen DTC – Transaktionen Distributed Transaktion Coordinator MSMQ, SQL-Server, Oracle, Sybase Ressource-Manager arbeiten mit DTC zusammen Infos: us/dnbda/html/bdadotnettransact1.asp us/dnbda/html/bdadotnettransact1.asp

Fazit - MSMQ Einfacher Daten (Objekt) – Austausch in der Windowswelt Bridges in andere Welten Wann Einsetzen: Rechnerübergreifende Kommunikation Asynchrone Abarbeitung von Programmen Disconected Programmierung

Fazit - Queues Public Queues sind bequemer nur bei solidem Active Directory Private Queues Schneller, weniger Overhead Ermöglichen Offline – Betrieb kein Domänen- oder Active Directory Controller vorhanden

Fazit – Formate XML: Kleine Datenmenge BLOBs ??? Gut lesbar Binary: Weniger Overhead, effizienter Nur wenn XML keinen Sinn macht Serialisierung kann kontrolliert werden

Links Basic Pro 5/2001 Nachrichtenbasierte Informationssysteme auf MSDN suchen Accessing Message Queues us/dnbda/html/bdadotnetasync1.asp us/dnbda/html/bdadotnetasync1.asp Reliable Messaging with MSMQ and.NET us/dnbda/html/bdadotnetasync2.asp us/dnbda/html/bdadotnetasync2.asp MSMQ Home-Page

Fragen? Uff...