F#中松散耦合的代理

时间:2013-10-04 08:55:11

标签: events asynchronous f# functional-programming agents

我正在尝试在F#中开发一个多代理应用程序。这就是我想要做的事情:

  • 创建少量代理(例如,100)。

  • 让这些代理使用事件以异步方式相互通信。

  • ,要求每个代理商都不应该彼此了解。

  • 上述观点的实质是,对于代理商(比如A1,在这种情况下是发布者)将事件发送给另一个代理(比如A2,谁是订户),代理A2需要实例化 A1以接收来自它的通知。 F#中的事件框架和 Reactive Extensions(Rx)都遵循此实例化方法。

  • 我正在寻找的是基于F#的事件代理框架/中间件,它允许代理订阅事件而无需实例化发布该事件的代理。即代理人不了解系统的其他代理人。他们只知道存在的事件列表,并从该列表中订阅(一个或多个)事件。收到订阅的事件后,代理会调用其中一种方法。

  • 我能想到的一个解决方案是事件聚合器模式(例如在Prism中)。但是没有看到这种模式的任何F#实现。

任何参考/指针将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可能对使用 Reactive Extensions 框架进行反应式编程感兴趣。它允许您创建和操作事件流。

一个基本的介绍场景是创建一个Subject代理可以订阅或发送事件,从而充当生产者或消费者。

我不确定是否有任何具体的F#实现不同的事件模式,但框架本身非常强大,在我看来绝对值得研究。