asp.net-mvc – 如何使用ASP.NET MVC實現自定義快取提供程式
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 方法將在哪裡尋找服務?這可以容易地嘲笑嗎?