Tho*_*mas 5 f# observable mailboxprocessor
我有一个与金融市场相连的系统,它大量使用事件。
所有代码都被构造为事件级联,其间有过滤器、聚合等。
最初系统是用 C# 编写的,然后移植到 F#(回想起来这是一个伟大的举动),C# 代码中的事件被 F# 中的事件取代,没有多加考虑。
我听说过观察者模式,但我还没有真正了解这个主题。最近,我通过一些随机浏览阅读了有关 F# 的邮箱处理器的信息。
我读过这篇文章:观察者模式与事件驱动方法之间的差异,我没有明白,但显然超过 150 人投票认为答案也不太清楚:)
在这样的文章中:https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c看起来观察者模式与事件完全相同......
乍一看,他们似乎在解决同一类问题,只是接口不同,但这让我思考了两个问题:
邮箱处理器真的是被使用的东西吗?它似乎主要出现在较旧的文档中,并且在我正在使用的软件包中,我还没有遇到任何使用它的情况
关于观察者模式,我们使用的大量包中只有一个包在内部使用它,但其他所有东西都只是使用基本事件。
是否有适合 Observable 模式和 MailboxProcessor 的特定用例?他们有独特的功能吗?或者它们最终只是围绕事件提供语法帮助?
尽可能简化:
这是参与者模型的最小实现。您将消息发布到队列中,然后循环从队列中一条一条地读取消息。也许它会发送到另一个邮箱或对消息进行某些处理。
事件是一种语言支持的回调机制。
这是一个简单的实现。您注册一个回调委托,当引发事件时,您的委托将被调用。
有一个源(Observable),您可以使用接收器(Observer)来订阅它。可观察量表示有界或无界的值流。无界流(永远不会完成的 Observable)看起来与事件类似,但 Observable 有几个重要的属性。
OnNext* (OnError|OnCompleted)+
Run Code Online (Sandbox Code Playgroud)