Pregunta

Estoy Migración de un href="http://castleproject.org/monorail/index.html" rel="noreferrer"> monorraíl aplicación a ASP.NET MVC 1.0 . En mi solicitud original que escribí un proveedor de memoria caché personalizado (un proveedor de caché distribuida utilizando memcached). En monorraíl esta tarea fue muy fácil porque el marco utiliza las interfaces y hay ICacheProvider que se parece esto:

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

Una instancia de esta interfaz está disponible en cada acción del controlador. Por lo tanto, todo lo que tenía que hacer era poner en práctica un proveedor de memoria caché personalizada que utiliza memcached y contar Monorraíl de usar el profesional de la caché en lugar de la opción por defecto. También fue muy fácil burlarse y la unidad de probar mi controlador.

En ASP.NET MVC 1.0 está el conjunto de System.Web.Abstractions (nombre parece prometedor) que define la HttpContextBase como esto:

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

No entiendo cómo la propiedad de caché se utiliza aquí es una abstracción de un proveedor de memoria caché. Es el legado sellada caché clase. Parece que no soy el único luchando para burlarse a cabo las clases en el marco.

Soy muy nuevo en el marco ASP.NET MVC y debo estar perdiendo algo aquí. Podría escribir un CustomBaseController que utiliza una interfaz ICacheProvider que defino y todos mis controladores se derivan de esta clase base, pero si hay una solución más elegante (ASP.NET MVCish) que estarían encantados de ponerlo en práctica. Me he dado cuenta que implementa HttpContextBase IServiceProvider . ¿Dónde está el GetService método va a buscar ¿servicios? ¿Puede esto ser burlado fácilmente?

¿Fue útil?

Solución

Caché no tiene una abstracción oficial o proveedor, pero se puede construir fácilmente una:

ASP.NET 4.0 incluye un salida de proveedor de caché abstracción (que yo sepa no una abstracción caché general, pero sólo para salida almacenamiento en caché)

Otros consejos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top