MVC Модели и контроллеры, где что писать - PullRequest
1 голос
/ 17 июня 2009

Мы начали использовать инфраструктуру MVC, и теперь нас немного смущает, где писать бизнес-логику, в контроллерах или моделях?

Для проекта мы будем использовать слой WCF в качестве DAL.

Люди по-разному относятся к модели и контроллеру и по-разному думают о написании бизнес-логики либо в «М», либо в «С».

Какая лучшая практика?

Я полагаю, что мы будем обращаться к службе WCF (DAL) в Model и применять всю бизнес-логику или фильтрацию, а затем Controller получить доступ к данным из Model.

Ответы [ 4 ]

3 голосов
/ 17 июня 2009

Вот мои правила:

Контроллер

В основном Pageflow. Определяет, какой вид будет отображаться следующим.

Имеет доступ к Сервисам (т.е. productService.GetProduct (Model.ProductID))

Модель

У меня их 2.

POCO-классы - используются всеми слоями (BLL, DAL)

ViewModel - используется View и Controller для строго типизированных представлений.

Просмотр

Надеюсь, в основном, простой HTML

Я стараюсь сделать макет таким образом, чтобы над проектом работали разные люди: фронтенд и бэкэнд. Бэкэнд парень будет делать Сервис и Хранилище.

Парень из Frontend будет выполнять Controller и Views. Он также делает AJAX.

3 голосов
/ 17 июня 2009

Постарайтесь отделить бизнес-логику и прикладной поток от логики. Большинство людей склонны смешивать их вместе как бизнес-логику

1 голос
/ 17 июня 2009

Не думайте, что модель должна быть построена только на основе логики доступа к данным (в вашем случае - wcf). Я бы порекомендовал вам проверить Domain Driven Design , он хорошо сочетается с MVC. Контроллеры не должны содержать никакой бизнес-логики. Метод действия контроллера должен быть ~ 20 или менее строк. Но это только мое мнение (составлено из бесчисленных источников).

1 голос
/ 17 июня 2009

Большинство людей придерживаются своей бизнес-логики в модели, и это считается наилучшей практикой. Стив Сандерсон, который написал xVal, поддерживает этот метод.

Как я уже говорил, правила валидации должны входить в модель вашего домена, потому что роль вашей модели - представлять работу вашего бизнеса. Это гарантирует, что правила будут применяться последовательно, независимо от того, запоминает ли их пользователь UI.

Прочтите его пост о xVal , в котором говорится о проблеме, которую вы обсуждаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...