MVC3 имеет значение и уровень бизнес-логики

#validation #asp.net-mvc-3 #business-logic

#проверка #asp.net-mvc-3 #бизнес-логика

Вопрос:

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

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

Спасибо.

Ответ №1:

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

Ответ №2:

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

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

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

Комментарии:

1. далее в статье он абстрагируется от MVC, так что уровень сервиса просто принимает интерфейс, поэтому он напрямую не привязан к MVC (если я правильно его читаю).

2. Вы абсолютно правильно это читаете. Я не дочитал до конца, прежде чем оставить свой комментарий (должен признать, что это обычная личная ошибка). Просто убедитесь, что у вас не получится набор однострочных сервисов.