大多数(如果不是全部)ASP.NET(或 MVC)的 NSB 示例都有 Web 应用程序使用 Bus.Send
发送消息。并且可能注册一个简单的回调,这基本上就是我在我的应用程序中使用它的方式。
我想知道是否有可能和/或在同一个 ASP.NET 应用程序中处理消息是否有意义。
我问的主要原因是缓存。这个过程可能是这样的:
现在,在一个真正的 Web 应用程序中,几乎可以肯定的是,这个待处理的请求将被缓存,很可能会被缓存很长时间,因为否则应用程序必须在每次用户请求时查询数据库以获取待处理的更改当前信息。
因此,当请求最终在后端完成时(可能需要一分钟或一天),Web 应用程序至少需要使此缓存条目无效并进行另一次数据库查找。
现在我意识到这可以通过
SqlDependency
进行管理对象等等,但让我们假设它们不可用 - 也许它不是 SQL Server 后端,或者可能当前信息查询转到 Web 服务,等等。问题是,Web 应用程序如何意识到状态的变化?如果可以在 ASP.NET 应用程序中处理 NServiceBus 消息,那么处理程序的上下文是什么?换句话说,IoC 容器将不得不注入(inject)一堆依赖项,但它们的作用域是什么?这一切都在 HTTP 请求的上下文中执行吗?还是消息处理程序的所有内容都需要是静态/单例的?
对于此类问题,是否有更好/推荐的方法?
最佳答案
我自己也想知道同样的事情——Web 应用程序与 NServiceBus 基础设施的适当耦合级别是多少?在我的领域中,我有一个类似的问题需要解决,涉及使用 SignalR 代替缓存。和你一样,我没有找到很多关于这个特定模式的文档。但是,我认为可以通过遵循它的一些含义进行推理,然后确定它在您的环境中是否有意义。
简而言之,我会说我相信完全有可能让 Web 应用程序订阅 NServiceBus 事件。我不认为会有任何技术障碍,尽管我不得不承认我没有真正尝试过——如果你有时间,一定要试一试。我只是有一种强烈的感觉,如果一个人开始需要这样做,那么可能会有更好的整体设计等待被发现。这就是为什么我认为是这样的:
这有助于澄清事情吗?
关于asp.net - ASP.NET 应用程序可以处理 NServiceBus 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886182/