Object Azure缓存-存储在会话中的对象

Object Azure缓存-存储在会话中的对象,object,caching,azure,Object,Caching,Azure,我计划将.Net应用程序(基于SQL Server)迁移到Azure。然而,在我朝着这一方向作出重大努力之前,我想确保今后不会出现瓶颈。在代码中,在一些地方,我们只是在会话中放置对象(与文本键值相反)。像这样: 会话(“客户端列表”)=\u MyClientList (其中MyClientList对象封装了从数据库返回的表或代码中定义的视图模型对象) 问题是,如果我使用Azure缓存(在Azure云服务中),缓存api是否能够跨各种实例自动持久化(序列化/反序列化)这些对象 代码现在可以正常工作

我计划将.Net应用程序(基于SQL Server)迁移到Azure。然而,在我朝着这一方向作出重大努力之前,我想确保今后不会出现瓶颈。在代码中,在一些地方,我们只是在会话中放置对象(与文本键值相反)。像这样:

会话(“客户端列表”)=\u MyClientList

(其中MyClientList对象封装了从数据库返回的表或代码中定义的视图模型对象)

问题是,如果我使用Azure缓存(在Azure云服务中),缓存api是否能够跨各种实例自动持久化(序列化/反序列化)这些对象

代码现在可以正常工作(当然,只有一个服务器实例正在运行,而且很可能服务器会保持对这些进程内对象的引用处于活动状态,因此不会在磁盘上持久化这些对象)

一个相关的问题是,在负载平衡器后面启动了两个实例之后,是否有一种方法可以测试一切是否正常。我的怀疑是,在没有负载的情况下,所有请求都将命中同一个实例,因此可以正确测试缓存。是吗?对不起,我是这个领域的新手

提前谢谢

问题是,如果我使用Azure缓存,缓存api是否能够 要在整个系统中自动持久化(序列化/反序列化)这些对象 各种各样的例子

是的,Azure缓存将为您做到这一点(我在应用程序中使用角色缓存)。但是,为此,您必须使用
Azure缓存会话状态提供程序
。这是您需要放在web.config文件中的内容:

<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
  <providers>
    <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/>
  </providers>
</sessionState>

通过这种方式,您可以测试请求是在所有服务器上进行,还是仅在一台服务器上进行,并且在切换服务器时会话将被持久化。

您是否计划将应用程序部署为
Azure网站
Azure云服务
?谢谢。另外,要持久化的对象还包括其他对象。这些内部对象也会被持久化吗?我可以尽量避免这种情况,但我只是想了解一下自己的情况。简单的答案是肯定的。它的工作原理与进程内会话完全相同。
@System.Environment.MachineName