Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在Azure实例之间共享状态?_Asp.net_Azure_State - Fatal编程技术网

Asp.net 如何在Azure实例之间共享状态?

Asp.net 如何在Azure实例之间共享状态?,asp.net,azure,state,Asp.net,Azure,State,我想使用Windows Azure上运行的MVC web应用程序的全局数据(例如,类似于有新消息的用户列表) 对于一个普通的webapp,我可以使用一些每个appdomain的存储,比如appdomain.SetData或静态变量。我应该为Azure使用什么(缓存?blob存储?队列?)以及什么解决方案是最快的解决方案?我认为表存储可以,但根据您的需要,AppFabric缓存服务可能更适合,但请记住最后一个仍然在CTP中 照你说的,我会选择桌子存储。执行类似于检索由userId分区并由DateT

我想使用Windows Azure上运行的MVC web应用程序的全局数据(例如,类似于有新消息的用户列表)


对于一个普通的webapp,我可以使用一些每个appdomain的存储,比如appdomain.SetData或静态变量。我应该为Azure使用什么(缓存?blob存储?队列?)以及什么解决方案是最快的解决方案?

我认为表存储可以,但根据您的需要,AppFabric缓存服务可能更适合,但请记住最后一个仍然在CTP中

照你说的,我会选择桌子存储。执行类似于检索由userId分区并由DateTime键控的表中的最后一条消息的操作非常快

为“每用户数据”干杯,然后您可以使用ASP.Net会话对象

要使会话跨多个角色工作,需要在web.config中指定跨进程会话提供程序。微软已经提供了几个示例提供商

  • 一个使用表存储-

  • 最近一次使用应用程序结构缓存-

对于“全局状态内存”,我绝对推荐应用结构缓存,或者有一些社区贡献-例如memcached


如果数据的一致性并不重要,那么您可以始终在内存中使用每个实例的缓存—这将是最快的路径,并且最终会保持一致…

AppFabric缓存非常适合在角色(或相同角色的实例)之间共享数据。AppFabric缓存的有趣之处在于,它不仅仅适用于ASP.NET会话状态——缓存顶部正好有一个现成的ASP.NET会话状态提供程序

使用缓存几乎是微不足道的。下面是命令行控制台应用程序演示的一个片段:

var dataCacheFactory = new DataCacheFactory();
DataCache dataCache = dataCacheFactory.GetDefaultCache();

Console.Write("Enter a string to cache: ");
string value = Console.ReadLine();

dataCache.Put("key", value);

string response = (string)dataCache.Get("key");
Console.WriteLine("Cached string: " + response);
将其用作会话状态提供程序需要零代码更改-它由app.config/web.config驱动

vtortola对CTP中的AppFabric缓存提出了一个很好的观点,但我们应该在近期的生产中看到这一点

表存储也可以工作,这取决于查询的复杂性。听起来您的查询相对简单

由于AppFabric缓存的定价尚未公布,这可能会影响您的决策,比如说,与运行0.15美元/GB加上相关事务的表存储相比(尽管事务可能不会对您的成本产生任何明显影响,每10000个事务0.01美元)

编辑2012年6月7日自原始答案起,定价信息已更改:

  • 缓存服务正在生产中,128MB的起价为45美元(完整定价细节)
  • 现在,每100000个事务的存储成本为0.01美元,存储成本从每GB 0.125美元开始,并根据数量下降(有关详细信息,请参阅)
  • 现在有了一种新的缓存功能,可以在Web或Worker角色实例中启用,使用一定百分比的可用RAM,并且成本为零。您还可以创建一个独立的缓存角色。全新的SDK v1.7支持这两种功能。Scott Guthrie介绍了新功能(包括缓存)

AppFabric缓存是一项过时的服务。。。对于新的开发,请使用Azure Redis缓存。

我上次检查的表存储提供程序,如果不修改最新的SDK,将无法构建。我不推荐它。请远离表存储提供程序,它只是一个示例,存在严重的并发问题。在应用结构缓存退出CTP之前,请使用SQL会话提供程序。这是一个答案还是评论?这是一个合法的答案,Redis现在是通过Azure的方式