我有一个静态类库,我用它来为ASP.NET MVC3应用程序提供服务。
我正试图了解提供异步数据库调用的最佳方法。我有一个应用程序将数据发送到节点,该节点将其传递给节点知道的所有节点,依此类推。
我正在使用NServiceBus2接受来自Web客户端的节点消息。然后将控制发送回Web应用程序以允许控制器完成并因此将页面返回给用户。
在后台,侦听器选择该消息并启动节点数据库trawl。我已经创建了一个新的类库,它是可以正常工作的监听器。
我的问题是发布。我是否必须在每次调用方法时创建总线?我在哪里可以存放公交车?我想我可以试试WCF路线吗?
澄清
答案 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()。