Pergunta

Eu estou migrando um href="http://castleproject.org/monorail/index.html" rel="noreferrer"> aplicação para ASP.NET MVC 1.0 . Na minha aplicação original que eu escrevi um provedor de cache personalizado (um provedor de cache distribuído usando memcached ). Em MonoRail esta tarefa foi muito fácil porque a estrutura utilizada interfaces e não é ICacheProvider que parece isto:

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

Uma instância desta interface está disponível em cada ação do controlador. Então, tudo o que eu tinha a fazer era implementar um provedor de cache personalizado que usa o memcached e dizer MonoRail para usar o meu provedor de cache em vez do padrão. Foi também muito fácil de zombar e teste de unidade meu controlador.

Em ASP.NET MVC 1.0, há os System.Web.Abstractions montagem (nome parece promissor) que define a HttpContextBase assim:

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

Eu não entendo como a propriedade de cache usado aqui é uma abstração de um provedor de cache. É o legado selado Cache classe. Parece que eu não sou o único lutando para zombar as classes no quadro.

Eu sou muito novo para o quadro ASP.NET MVC e eu deve estar faltando alguma coisa aqui. Eu poderia escrever um CustomBaseController que usa uma interface ICacheProvider que eu definir e todos os meus controladores derivar dessa classe base, mas se há uma solução mais elegante (ASP.NET MVCish) Eu ficaria feliz em implementá-lo. Tenho notado que HttpContextBase implementos IServiceProvider . Onde está o método GetService vai procurar Serviços? Isso pode ser facilmente ridicularizado?

Foi útil?

Solução

Cache não tem uma abstração ou o fornecedor oficial, mas você pode facilmente construir um:

ASP.NET 4.0 inclui um provedor de cache de saída abstração (AFAIK não uma abstração geral cache, mas apenas para saída caching)

Outras dicas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top