NServiceBus使用静态类库

时间:2011-01-12 08:08:01

标签: nservicebus

我有一个静态类库,我用它来为ASP.NET MVC3应用程序提供服务。

我正试图了解提供异步数据库调用的最佳方法。我有一个应用程序将数据发送到节点,该节点将其传递给节点知道的所有节点,依此类推。

我正在使用NServiceBus2接受来自Web客户端的节点消息。然后将控制发送回Web应用程序以允许控制器完成并因此将页面返回给用户。

在后台,侦听器选择该消息并启动节点数据库trawl。我已经创建了一个新的类库,它是可以正常工作的监听器。

我的问题是发布。我是否必须在每次调用方法时创建总线?我在哪里可以存放公交车?我想我可以试试WCF路线吗?


澄清

  • 我认为直接从Web应用程序提取消息并不是一个好主意 - 就像你可能不会将DB代码放在控制器中一样。我想要一个单独的类库,即“业务逻辑”。

2 个答案:

答案 0 :(得分:0)

您为每项服务创建一个总线。服务可以是Windows服务,win-forms应用程序,也可以是您的网站 在网站/ webservice场景中,我通常在global.asax的application_start事件中创建总线。

您可以将总线保存在容器中,例如StructureMap或Castle Windsor。

不要直接从您的网站发布消息,而是调用发布消息的wcf服务。或使用从您的网站发送。花点时间了解使用nservicebus进行消息传递的不同用法。特别是pub / sub和发送/回复场景的差异何时使用必要的东西。

到你的其他文字:我不明白你的情景。如果您还有其他问题,请编辑您的原始帖子以帮助我们理解。

答案 1 :(得分:0)

有几种方法可以从ASP.NET Web应用程序在总线上获取消息。首先,您可以在全局位置(global.asax或其他)引导Bus一次,并提供对它的引用。我们更喜欢通过一些抽象来引用总线,通常是诸如ServiceAgent< T>之类的类。其中T是一条消息,你将在内部Bus.Send()。如果您不想在Web应用程序中提升总线,另一个选择是将NServiceBus端点公开为WCF服务。这可以通过使用WcfService< TRequest,TResponse>实现一个类来完成。从那里你可以简单地调用暴露的SOAPy服务。如果您不喜欢SOAP,则可以以不同方式配置端点。然后,您可以在端点内执行Publish()。