ASP.NET MVC를 사용하여 사용자 정의 캐시 제공 업체를 구현하는 방법

StackOverflow https://stackoverflow.com/questions/873355

  •  22-08-2019
  •  | 
  •  

문제

나는 마이그레이션하고있다 모노레일 신청 ASP.NET MVC 1.0. 원래 응용 프로그램에서 사용자 정의 캐시 제공 업체 (분산 캐시 제공 업체를 사용하여 memcached). Monorail 에서이 작업은 프레임 워크가 인터페이스를 사용했기 때문에 매우 쉬웠습니다. IcacheProvider 다음과 같이 보입니다.

public interface ICacheProvider : IProvider, IMRServiceEnabled
{
    void Delete(string key);
    object Get(string key);
    bool HasKey(string key);
    void Store(string key, object data);
}

이 인터페이스의 인스턴스는 모든 컨트롤러 동작에서 사용할 수 있습니다. 따라서, 내가해야 할 일은 Memcached를 사용하고 Monorail에 기본 공급자 대신 캐시 제공 업체를 사용하도록 Monorail에 알려주는 사용자 정의 캐시 제공 업체를 구현하는 것입니다. 컨트롤러를 조롱하고 단위 테스트하기가 매우 쉬웠습니다.

ASP.NET MVC 1.0에는 System.Web.Abstractions 어셈블리 (이름이 유망한 것 같음)가 있습니다. httpcontextbase 이와 같이:

public abstract class HttpContextBase : IServiceProvider
{
    ... 
    public virtual System.Web.Caching.Cache Cache { get; }
    ...
}

여기에 사용 된 캐시 속성이 캐시 제공 업체의 추상화 방법을 이해하지 못합니다. 봉인 된 레거시입니다 은닉처 수업. 내가 유일한 사람이 아닌 것 같습니다 조롱하기 위해 고군분투합니다 프레임 워크의 클래스.

나는 ASP.NET MVC 프레임 워크를 처음 접했으며 여기서 무언가를 놓치고 있어야합니다. 나는 정의하는 iCacheProvider 인터페이스를 사용하는 CustomBaseController를 작성할 수 있으며 모든 컨트롤러 가이 기본 클래스에서 파생되는 모든 컨트롤러가 파생되지만 더 우아한 (ASP.NET MVCISH) 솔루션이 있으면 구현하게되어 기쁩니다. HTTPContextBase가 구현된다는 것을 알았습니다 Iserviceprovider. 어디있어 getservice 서비스를 찾는 방법? 쉽게 조롱 할 수 있습니까?

도움이 되었습니까?

해결책

캐시는 공식적인 추상화 또는 공급자가 없지만 쉽게 빌드 할 수 있습니다.

ASP.NET 4.0은 다음에 포함됩니다 출력 캐시 제공 업체 추상화 (Afaik ~ 아니다 일반적인 캐시 추상화이지만 산출 캐싱)

다른 팁

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top