Каждый раз, когда я начинаю работать над новым веб-приложением ASP.NET MVC, я не уверен, стоит ли использовать проверку DataAnnotations
. Что-то в этом не так.
Например, допустим, у меня есть UserService
, которому передано CreateUserModel
от действия Create
AccountController
. Чтобы пользователь всегда предоставлял имя, я установил свойство модели Name
, чтобы оно имело атрибут [Required]
. Теперь я в безопасности, зная, что связыватель модели никогда не даст мне CreateUserModel
, если у него нет имени.
Моя проблема в том, что для того, чтобы мой UserService
был повторно используемым компонентом моей системы, он не может полагаться на тот факт, что вышеприведенный уровень предоставляет действительные данные, и, безусловно, должен также проверять эти данные. Необходимость в этом еще более подчеркивается, если учесть, что вы, возможно, захотите написать веб-службу, которая полностью использует UserService
(и не будет иметь связующего для модели, чтобы выполнить всю проверку аннотации данных для него).
Итак, мой вопрос: какова наилучшая практика в этой ситуации? Проверить с аннотациями данных и повторить эту проверку в службах? Проверять только в сервисах и выкидывать исключения? Смесь обоих?
Надеюсь, мой вопрос не слишком субъективен, я в основном пытаюсь прийти к единому мнению относительно того, что в конечном итоге переход проверки к аннотациям данных укусит меня в итоге.