Использование “хранилищ” в веб-приложении
-
21-09-2019 - |
Вопрос
Я вижу интенсивное использование объектов "store" в веб-приложении, над которым я работаю.Есть ли название для этого шаблона, и вы бы сказали, что эти типы находятся в BLL или DAL?
Эти хранилища содержат фрагменты того, что я бы назвал классическим типом DAL, связанным с одним типом.
Например, у нас есть TabStore, содержащий методы для сохранения и извлечения вкладок.Внутри каждого метода в TabStore есть код для вызова соответствующего запроса NHibernate.
Каковы подводные камни (если таковые имеются) при работе с этим шаблоном?Действительно ли это простая попытка разделить то, что когда-то могло быть монолитным типом Dal, на более управляемые, меньшие типы?
Примерный метод:
public IList<Tab> GetAllTabInstancesForUserId(Guid userId)
{
IList<Tab> tabInstances =
UoW.Session.CreateQuery("from Tab t where t.UserId=:userId order by t.TabOrder")
.SetGuid("userId", userId)
.SetCacheable(true)
.List<Tab>();
return tabInstances;
}
Решение
Это может быть то, что более широко известно как Хранилище.
Абстрактный репозиторий принадлежит к Модель предметной области, но должен быть реализован конкретными классами в отдельном Компонент доступа к данным.
Другие советы
Если я правильно понимаю вопрос, "хранилища" больше связаны с DAL, чем с BLL, поскольку в них должно быть мало логики - в конце концов, их роль просто "хранение".
Некоторые дополнительные детали, безусловно, были бы полезны, включая фрагменты кода, где используется 'store'...
Но основываясь на том, что у вас есть в вашем вопросе, похоже, что разработчики использовали термин "хранилище" вместо "Репозитория", который подразумевает Шаблон репозитория (которые связаны с вашим уровнем доступа к данным).
После вашего update...it определенно похоже, что то, что разработчики изначально назвали "магазином", является "репозиторием".