ovo*_*lko 11 asp.net state azure
我想使用在Windows Azure上运行的MVC Web应用程序的全局数据(例如,具有新消息的用户列表).
对于普通的webapp,我可以使用一些每appdomain存储,如AppDomain.SetData或只是静态变量.我应该为Azure使用什么(缓存?blob存储?队列?)以及哪种解决方案最快?
对于"每用户数据",您可以使用ASP.Net Session对象.
要使Session跨多个角色工作,您需要在web.config中指定跨进程的Session提供程序.微软已经提供了几个示例提供商
最近又使用了App Fabric Caching - http://convective.wordpress.com/2010/12/18/azure-appfabric-caching-service/
对于"全局状态记忆",我绝对推荐App Fabric Caching或者有一些社区贡献 - 例如memcached http://www.davidaiken.com/2011/01/11/windows-azure-memcached-plugin/
如果数据的一致性不重要,那么你总是可以在内存中使用每个实例的缓存 - 这将是最快的路径并且最终会保持一致......
AppFabric Cache非常适合在角色(或同一角色的实例)之间共享数据.关于AppFabric Cache的有趣之处在于它不仅仅适用于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);
Run Code Online (Sandbox Code Playgroud)
将它用作会话状态提供程序需要零代码更改 - 它全部由app.config/web.config驱动.
vtortola对AppFabric Cache在CTP中提出了一个很好的观点,但我们应该看到它在近期的生产中.
表存储也可以工作,具体取决于查询的复杂程度.听起来您的查询相对简单.
由于AppFabric Cache的定价尚未公布,这可能会影响您的决定,比如表存储运行0.15美元/ GB以及相关交易(尽管交易不会对您的成本产生任何明显影响,为0.01美元每10,000笔交易).
编辑2012年6月7日定价信息自原始答案后发生了变化:
| 归档时间: |
|
| 查看次数: |
3367 次 |
| 最近记录: |