【问题标题】:Loosely Coupled Agents in F#F# 中的松散耦合代理
【发布时间】:2013-10-11 05:00:54
【问题描述】:

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

  • 创建几个代理(比如 100 个)。

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

  • 但是,要求这些代理中的每一个都不应相互了解。

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

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

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

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

【问题讨论】:

    标签: events asynchronous f# functional-programming agents


    【解决方案1】:

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

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

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

    【讨论】:

    • 我可能错了,但据我了解,Rx 框架需要实例化(正如我上面提到的)。例如对于代理(比如 A1,在这种情况下是发布者)将事件发送到另一个代理(比如 A2,他是订阅者),代理 A2 需要实例化 A1 以接收来自它的通知。我正在寻找的是一个基于 F# 的事件代理框架/中间件,它允许代理订阅事件 实例化发布该事件的代理。即代理不了解系统中的其他代理。
    猜你喜欢
    • 2010-10-22
    • 2020-10-26
    • 2017-06-05
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多