期货/单股vs事件


10

在可以忽略性能影响(最大每秒10-20个事件)的应用程序框架中,
什么是更可维护且更灵活的方法,可以用作模块之间进行通信的首选介质-事件还是期货/承诺/单子

人们常说,事件(发布/订阅,中介)允许松散耦合,因此-应用程序更易于维护...我的经验否认这一点:一旦您拥有20多个事件,调试就会变得很困难,重构也会变得更加困难-因为很难看到:谁,何时何地使用什么。

承诺(我用Java语言编写)比事件要丑陋得多。但是:您可以清楚地看到函数调用之间的连接,因此应用程序逻辑变得更加简单明了。我怕什么 但是,Promises会带来更多的困难吗?

ps:答案不一定基于JS,非常欢迎其他功能语言的经验。


2
人们常说,事件(发布/订阅,调解员)允许松耦合,到底是谁说的?别听了!在不了解父级->紧密耦合的情况下,您无法订阅事件。调查弱事件(=调解人?)。
路易·科特曼

@狒狒我通常同意事件不会自动产生松散耦合,但是如果您引入事件总线,则可以在不知道“父”的情况下订阅事件。谁说的 Ray Ryan在Google IO 2009上,请访问google.com/events/io/2009/sessions/…13:50
围巾岭12/09/25 '10

@scarfridge是的,如果您实现某种eventaggregator,它将失去耦合,正如我在评论中所说。
路易·科特曼

.net rx是事件聚合器,我在移动设备上,稍后将发布更多详细信息
AndreasScheinert 2012年

Answers:


1

Monad和事件可以很好地一起玩,例如,看看.NET Rx。我认为甚至应该有一个JavaScript实现。 http://msdn.microsoft.com/en-us/data/gg577609.aspx


很抱歉延迟接受。“来自微软的一些愚蠢的东西”确实很棒。现在,在将Reactive Extensions开源之后,它们甚至变得更加可行。感谢您的答案(尽管您可能需要将其扩展一点;))。
c69 2012年

这取决于您要寻找的内容:一些介绍或特定示例。无论如何,我都建议您浏览频道9的视频和Erik Meijer和Brian Beckmann的主题演讲。
AndreasScheinert 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.