event-driven-design

___ answer4935467 ___

Ich finde es schwierig zu verstehen, was Sie genau machen wollen, aber ich habe Erfahrung mit javaEventing, und ich werde versuchen, Ihnen so gut wie möglich zu helfen. Will Hartung ist richtig, Sie müssen Ihre Veranstaltungen irgendwo erstellen. Wenn ich Sie also richtig verstehe, möchten Sie Ihre Java-App über die Befehlszeile starten. Dann möchten Sie eine Verbindung zu einer Datenbank herstellen und nach einem einzufügenden Befehl suchen. Wenn Sie sie eingefügt haben, möchten Sie ein Ereignis erstellen. Ist das richtig?

In diesem Fall müssen Sie wahrscheinlich einige Abfragen für die Datenbank durchführen, da normale Datenbanken keine Möglichkeit haben, Ihre Anwendung zu benachrichtigen, wenn eine Bedingung erfüllt ist. Das bedeutet, dass Sie wahrscheinlich eine while-Klausel {} benötigen, in der Sie Abfragen für die Datenbank ausführen und auf eine Ergebnismenge warten, die den gesuchten Befehl enthält. Wenn Sie gefunden werden, können Sie ein Ereignis wie folgt erstellen:

%Vor%

Nun erhalten alle anderen Threads, die auf Ihr Ereignis warten (das ReceivedCommandEvent), das Ereignis und können den Befehl aus der Ereignisnutzlast abrufen.

Nun, die Frage ist, warum wollen Sie die Datenbank verwenden, um Befehle trotzdem zu kommunizieren? Verwenden Sie es einfach, um zwischen Anwendungen zu kommunizieren? Wenn Ihre andere Anwendung auch in Java geschrieben ist, können Sie verteilte Ereignisse in Betracht ziehen, sodass eine Java-App Ereignisse an Java-Anwendungen senden kann, die in anderen JVMs auf anderen Computern im Netzwerk ausgeführt werden. Vielleicht möchten Sie sich JED ( Ссылка ) ansehen, was genau das tut.

Ich hoffe, das hilft, Bob

    
___ qstntxt ___

Ich benutze javaevent , um eine gerade gesteuerte Shell für den Zugriff auf eine Datenbank zu schreiben. Also, mein Anwendungsfall ist:

  1. öffne die Shell in der Befehlszeile.
  2. Nun verbindet sich die Shell mit der Datenbank und wartet auf den kommenden Befehl.
  3. wenn es einen Befehl erhält, führt er es aus und gibt die erforderliche Ausgabe zurück.

Nun, wie kann ich %code% Art von Schleife hier vermeiden? Wie verwende ich Java Eventing richtig?

Der direkte Weg kann sein:

%Vor%

Aber ich schaue, ob Java Eventing eine bessere Lösung geben kann.

Update1:

Hier ist was ich versuche zu implementieren:

  1. Meine Anwendung ist eine Shell (wie die mongodb-Shell), um eine Schlüssel-Wert-Datenbank auszuprobieren.
  2. Der einfache Code:

%code%
%code% %code%
%code%
%code%
%code%

Nun, hier sehe ich nicht die Verwendung von Java Eventing und ich löste mein Problem, können Sie mir bitte sagen, WIE Java Eventing wird hier im Bild kommen? Ich möchte der Benutzer die auslösen Ereignis.

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123eventdriendesign ___ Ereignisgesteuertes Design ist die Implementierung von Anforderungen über eine Warteschlange von Ereignissen, die durch Benutzereingaben ausgelöst werden. Callback-Funktionen erstellen nur Ereignisobjekte und fügen sie der Warteschlange hinzu, so dass der Status unverändert bleibt. ___ qstnhdr ___ Java und ereignisgesteuerte Programmierung ___ answer4929045 ___

All diese Ereignisbibliothek sendet Ereignisse an Listener. Darüber hinaus benötigen Sie etwas, um die Ereignisse tatsächlich zu erstellen.

In diesem Fall würden Sie Code benötigen, um die Konsole zu lesen und Ereignisse zu generieren, Sie würden möglicherweise etwas anderes brauchen, um auf die Datenbank "zu hören" und Ereignisse daraus zu generieren (vorausgesetzt, Sie haben asynchrone DB-Ereignisse, die Sie suchen, B. Änderungen an Tabellen oder Zeilen).

Dieser Code muss noch geschrieben werden.

Und wenn Ihnen dieses Framework nicht solche Utility-Klassen zur Verfügung stellt, müssen Sie das selbst schreiben, und diese Klassen werden wahrscheinlich genau so sein, wie Sie es beschreiben.

Aber diese Klassen sind alle am Rande des Systems und treiben die Daten an. Der Rest Ihres Codes kann vollständig ereignisbasiert sein.

    
___
1
Antwort

Turn-basiertes Spieldesign: Event-Driven vs Game Loop

Ich erstelle mein erstes Spiel in Java. Das Spiel ist Monopoly. Ich habe Probleme damit, das Spiel so zu gestalten, dass es seine rundenbasierte Struktur modelliert (Spielerwechsel). Ich möchte sowohl einem einzelnen vom Menschen kontrollierten...
25.07.2013, 21:46
2
Antworten

Java und ereignisgesteuerte Programmierung

Ich benutze javaevent , um eine gerade gesteuerte Shell für den Zugriff auf eine Datenbank zu schreiben. Also, mein Anwendungsfall ist: öffne die Shell in der Befehlszeile. Nun verbindet sich die Shell mit der Datenbank und wartet auf den...
08.02.2011, 01:31