System.Web.Caching 与企业库缓存块

2024-04-14

对于将在 Web 应用程序和富客户端应用程序中使用的 .NET 组件,似乎有两个明显的缓存选项:System.Web.Caching 或 Ent。库。缓存块。

  • 你用什么?
  • Why?

系统.Web.缓存 http://msdn.microsoft.com/en-us/library/system.web.caching.aspx

在网络应用程序之外使用这是否安全?我看到的信息很复杂,但我认为答案可能是——有点——不是真的。

  • 知识库文章警告不要使用 1.0 和 1.1 非 Web 应用程序 http://support.microsoft.com/kb/917411
  • 2.0的页面有一个comment这表明一切正常:http://msdn.microsoft.com/en-us/library/system.web.caching.cache(VS.80).aspx http://msdn.microsoft.com/en-us/library/system.web.caching.cache(VS.80).aspx
  • 斯科特·汉塞尔曼(Scott Hanselman)对这个想法感到毛骨悚然 http://www.hanselman.com/blog/UsingTheASPNETCacheOutsideOfASPNET.aspx
  • 3.5页面 http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx包括针对此类使用的警告
  • 罗布·霍华德鼓励在网络应用程序之外使用 http://weblogs.asp.net/cschittko/archive/2004/07/04/172684.aspx

我不期望使用它的亮点之一,SqlCache依赖项 http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx,但添加缓存项更新回调 http://msdn.microsoft.com/en-us/library/system.web.caching.cacheitemupdatecallback.aspx在 .NET 3.5 中似乎是一件非常好的事情。

企业库缓存应用程序块 http://msdn.microsoft.com/en-us/library/aa480453.aspx

  • 其他块已在使用中,因此依赖性已存在
  • 缓存持久化不是必需的;重新启动时重新生成缓存就可以了

一些缓存项应该始终可用,但要定期刷新。对于这些项目,获得回调after一个项目被删除不是很方便。看起来客户端必须休眠并轮询,直到重新填充缓存项。

Win32 的 Memcached http://jehiah.cz/projects/memcached-win32/ + .NET客户端 http://sourceforge.net/projects/memcacheddotnet/

当你不需要时有什么优点和缺点分散式 cache?


以下是我针对缓存主题考虑的项目:

MemCached Win32 速度 .net 缓存 企业库缓存应用程序块

MemCached Win32:直到最近我才使用MemCached Win32。这类似于网络场(许多服务器提供相同的内容以实现高可用性),但它是一个缓存场。这意味着如果您没有足够的资源来扩大规模,您最初可以将其安装在本地网络服务器上。然后,当您继续前进时,您可以水平扩展(更多服务器)或垂直扩展(更多硬件)。这是从原始 MemCached 移植到 Windows 上的产品。该产品已广泛应用于流量非常大的网站。http://lineofthought.com/tools/memcached http://lineofthought.com/tools/memcached

速度:这是微软对MemCached等产品的回应。 MemCached 已经退出相当一段时间了,Velocity 处于 CTP 模式。我必须说,从我到目前为止所读到的内容来看,这款产品一旦推出,肯定会引起我的注意。但我无法让自己在零记录的 CTP 产品上运行大型生产项目。我已经开始使用它了,但一旦它获得动力,MemCached 甚至无法与那些锁定在 Windows 世界中的人相比!http://blogs.msdn.com/velocity/ http://blogs.msdn.com/velocity/

.NET 缓存:没有理由对标准 .NET 缓存打折扣。它是内置的,可以免费使用,无需(主要)设置。它通过提供在本地内存、单个状态服务器或集中数据库中存储项目的机制来提供灵活性。当您需要多个状态服务器(内存中的缓存)并且不想使用慢速数据库来保存缓存时,Velocity 就会发挥作用。

企业应用块:我远离所有企业应用程序块。它们是重型框架,提供的功能超出了我通常的需求!只要您记得包装所有涉及不属于您自己的代码的内容并遵循简单的编码规则,就可以坚持使用任何其他方法而不是这个方法! (当然,这只是我的意见 - MySpace 尽可能多地利用企业应用程序块!)

您不必预先选择!我通常会创建一个缓存包装器,在代码中与 Get、Set、Exists、Remove、ListKeys 等方法进行通信。然后,这会指向缓存抽象的底层级别,该抽象级别可以指向 MemCached、Velocity 或 .NET缓存。我使用 StructureMap(或选择另一个 IoC 容器)来注入我想要在给定环境中使用的缓存形式。在我的本地开发盒中,我可能会在会话中使用 .NET 缓存。在生产中,我通常使用 MemCached Win 32。但无论它如何设置,您都可以轻松地交换内容以尝试每个系统,看看哪个最适合您。您只需要确保您的应用程序尽可能少地了解事物是如何缓存的!一旦这个抽象层就位,您就可以对进出缓存的所有数据运行压缩算法 (gzip) 等操作,这将允许您在缓存中存储 10 倍的数据量。 -透明地.

如果您感兴趣,我将在我的书中介绍 .NET Cache、MemCached Win32、StructureMap 以及相应的抽象!

ASP.NET 3.5 社交网络 () 安德鲁·西默 www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net

Update更改了列出使用 memcached 的站点的链接。谢谢大卫注意到它坏了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.Web.Caching 与企业库缓存块 的相关文章

  • 缓存行对齐(需要文章澄清)

    我最近在我的应用程序中遇到了我认为是错误共享的问题 我查了一下关于如何将我的数据与缓存行对齐 他建议使用以下 C 代码 C using C 0x alignment syntax template
  • 清除另一个应用程序的 Symfony 缓存

    我想通过后端应用程序中的操作清除前端应用程序的缓存 我怎样才能实现这个目标 我相信在 symfony 1 2 中执行此操作的正确方法如下 sfContext switchTo frontend switch to the environme
  • 访问单个结构体成员是否会将整个结构体拉入缓存?

    我一直在读乌尔里希 德雷珀的书 每个程序员都应该了解的内存知识 http lwn net Articles 250967 并在部分3 3 2 缓存效果的测量 http lwn net Articles 252125 页面中间 它给我的印象是
  • 我是否应该将 CachingConnectionFactory 与 hornetq 2.4.1 一起使用

    根据有关在 hornetq 中使用 JMSTemplate 的长期信息 我们在连接到服务器时一直使用 CachingConnectionFactory 这是一个示例配置 与我们正在使用的配置非常相似
  • 无需通过电子邮件发送密码即可恢复密码

    所以 我一直在玩asp PasswordRecovery发现我真的不喜欢它 原因有几个 1 即使无法访问 Alice 的电子邮件 也可以重置 Alice 的密码 密码重置的安全问题缓解了这个问题 但并不能真正令我满意 2 Alice 的新密
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • 在.Net中使用ObjectCache缓存对象并设置过期时间

    我陷入了一个场景 我的代码如下 更新 它不是关于如何使用数据缓存 我已经在使用它及其工作 它是关于扩展它 以便该方法在到期时间和从外部源获取新数据之间不会进行调用 object string this GetDataFromCache ca
  • IE 302 重定向无缓存标头问题

    发布信息后返回 302 重定向 此重定向旨在重新加载当前页面 这一切都工作正常 但 IE 在标头中添加了 No Cache Cache Control no cache 我们使用 Squid 来缓存我们的内容 并将其放在标头中绕过了鱿鱼 由
  • PCRE PHP “S”(模式的额外分析)修饰符的用法和实用性的具体示例?

    PHP 手册对 PCRE 的 S 模式的额外分析 修饰符进行了以下说明http php net manual en reference pcre pattern modifiers php http php net manual en re
  • PHP 会话锁定并使用 Memcache 存储会话

    我有一个标准的 html 页面 其中有一些 img 标签 每个标签都指向我们服务器上的一个 php 文件 加载 php 文件时 它会在生成图像之前将一些数据保存到会话中 来自每个脚本的会话中的数据随后将在我们的应用程序中的其他脚本中使用 生
  • PHP memcache - 检查池中是否有可用的服务器?

    我有以下代码 cluster local array host gt 192 168 1 1 port gt 11211 weight gt 50 cluster local2 array host gt 192 168 1 2 port
  • Flask:缓存静态文件(.js、.css)

    我真的找不到任何这方面的资源 那么如何将视图 函数的缓存与静态文件 即 css js 分开 我想将静态对象缓存一周 另一方面 我只需要缓存函数 视图几分钟 当我执行以下操作时 from flask ext cache import Cach
  • 请求标头与响应标头

    我正在尝试将图像缓存在网站上 该图像由 PHP 提供服务 其中我使用适当的值设置缓存控制的响应标头 但这不是缓存图像 我认为这可能与具有无缓存缓存控制的请求标头有关 标题如下 响应头 Access Control Allow Origin
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • Redis是如何实现高吞吐量和高性能的?

    我知道这是一个非常普遍的问题 但是 我想了解允许 Redis 或 MemCached Cassandra 等缓存 以惊人的性能极限工作的主要架构决策是什么 如何维持连接 连接是 TCP 还是 HTTP 我知道它完全是用C写的 内存是如何管理
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • .net Mef 与企业库 5.0

    我想将 mef 与 Enterprise Library 5 0 的日志记录和异常块一起使用 我正在做的是定义 MEF 在目录中查找的插件 然后它为我导入它 不过 我也在插件中使用日志记录和异常处理 我希望能够通过 mef 插入 LogWr
  • 未调用派生类的 C++/cli 静态构造函数

    如上所述在我的另一篇帖子中 https stackoverflow com q 29410579 2505186从 VS 2008 net 3 5 迁移到 VS 2013 并使用 net 4 0 而不是 4 5 后 我发现我的应用程序出现了
  • 如何在 Laravel 5 中通过键获取所有缓存项的列表?

    Laravel 中的 Cache 类具有 get itemKey 等方法来从缓存中检索项目 以及 Remember itemKey myData1 myData2 来将项目保存在缓存中 还有一个方法可以检查缓存中是否存在某个项目 Cache
  • 是否可以调整AppFabric缓存服务器来存储更大的对象?

    当我假设将较大的对象图添加到缓存中时 我收到 AppFabric 缓存服务器错误 错误代码 子状态 连接已终止 可能是由于服务器或网络问题或序列化对象大小大于服务器上的 MaxBufferSize 请求的结果未知 我确信这不是网络问题 我能

随机推荐

  • 只允许父工厂方法实例化子类

    我毫不怀疑这个问题已经在这里被问过并回答过十几次了 但我就是找不到满意的答案 我有一个类系列 我只想通过这样的静态方法由抽象父类实例化 我在这里可能有拼写错误 我正在输入但没有尝试编译 public abstract class Papa
  • 来自资源的图像的缩略图

    我想制作图像的缩略图 该图像位于资源可绘制中 任何人都可以帮助我 试试这个代码 im ImageView findViewById R id imageView1 byte imageData null try final int THUM
  • 如何使用 apache poi 检查 .xlsx 文件中的单元格文本是否有删除线

    我需要检查单元格的文本格式 xlsx文件 Microsoft Excel 文件 是删除线或不使用阿帕奇兴趣点图书馆 看下图 请检查此图片 https i stack imgur com beg4M png 我需要检查 B3 单元格文本是否为
  • Log4Net:使用 UTC 时间记录

    使用 log4net 1 2 11 0 w NET 如何让 RollingFileAppender 输出 UTC 日期 根据 Apache 的说法 它应该很简单
  • iPhone 6s Plus 横向尺寸为紧凑型

    我有一部 iPhone 6s Plus 并且有一个支持纵向和横向方向的应用程序 当我旋转设备并读取属性 mainViewController traitCollection horizo ntalSizeClass 时 它始终等于UIUse
  • 如何在不进行试飞的情况下向您的团队分发测试版 iOS 应用程序?

    我已经构建了一个应用程序 我想将它分发给很多用户 直到它获得苹果的批准 我不想用试飞和其他第三方分发应用程序 有什么办法可以做到这一点 Thanks 您可以使用分发配置文件创建 ipa 然后通过邮件或任何共享介质共享它 一般我用dropbo
  • 如何在单独执行“npm install ”后运行安装后脚本

    我正在维护以下目录结构 home user Desktop app package json server js node bin node npm include lib
  • 一次显示多个权限xamarin表单

    我正在为 Android 和 IOS 创建 Xamarin Form PCL 项目 是否可以在屏幕上同时显示多个权限 我的应用程序正在使用位置 存储和相机权限 从我当前的代码来看 这是在不同页面上一一显示权限弹出窗口 就像使用相机之前一样
  • WooCommerce:在结帐页面中默认设置国家/地区

    我在用WooCommerce在我的 WordPress 网站中 默认情况下 结帐页面上会填充客户的账单和运输详细信息 我希望该国家 地区不会被默认设置 相反 即使用户已登录 它也会要求选择国家 地区 有什么建议么 为了实现这个目标我应该做什
  • 如何在 Sails.js 或 Express.js 中设置本地时区

    当我在帆上创建或更新记录时 它会在 updateAt 处写入 updatedAt 2014 07 06T15 00 00 000Z 但我现在是 GMT 2 小时 在这个季节 更新是在 16 00 执行的 我的模型中声明的所有日期时间字段都有
  • C# azure 函数中读取 Azure IoT 设备列表时出现异常

    我正在 C 函数中使用 IoT 中心 SQL 查询来获取 Azure IoT 设备列表 var query registry CreateQuery SELECT deviceId tags SiteId FROM devices 100
  • 我可以使用 line_exists 检查初始值或不相等的值吗?

    ABAP 7 40 添加了line exists 谓词函数来分析内表 但我有什么办法可以检查是否存在特定列为初始值或与目标值不同的行 例如 如何检查具有初始材料列的行 例如此表中的第三行 Document Country Material
  • PhpStorm 本地主机根目录

    在 PhpStorm 中运行项目时 它会将我带到 localhost 63342 MyProject index php 但这会破坏所有链接 因为它将项目名称添加到我的链接工作的 URL 中 因为在域上它们都是 mysite com ima
  • 有条件去抖,取决于 event.keyCode

    我有一个搜索字段 它接受用户输入并使用去抖事件侦听器发出 ajax 请求 html
  • 异常消息:没有工作文件夹映射

    我正在尝试在 tfs vs net 2012 中测试自动化构建 我已在源代码管理资源管理器中设置了工作路径 但现在出现错误 Exception Message There is no working folder mapping for t
  • 切换到没有名称的窗口

    使用 Codeception 测试框架和 Selenium 2 模块来测试网站 我最终点击了一个超链接 该链接打开了一个没有名称的新窗口 结果是switchToWindow 函数将不起作用 因为它正在尝试切换到父窗口 我当前所在的窗口 如果
  • 照常针对 docker 容器运行测试或 dockerize 测试?

    我是 Docker 新手 正在阅读有关 Docker 的文章 这是在独立且可重复的标准化配置 正确完成时 中测试系统的好方法 然而 在我读过的所有内容中 似乎并没有过多强调如何使用 docker 容器进行测试 docker 用于 包含 基础
  • 避免直接访问JSF页面的源代码

    当我请求时 personal faces public login xhtml 那么它工作正常 但是当我请求时 personal public login xhtml没有 faces我获得了该页面的原始源代码 我想避免人们看到页面的源代码
  • 如何在 JavaScript 中对两个对象数组执行内连接?

    我有两个对象数组 var a id 4 name Greg id 1 name David id 2 name John id 3 name Matt var b id 5 name Mathew position 1 id 6 name
  • System.Web.Caching 与企业库缓存块

    对于将在 Web 应用程序和富客户端应用程序中使用的 NET 组件 似乎有两个明显的缓存选项 System Web Caching 或 Ent 库 缓存块 你用什么 Why 系统 Web 缓存 http msdn microsoft com