2012-08-11 152 views
0

刚开始使用NServiceBus,我试图了解总线如何适合我的VS解决方案。NServiceBus Visual Studio解决方案架构

我们假设一个现有的应用程序,它有一个ASP.Net前端和一个BLL。我正在使用温莎作为DI,而我的BLL没有关于容器的知识。我把这个容器连接到一个叫做“MyNamespace.IOC”的单独项目中,只有这个项目和我的web项目有Windsor的知识。

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

让所有三个项目都引用NSB DLL似乎很奇怪。一个人如何将这一切联系在一起?

+0

NSB通常作为基础设施,并与您的项目中的许多其他内容正交。你在用什么NSB?你认为你会从NSB获得什么好处?遵从@rarous建议,您可以在接口后面抽象出总线。也许看看洋葱建筑的概念。 – 2012-08-12 09:33:21

回答

1

如果您不想在BLL /域图层中引用NSB,则可以查看“域事件”。域事件处理程序可以坐在自己的实现层中,使您的域无视事件的处理,因此不需要知道服务总线。从那里你可以发布你的esb消息。它看起来没什么区别,但域事件处理层与域更加隔离。

正如一个侧面说明:因为你是一个服务总线开始了,你也可以看看我的自由和开放源码的项目在上--- http://shuttle.codeplex.com/任何反馈,将不胜感激:)

1

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