2013-10-04 68 views
3

我正在嘗試在F#中開發多代理應用程序。這是我想要做的:F中的鬆散耦合代理#

  • 創建幾個代理(比方說100)。

  • 讓這些代理使用事件異步地相互通信。

  • 但是,要求是這些代理中的每一個都不應該彼此瞭解。

  • 上述觀點的實質是,對於一個代理(比如A1,這個案例中的發佈者是誰)發送一個事件給另一個代理(比如A2,誰是訂戶),代理A2需要實例化 A1接收來自它的通知。 F#中的事件框架和反應式擴展(Rx)都遵循這種實例化方法。

  • 我正在尋找的是一個F#基於事件的經紀人框架/中間件,它允許代理訂閱事件沒有實例它出版該事件代理。即代理人不知道系統的其他代理人。他們只知道存在的事件列表,並從該列表中訂閱(一個或多個)事件。在接收訂閱的事件時,代理調用其方法之一。

  • 我能想到的一個解決方案是Event Aggregator模式(例如在Prism中)。但是還沒有看到這種模式的任何F#實現。

任何參考/指針將不勝感激。提前致謝。

回答

0

您可能會感興趣與Reactive Extensions框架反應編程。它可以讓你創建和操作事件流。

一個基本的介紹性場景是創建一個Subject,您的代理可以訂閱或發送事件,從而充當生產者或消費者。

我不確定是否有任何具體的F#實現不同的事件模式,但框架本身是非常強大的,絕對值得我調查。

+0

我可能是錯的,但從我的理解,Rx框架需要實例化(正如我上面提到的)。例如對於一個代理(比如A1,在這種情況下是發佈者)將事件發送給另一個代理(比如A2,誰是訂戶),代理A2需要實例化A1以接收來自它的通知。我正在尋找的是基於F#的事件代理框架/中間件,它允許代理訂閱事件*而不實例化發佈該事件的代理。即代理人不知道系統的其他代理人。 –