Erstellen wir eine Klasse, die Dateien in einem Verzeichnis auflistet, oder eines seiner Unterverzeichnisse, die einem Muster folgen. Diese Komponente löst ein Ereignis für jede gefundene Datei aus, die dem Muster entspricht. Füllen wir die FileSearcher-Klasse aus, um nach Dateien zu suchen, die einem Muster entsprechen, und das richtige Ereignis aus, wenn eine Übereinstimmung entdeckt wird. Einige Entitäten, z. B. ein Kunde, können eine große Anzahl von Ereignissen haben. Um das Laden zu optimieren, kann eine Anwendung in regelmäßigen Abständen eine Momentaufnahme des aktuellen Status einer Entität speichern. Um den aktuellen Status zu rekonstruieren, findet die Anwendung den neuesten Snapshot und die Ereignisse, die seit diesem Snapshot aufgetreten sind. Infolgedessen gibt es weniger Ereignisse, die wiedergegeben werden müssen. Der Artikel Ereignisgesteuerte Datenverwaltung für Microservices nach @crichardson beschreibt dieses Muster Wenn Sie keine zusätzlichen Daten an die Ereignislistener übergeben müssen, können Sie auch die Standardereignisklasse verwenden. In diesem Fall können Sie das Ereignis und seinen Namen in einer generischen StoreEvents-Klasse dokumentieren, ähnlich der KernelEvents-Klasse. Beachten Sie, dass das spezielle OrderPlacedEvent-Objekt erstellt und an die dispatch()-Methode übergeben wird. Jetzt erhält jeder Listener des order.placed-Ereignisses das OrderPlacedEvent.
Es verarbeitet ein OrderCreated-Ereignis, indem versucht wird, Guthaben für den Auftragskunden zu reservieren. Es gibt mehrere Beispielanwendungen, die veranschaulichen, wie Die Ereignisbeschaffung verwendet wird. Wenn wir jedoch ein verteiltes Befehlsmuster betrachten, werden Befehle als Nachrichten serialisiert, die andere Dienste asynchron aufrufen. Befehle zielen in der Regel auf einen Dienst ab, der von der aufrufenden Komponente bekannt ist. Anstelle eines Nachrichtenbrokers, bei dem mehrere Dienste abonnieren können, wird der Befehl in eine Warteschlange gestellt, die regelmäßig vom Empfänger abgefragt wird. Um ein vorhandenes Ereignis nutzen zu können, müssen Sie einen Listener mit dem Dispatcher verbinden, damit er benachrichtigt werden kann, wenn das Ereignis ausgelöst wird. Ein Aufruf der addListener()-Methode des Disponenten ordnet alle gültigen PHP-Aufrufer einem Ereignis zu: In vielerlei Hinsicht spiegelt der Code, den Sie hier schreiben, den Code wider, den der Compiler für die zuvor angezeigten Feldereignisdefinitionen generiert. Sie erstellen das Ereignis mit einer Syntax, die der für Eigenschaften verwendeten Syntax sehr ähnlich ist. Beachten Sie, dass die Handler unterschiedliche Namen haben: Hinzufügen und Entfernen. Diese werden aufgerufen, um das Ereignis zu abonnieren oder sich von der Veranstaltung abzumelden. Beachten Sie, dass Sie auch ein privates Sicherungsfeld deklarieren müssen, um die Ereignisvariable zu speichern.
Sie wird auf null initialisiert. Ein Muster würde es jedem Abonnenten ermöglichen, den Vorgang abzubrechen. Für dieses Muster wird das neue Feld auf false initialisiert. Jeder Abonnent kann es in true ändern. Nachdem alle Abonnenten das Ereignis ausgelöst haben, untersucht die FileSearcher-Komponente den booleschen Wert und ergreift Maßnahmen. Sie haben Muster gesehen, die im gesamten .NET-Ökosystem befolgt werden. Wenn Sie diese Muster und Konventionen erlernen, schreiben Sie schnell idiomatische C-Code und .NET. Die EventDispatcher-Instanz sowie der Name des ausgelösten Ereignisses werden als Argumente an den Listener übergeben: Die Abwärtskompatibilität kann ein Problem sein, insbesondere bei der Arbeit mit Ereignisspeichern und Protokollen oder Nachrichtenwarteschlangen, da Nachrichten noch während des Fluges sein oder zu einem späteren Zeitpunkt wiedergegeben werden können.
Recent Comments