[英]Clarification of Events vs Observer vs MailboxProcessor in F#
我有一個與金融市場相連的系統,它大量使用事件。
所有代碼都被構造為級聯事件,中間有過濾器、聚合等。
Originally the system was written in C# and then ported to F# (which in retrospect was a great move) and events in the C# code got replaced by events in F# without giving it much thoughts.
我聽說過觀察者模式,但我還沒有真正了解過這個話題。 最近,我通過一些隨機瀏覽閱讀了有關 F# 的郵箱處理器的信息。
我讀到這個: 觀察者模式和事件驅動方法之間的區別,我沒有明白,但顯然超過 150 人投票認為答案也不太清楚:)
在這樣的文章中:https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c似乎觀察者模式與事件完全相同......
乍一看,他們似乎在解決同一種問題,只是界面不同,但這讓我想到了兩個問題:
郵箱處理器真的是被使用的東西嗎? 它似乎主要出現在較舊的文檔中,並且在我正在使用的軟件包中,我沒有遇到任何使用它
關於觀察者模式,在我們使用的相當大的數量中,只有一個 package 在內部使用它,但其他一切都只是使用基本事件。
是否有適合 Observable 模式和 MailboxProcessor 的特定用例? 它們是否具有獨特的功能? 還是它們最終只是圍繞事件的句法幫助?
盡可能簡化:
這是演員 model的最小實現。 您將消息發布到隊列,然后您的循環從隊列中一一讀取消息。 也許它會發布到另一個郵箱,或者它對消息做一些事情。
事件是一種語言支持的回調機制。
這是一個簡單的實現。 您注冊一個回調委托,當事件引發時,您的委托被調用。
有一個源(Observable),您可以使用接收器(Observer)訂閱它。 一個 observable 代表一個有界或無界的 stream 值。 一個無界的 stream(一個永遠不會完成的 Observable)看起來類似於一個事件,但是 Observable 有幾個重要的屬性。
OnNext* (OnError|OnCompleted)+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.