Место для проверки

В своем приложении я использую эту структуру:

Контроллер -> Службы -> Хранилища

Репозитории + фильтры создаю как слой dal. Но я размещаю методы проверки (например, для обязательных полей) на уровне обслуживания. Это правильно? Или лучше будет, если я заменю валидацию на уровне репозитория?

И второй вопрос. В этой архитектуре сервисы могут работать со многими репозиториями. Будет ли хорошо разрешить сервисам работать с другими сервисами или только мне нужно работать с репозиториями?


person Maksim Kondratyuk    schedule 30.04.2009    source источник


Ответы (2)


Есть несколько библиотек, которые могут помочь вам с проверкой.

Первый (который я использую лично) - это FluentValidation, который позволяет создавать валидаторы для объектов вашей модели. Его можно найти по адресу http://www.codeplex.com/FluentValidation.

Существует еще одна библиотека, специально предназначенная для приложений ASP.NET MVC, которая обеспечивает проверку как на стороне сервера, так и на стороне клиента, под названием xVal. http://www.codeplex.com/FluentValidation

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

person Chad Moran    schedule 30.04.2009

Здесь есть очень хороший учебник по проверке в MVC ...

http://stephenwalther.com/blog/archive/2009/03/04/new-asp.net-mvc-validation-tutorials-posted-at-www.asp.netmvc.aspx

Вы должны посмотреть.

person Martin Peck    schedule 30.04.2009
comment
Да, спасибо, я прочитал это. Я создаю валидацию уровня сервиса, но теперь у меня есть идея заменить валидацию для самих бизнес-объектов, и я не знаю, делать это или нет? Я не знаю, что лучше: 1) объекты должны проверять себя или 2) другой слой должен проверять объекты. - person Maksim Kondratyuk; 30.04.2009
comment
В asp.net у нас есть 1 вариант - Page.Validate (), в этом случае легко создать каскадную проверку в тяжелых объектах. - person Maksim Kondratyuk; 30.04.2009