gpt4 book ai didi

.net - Autofac:发布/订阅扩展

转载 作者:行者123 更新时间:2023-12-02 22:14:44 25 4
gpt4 key购买 nike

Autofac 是否支持易于使用的消息代理来执行多对多发布/订阅事件消息传递?

编辑:

public class Service1
{
[Publish("message://an-event")]
public event Event<EventParams> AnEvent;

public void DoSomething()
{
// do something
// [...]

// publish message
if (AnEvent != null)
AnEvent(this, new EventParams(something))
}
}

public class Service2
{
[Subscribe("message://an-event")]
public OnAnEvent(object sender, EventParams eventParams)
{
Console.WriteLine("Hello World from Service2")
}
}

public class Service3
{
[Subscribe("message://an-event")]
public OnAnEvent(object sender, EventParams eventParams)
{
Console.WriteLine("Hello World from Service3")
}
}

Ninjects 消息代理扩展最酷的地方在于它的简单性。您只需向发布某些内容的事件和订阅此事件的方法添加注释。容器自动处理连接。您只需要绑定(bind)服务。

autofac 有类似的东西吗?如果没有,使用 autofac 执行此类操作的最佳方法是什么?

最佳答案

Autofac 目前不附带任何特定的消息代理支持。Autofac 是一个 IoC 容器,而不是消息代理,如果要添加任何内容,它将是支持外接系统方式Ninject's bbeventbroker工作 - 可能协助连接事件处理但不管理实际的代理。 (就像 Autofac 不做自己的 MVC 或 WCF 实现一样——只是与现有系统交互的助手。)

您可以将自己的集成与 bbvcommon Event Broker 等系统集成或 NServiceBus使用像 Autofac's lifetime events 这样的东西和/或 custom registration sources但究竟需要如何完成以及看起来像什么取决于您要集成的系统。您可以查看其他集成组件的源代码以获得想法和模式。

如果你确实得到了一些工作,你可以考虑将它作为一个 Autofac.Extras 项目贡献出来。

关于.net - Autofac:发布/订阅扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com