Как реализовать собственный поставщик кэша с помощью ASP.NET MVC

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

  •  22-08-2019
  •  | 
  •  

Вопрос

Я мигрирую МоноРейл заявление на АСП.NET MVC 1.0.В моем исходном приложении я написал собственный поставщик кэша (поставщик распределенного кэша, использующий кэширование памяти).В 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 использовать моего поставщика кеша вместо по умолчанию.Также было очень легко издеваться и тестировать мой контроллер.

В ASP.NET MVC 1.0 есть сборка System.Web.Abstractions (имя выглядит многообещающе), которая определяет HttpContextBase так:

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

Я не понимаю, почему используемое здесь свойство Cache является абстракцией поставщика кэша.Это наследие запечатано Кэш сорт.Кажется, я не один такой изо всех сил пытаюсь высмеять из классов в рамках.

Я новичок в платформе ASP.NET MVC и, должно быть, что-то здесь упускаю.Я мог бы написать CustombaseController, который использует интерфейс Icacheprovider, который я определяю, и все мои контроллеры получают из этого базового класса, но если есть более элегантное решение (ASP.Net MVCISH), я был бы рад его реализовать.Я заметил, что HttpContextBase реализует IServiceProvider.Где GetService метод будешь искать сервисы?Можно ли легко высмеять это?

Это было полезно?

Решение

У Cache нет официальной абстракции или поставщика, но вы можете легко его создать:

ASP.NET 4.0 включает в себя абстракция поставщика кэша вывода (НАСКОЛЬКО МНЕ ИЗВЕСТНО нет общая абстракция кэша, но только для выход кэширование)

Другие советы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top