0

刚从 NServiceBus 开始,我试图了解总线如何适合我的 VS 解决方案。

让我们假设一个现有的应用程序,它有一个 ASP.Net 前端和一个 BLL。我将 Windsor 用于 DI,而我的 BLL 对容器一无所知。我将容器连接到一个名为“MyNamespace.IOC”的单独项目中,并且只有这个项目和我的 Web 项目了解 Windsor。

我需要访问我的 BLL 中的总线(因为那是我将发送/发布/处理消息的地方)。我需要使用 Windsor 配置 NSB,并且(我认为)在应用启动时将我的容器实例传递给 Configure.With().CastleWindorBuilder() 方法。

让所有三个项目都引用 NSB DLL 似乎很奇怪。通常如何将这一切连接在一起?

4

2 回答 2

1

您可以在某些接口后面抽象总线并仅在 IoC 和 Web 项目中提供实现。

于 2012-08-12T06:59:13.510 回答
1

如果您不想在 BLL / 域层中引用 NSB,则可以查看“域事件”。域事件处理程序可以位于它们自己的实现层中,使您的域对事件的处理一无所知,因此不需要了解服务总线。从那里您可以发布您的 esb 消息。看起来可能没有太大区别,但域事件处理层与域更加隔离。

顺便说一句:由于您是从服务总线开始的,因此您还可以在http://shuttle.codeplex.com/上查看我的 FOSS 项目——任何反馈都将不胜感激 :)

于 2012-08-12T14:32:40.910 回答