【问题标题】:Caching in C# without System.Web在没有 System.Web 的 C# 中缓存
【发布时间】:2010-12-02 07:01:06
【问题描述】:

我希望能够在不引用 System.Web 的情况下缓存一些对象。我想要滑动到期等等......真的没有地方去,只能使用字典和一些自制的对象到期来构建我自己的 - 或者我完全错过了.NET框架中的某些东西?

【问题讨论】:

  • 您的意思是“在没有 System.Web 的情况下在 .NET 中缓存”和“我用 C# 编写代码”,对吗?你不会真的认为 C# 编程语言有缓存功能吧?
  • 为什么你不能使用 System.Web ??除了心理障碍,没有什么能阻止你在 WinForms 或控制台应用程序中使用这个程序集 - 如果已经有解决方案,为什么还要重新发明轮子???
  • @John:实际上是的,我做到了……我是不是太天真了? :o) @marc_s:不要给婴儿剃须刀——包括 System.Web 可能会导致其他开发人员真诚地相信其中的所有内容都可以(并且应该)在非 UI 层中使用。对我来说,在业务层中拥有一个名为“Web”的东西感觉非常尴尬——称之为心理障碍,但也是如此;o)

标签: c# caching


【解决方案1】:

你可以试试Microsoft Enterprise Library Caching Application Block

使用滑动超时按需缓存的示例实用函数:

static T GetCached<T>(string key, TimeSpan timeout, Func<T> getDirect) {
    var cache = CacheFactory.GetCacheManager();
    object valueCached = cache[key];
    if(valueCached != null) {
        return (T) valueCached;
    } else {
        T valueDirect = getDirect();
        cache.Add(key, valueDirect, CacheItemPriority.Normal, null, new SlidingTime(timeout));
        return valueDirect;
    }
}

您可以指定多个过期策略,包括SlidingTimeFileDependencyExtendedFormatTime,也可以自己编写。

【讨论】:

【解决方案2】:

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2017-12-14
    • 2016-04-30
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2012-11-07
    • 1970-01-01
    相关资源
    最近更新 更多