大多数如果不是所有的ASP.NET(或MVC)的NSB示例都有Web应用程序使用
我想知道的是,在同一个ASP.NET应用程序中是否有可能和/或有意义地处理消息。
我提出这个问题的主要原因是缓存。该过程可能如下所示:
1. 用户从Web应用程序发起请求。 2. Web应用程序向独立的应用服务器发送消息,并记录本地数据库中的更改。 3. 在以后来自同一用户的页面请求中,Web应用程序知道更改并将其列在“待处理”状态中。 4. 后端会发生很多事情,最终请求被批准或拒绝。发布一个事件引用原始请求。 5. 此时,Web应用程序应该开始显示最新信息。
现在,在一个真正的Web应用程序中,几乎可以确定这个待处理请求会被缓存,很可能长时间被缓存,否则应用程序必须每次用户请求当前信息时查询挂起的更改。
因此,当请求最终在后端完成 - 这可能需要一分钟或一天 - Web应用程序至少需要使此缓存条目失效并进行另一个DB查找。
现在我意识到,这可以通过
如果在ASP.NET应用程序中处理NServiceBus消息是可能的,那么处理程序的上下文是什么?换句话说,IoC容器将不得不注入一堆依赖项,但是它们的范围是什么?所有这些都在HTTP请求的上下文中执行吗?还是每个消息处理程序都需要是静态/单例的?
对于这种类型的问题,有更好/推荐的方法吗?
Bus.Send
发送消息,可能还注册了一个简单的回调,这基本上就是我在我的应用程序中使用它的方式。我想知道的是,在同一个ASP.NET应用程序中是否有可能和/或有意义地处理消息。
我提出这个问题的主要原因是缓存。该过程可能如下所示:
1. 用户从Web应用程序发起请求。 2. Web应用程序向独立的应用服务器发送消息,并记录本地数据库中的更改。 3. 在以后来自同一用户的页面请求中,Web应用程序知道更改并将其列在“待处理”状态中。 4. 后端会发生很多事情,最终请求被批准或拒绝。发布一个事件引用原始请求。 5. 此时,Web应用程序应该开始显示最新信息。
现在,在一个真正的Web应用程序中,几乎可以确定这个待处理请求会被缓存,很可能长时间被缓存,否则应用程序必须每次用户请求当前信息时查询挂起的更改。
因此,当请求最终在后端完成 - 这可能需要一分钟或一天 - Web应用程序至少需要使此缓存条目失效并进行另一个DB查找。
现在我意识到,这可以通过
SqlDependency
对象等来管理,但是让我们假设它们不可用 - 可能不是SQL Server后端或当前信息查询转到Web服务等。问题是,Web应用程序如何意识到状态的更改?如果在ASP.NET应用程序中处理NServiceBus消息是可能的,那么处理程序的上下文是什么?换句话说,IoC容器将不得不注入一堆依赖项,但是它们的范围是什么?所有这些都在HTTP请求的上下文中执行吗?还是每个消息处理程序都需要是静态/单例的?
对于这种类型的问题,有更好/推荐的方法吗?