Futures / Monady vs. Wydarzenia

10

W ramach aplikacji, w których wpływ na wydajność można zignorować (maksymalnie 10–20 zdarzeń na sekundę),
co jest łatwiejsze w utrzymaniu i elastyczne jako preferowane medium komunikacji między modułami - Wydarzenia lub Futures / Obietnice / Monady ?

Często mówi się, że Wydarzenia (pub / sub, mediator) pozwalają na luźne sprzężenie, a tym samym - łatwiejszą w utrzymaniu aplikację ... Moje doświadczenie zaprzecza temu: gdy masz więcej niż ponad 20 zdarzeń - debugowanie staje się trudne, podobnie jak refaktoryzacja - ponieważ bardzo trudno jest zobaczyć: kto, kiedy i dlaczego korzysta z czego.

Obietnice (koduję w Javascript) są o wiele brzydsze i głupsze niż Wydarzenia. Ale: wyraźnie widać połączenia między wywołaniami funkcji, więc logika aplikacji staje się bardziej prosta. Czego się boję jest jednak to, że obietnice przyniosą ze sobą więcej twardego połączenia ...

ps: odpowiedź nie musi być oparta na JS, mile widziane jest doświadczenie z innych języków funkcjonalnych.

c69
źródło
2
Często mówi się, że Wydarzenia (pub / sub, mediator) pozwalają luźno powiązać, kto do diabła tak mówi? przestań ich słuchać! Nie możesz zasubskrybować wydarzenia bez znajomości elementu nadrzędnego -> ścisłe powiązanie. Spójrz na słabe zdarzenia (= Mediator?).
Louis Kottmann,
@Baboon Zasadniczo zgadzam się, że wydarzenia nie powodują automatycznie luźnego sprzężenia, ale jeśli wprowadzisz szynę zdarzeń, możesz subskrybować wydarzenia bez znajomości „rodzica”. Kto to mówi? Ray Ryan w Google IO 2009, zobacz google.com/events/io/2009/sessions/… o 13:50.
scarfridge
@ scarfridge tak, jeśli zaimplementujesz jakiś eventaggregator, stracisz sprzężenie, jak powiedziałem w moim komentarzu.
Louis Kottmann,
.net rx Jest agregatorem zdarzeń, jestem na telefonie komórkowym, opublikuje więcej szczegółów później
AndreasScheinert

Odpowiedzi:

1

Monady i wydarzenia grają całkiem dobrze razem, na przykład spójrz na .NET Rx. Myślę, że powinna istnieć nawet implementacja JavaScript. http://msdn.microsoft.com/en-us/data/gg577609.aspx

AndreasScheinert
źródło
przepraszam za opóźnione przyjęcie. „jakaś głupia rzecz z Microsoft” jest naprawdę niesamowita. A teraz, kiedy Reaktywne rozszerzenia zostały otwarte, są jeszcze bardziej opłacalne. Dziękuję za odpowiedź (choć możesz chcieć ją trochę rozwinąć;)).
c69
To zależy od tego, czego szukasz: jakieś wprowadzenie lub konkretne przykłady. W każdym razie mogę polecić Ci obejrzenie filmów na kanale 9 oraz rozmów Erika Meijera i Briana Beckmanna na ten temat.
AndreasScheinert