如何在ASP.NET MVC 3应用程序中实现共享状态?

时间:2012-01-04 06:55:21

标签: c# .net asp.net-mvc-3 persistent-connection shared-state

我正在编写基本的RESTful服务,并决定使用ASP.NET MVC 3完成任务。我的应用程序将负责维护每个用户与服务器的持久连接(目前)。我假设Application_Start是注册静态/共享状态的地方(如持久连接),但在阅读Unity.MVC3的文档后,似乎每个请求/响应周期都会触发服务的创建(通过调用Application_Start)。

文档I refer to说:

  

在每个请求中,一个UpperCaseService,一个LowerCaseService和一个ExampleContext由DependencyResolver通过Unity实例化。在请求结束时,将自动释放ExampleContext

在阅读了其他文档之后,根据我已经假设的内容,将根据产生的AppDomain调用Application_Start(再次假设这将在服务器上有多少个核心附近)。

那么,维护与服务器的一组持久连接的有效方法是什么,这些连接在请求/响应阶段仍然存在,并且如果可能,在IIS服务器创建的所有AppDomain之间共享?

可能有助于提及此Web服务仅由其他网站使用。它本质上是一个身份验证代理服务器,但是,将来它会做更多的事情。因此,我不能只缓存响应,因为将来需要请求,并且不能重新验证。

1 个答案:

答案 0 :(得分:1)

如果您希望在AppDomain重新启动并在多个ASP.NET应用程序之间共享状态,则必须退出IIS进程并将其存储在可从所有应用程序访问的中心位置。数据库是一个很好的候选者。