public interface ICacheProvider : IProvider,IMRServiceEnabled { void Delete(string key); object Get(string key); bool HasKey(string key); void Store(string key,object data); }
每个控制器动作都可以使用此接口的实例.所以,我只需要实现一个使用memcached和tell的自定义缓存提供程序
Monorail使用我的缓存提供程序,而不是默认缓存.对我的控制器进行模拟和单元测试也很容易.
在ASP.NET MVC 1.0中,有一个定义HttpContextBase的System.Web.Abstractions程序集(名称看起来很有前途):
public abstract class HttpContextBase : IServiceProvider { ... public virtual System.Web.Caching.Cache Cache { get; } ... }
我不明白这里使用的Cache属性是缓存提供程序的抽象.这是传统密封的Cache课程.看来,我不是struggling to mock在框架中唯一的课.
我对ASP.NET MVC框架非常新,我必须在这里遗漏一些东西.我可以编写一个CustomBaseController,它使用我定义的ICacheProvider接口
所有的控制器都是从这个基类派生的,但是如果有一个更优雅的(ASP.NET MVCish)解决方案,我很乐意实现它.我注意到HttpContextBase实现了IServiceProvider.GetService方法将在哪里寻找服务?这可以容易地嘲笑吗?
解决方法
> http://weblogs.asp.net/zowens/archive/2008/08/04/cache-abstraction.aspx
> http://memcachedproviders.codeplex.com/SourceControl/changeset/view/15983#58762
ASP.NET 4.0包括一个output cache provider abstraction(AFAIK不是一般的缓存抽象,而只是用于输出缓存)
原文地址:https://www.jb51.cc/aspnet/250759.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。