Futures / Monaden gegen Events

10


Was ist in einem Anwendungsframework, in dem die Auswirkungen auf die Leistung ignoriert werden können (maximal 10 bis 20 Ereignisse pro Sekunde), wartbarer und flexibler als bevorzugtes Medium für die Kommunikation zwischen Modulen zu verwenden - Ereignisse oder Futures / Versprechen / Monaden ?

Es wird oft gesagt, dass Ereignisse (Pub / Sub, Mediator) eine lose Kopplung ermöglichen und somit - eine wartbarere App ... Meine Erfahrung bestreitet dies: Sobald Sie mehr als 20 Ereignisse haben, wird das Debuggen schwierig, ebenso wie das Refactoring. weil es sehr schwer zu sehen ist: wer, wann und warum benutzt was.

Versprechen (ich codiere in Javascript) sind viel hässlicher und dümmer als Ereignisse. Aber: Sie können die Zusammenhänge zwischen Funktionsaufrufen klar erkennen, sodass die Anwendungslogik einfacher wird. Was ich fürchte. ist jedoch, dass Versprechen mehr harte Kopplung mit sich bringen werden ...

ps: Die Antwort muss nicht auf JS basieren, Erfahrungen aus anderen funktionalen Sprachen sind sehr willkommen.

c69
quelle
2
Es wird oft gesagt, dass Events (Pub / Sub, Mediator) eine lose Kopplung erlauben, wer zum Teufel sagt das? Hör auf, ihnen zuzuhören! Sie können ein Ereignis nicht abonnieren, ohne die übergeordnete -> enge Kopplung zu kennen. Untersuchen Sie schwache Ereignisse (= Mediator?).
Louis Kottmann
@Baboon Ich stimme im Allgemeinen zu, dass Ereignisse nicht automatisch eine lose Kopplung erzeugen. Wenn Sie jedoch einen Ereignisbus einführen, können Sie Ereignisse abonnieren, ohne den "Elternteil" zu kennen. Wer sagt es? Ray Ryan auf Google IO 2009, siehe google.com/events/io/2009/sessions/… um 13:50 Uhr.
Scarfridge
@scarfridge Ja, wenn Sie eine Art Eventaggregator implementieren, geht die Kopplung verloren, wie ich in meinem Kommentar sagte.
Louis Kottmann
.net rx Ist ein Ereignisaggregator, ich bin auf dem Handy, wird später weitere Details veröffentlichen
AndreasScheinert

Antworten:

1

Monaden und Events passen sehr gut zusammen, schauen Sie sich zum Beispiel .NET Rx an. Ich denke, es sollte sogar eine JavaScript-Implementierung geben. http://msdn.microsoft.com/en-us/data/gg577609.aspx

AndreasScheinert
quelle
Entschuldigung für die verspätete Annahme. "irgendein dummes Ding von Microsoft" ist in der Tat fantastisch. Und jetzt, nachdem Reactive Extensions Open-Source-Produkte sind, sind sie noch rentabler. Vielen Dank für die Antwort (obwohl Sie es vielleicht ein wenig erweitern möchten;)).
c69
Es kommt darauf an, wonach Sie suchen: eine Einführung oder spezifische Beispiele. Auf jeden Fall kann ich Ihnen empfehlen, Channel9-Videos und Vorträge von Erik Meijer und Brian Beckmann zu diesem Thema zu erkunden.
AndreasScheinert