Шаблоны проектирования для кэширования изображений в MVC? - PullRequest
0 голосов
/ 23 декабря 2010

Я разрабатываю систему кэширования изображений, которая будет использоваться в MVC CMS. Основное назначение кэширования изображений - модифицировать изображения: масштабировать, обрезать и т. Д. И кэшировать их на сайте клиента.

Я создал модель и маппер кэша изображений, которые взаимодействуют с базой данных, чтобы отслеживать изображения и знать, какие действия были применены к ним (масштабирование, обрезка и т. Д.).

В дополнение к Model и Mapper я создал класс ImageCacher, который используется API для управления созданием модели и изображений на основе аргументов, передаваемых клиентским сайтом, этот класс создает изображения и генерирует ссылки на изображения для просмотра.

Сотрудник утверждал, что мне нужно включить функциональность этого последнего класса в модель, так как основная часть логики должна идти в модели.

Я с уважением не согласен с ним, так как считаю, что обязанность модели - работать с информацией об изображениях, кэшируемых на уровне базы данных, а класс ImageCacher отвечает за создание URL / изображения, которое мы будем кэшировать (сохраняя принцип единой ответственности). В дополнение к этому я считаю, что модель не должна иметь функций, связанных с презентацией, таких как создание или показ изображений.

У кого-нибудь есть понимание этого? Существует ли какой-то конкретный шаблон проектирования, который сделает это разделение задач понятным и можно ли многократно использовать образное хранилище? Должен ли я добавить всю логику в модель?

Спасибо.

1 Ответ

0 голосов
/ 24 декабря 2010

IMO, это слишком много усилий для сомнительного результата.Вы строите всю логику, тратите ресурсы ЦП и SQL, чтобы выяснить, на каком клиенте какие изображения кэшируются, а кэш на стороне клиента - ненадежный способ хранения вещей.Я не знаю природу вашего приложения, но если несколько клиентов используют одни и те же файлы изображений (с измененным размером, обрезкой и т. Д.), То экономно хранить их на стороне клиента.

,Ваш вопрос, модель IMO - это место для хранения логики, так как ее проще использовать, когда она в модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...