MVC3 IsValid и уровень бизнес-логики - PullRequest
0 голосов
/ 03 мая 2011

Я использую MVC3 для своего приложения, и у меня есть вопрос о проверке. У меня есть слой бизнес-логики, который отделен от моего веб-слоя, где у меня будет такая функция, как CreateUser, которая создает нового пользователя для приложения. Я хочу, чтобы эта функция была доступна в двух местах: 1) где-то в контроллере, который ее использует, и 2) в программе «Setup Data», которая вставляет данные в систему.

Я хочу использовать такие вещи, как ModelState.IsValid, чтобы проверить все основные проверки, но это не поможет мне в моем режиме данных настройки (или любом другом режиме, который не проходит через MVC). Есть ли способ, которым я все еще могу использовать этот код, но содержать всю проверку в моем слое BusinessLogic, а не в контроллере, при этом уровень BusinessLogic не зависит от MVC?

Спасибо.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Обратите внимание, что статья о сервисных слоях по-прежнему означает, что вам нужна зависимость от сборки MVC.После того, как я недавно немного поборолся с этим, я теперь считаю, что держать вещи как можно более раздельно - хороший дизайн.В моей сборке модели у меня есть папка services, в которой, скажем, из подпрограммы Create () я проверяю и выкидываю пользовательские исключения.

Служебному уровню не важно, кто или как использует эти исключения.В вашем приложении MVC сопоставьте их с коллекциями ошибок состояния модели или чем-то еще.Ваш дизайн тем более солиден, потому что сборка модели не зависит от какого-либо бегуна проверки, должным образом использующего атрибуты проверки MVC, коллекции и т. Д.

Я также заметил, что в статье упоминается хранилище.Я знаю, что сейчас все в моде, но если вы уже используете ORM, такой как Entity Framework, репозиторий на самом деле просто DAO . Reposity - новый синглтон .

1 голос
/ 03 мая 2011

Похоже, эта статья о сервисных уровнях содержит то, что мне нужно .Другие предложения по-прежнему приветствуются.Спасибо.

...