Хорошо, я создаю приложение, используя три уровня для управления бизнес-логикой.Место слоя кэширования в архитектуре служебной ориентации
1) Первый уровень решения транспортных задач. Слой посылает запросы, получает ответы и обрабатывает сетевые ошибки. Транспортный уровень вызывает методы удаленного API и готовит данные для использования внутри приложения.
2) Второй слой - Service
. Сервис - это класс (или группа функций) для управления конкретными данными из API для его организации в соответствии с бизнес-требованиями. Например, ProductService
отображает список продуктов, затем денормализует каждый из них на объект и сортирует коллекцию.
3) И третий слой - это Controller
. Этот слой является классическим слоем от шаблона MVC
. Он относится к службе данных и передает ее на уровень View
.
В результате мы получаем схему взаимодействия:
Controller => Service => Transport
Очевидно, что эта схема требует хранения результата от транспортного уровня сервиса кэширования (такие как Memcached). Поэтому необходимо добавить четвертый слой - Cache
.
Итак, в каком месте в этой схеме должен быть расположен слой Cache
, и какой из трех слоев выше должен его контролировать (скажем, извлечение данных из кеша или получение из API, недействительность кеша и т. Д.)?
Мой вопрос концептуальный вопрос, и его не требует указаний конкретных технологий, однако я хочу, чтобы получить ответ в контексте из PHP и Symfony 2/3 рамок.
Вопрос широкий и зависит от деталей ваших услуг. На мой взгляд, Cache не является слоем, а оболочкой вокруг некоторого уровня или портом/контрактом для вашего фактического кеша. Это может быть транспортное промежуточное ПО, если вам нужно полностью кэшировать некоторые запросы, или это может быть оберткой вокруг вашего сервиса ... – Ziumin