Где разместить сервисный слой
Я использую FluentValidation
фреймворк. И на данный момент у меня есть несколько валидаторов (на одну сущность). Я держу сущности в отдельной сборке (ProjectName.Domain
) и валидаторы тоже.
Я читал об уровне обслуживания, который представляет посреднический уровень между репозиториями и контроллерами ( http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs). Это нормально держать service layer
в той же сборке?
Насколько я понимаю, целью сервисного уровня является хранение конкретного (или, возможно, универсального) репозитория и соответствующего валидатора и проверка по элементам репозитория. Так что реализации могут отличаться. Я прав?
Как сделать слой обслуживания с помощью FluentValidation (или независимым от фреймворка) правильным способом. Или было бы приемлемо объединить базовый объект с некоторыми FluentValidation AbstractValidator class
,
Спасибо!
1 ответ
Разделение слоев не требует физически отдельных сборок. на самом деле, чем больше у вас сборок, тем сложнее / обременительно управлять решением. разделение слоев является логической проблемой. может быть, он разделен пространством имен или соглашением об именах.
As far as I understand the purpose of service layer is to hold concrete (or possibly generic) repository and corresponding validator and make a validation over repository items. So implementations may vary. Am I right?
это может быть одно использование для сервисного уровня, но это не обязательно. Термин "услуги" стал чрезмерно употребляться в последние несколько лет до такой степени, что он почти ничего не значит.
цель наложения вашего приложения состоит в том, чтобы позволить приложению адаптироваться к изменениям. это очень расплывчатое утверждение, но это все, для чего он предназначен. слои допускают инкапсуляцию, а инкапсуляция допускает изменения.