Куда идет бизнес-логика в MVC?

Я новичок в ASP.Net MVC. Прочитав множество руководств и усвоив их концепции, мне еще предстоит увидеть подход, который четко демонстрирует, куда идет бизнес-логика.

Мое приложение будет часто использовать jQuery AJAX (которое будет вызывать действия контроллера для различных целей, таких как зависимое взаимодействие, проверка). Я обязательно буду использовать концепцию ViewModel, но мне все еще неясно, где должна располагаться бизнес-логика. Ставить контроллер или модель не хочу. Должен ли я поместить его в отдельный служебный слой?


person sarsnake    schedule 10.11.2011    source источник
comment
Почему вы не хотите поместить это в модель?   -  person Ferruccio    schedule 11.11.2011


Ответы (5)


Думаю, вы в значительной степени ответили на свой вопрос, в отдельном проекте.
Не в контроллерах и совершенно не в моделях.

Изменить: обратите внимание, что контроллер сильно связан с httpcontext, поэтому будет очень разумно переместить логический уровень на другой dll-уровень.

person gdoron is supporting Monica    schedule 11.11.2011
comment
Сделайте свой ответ более вежливым, и вы получите +1 - person jgauffin; 11.11.2011
comment
Бизнес-уровень фактически является частью модели в MVC. Возможно, вы имеете в виду модели представления в интерпретации MVC от Microsoft. - person jgauffin; 11.11.2011
comment
@jgauffin, согласен. Это просто проблемы с именованием. Дело в том, чтобы разделить информацию, представление и логику. - person gdoron is supporting Monica; 11.11.2011
comment
Практически противоположность приведенному здесь ответу: stackoverflow.com/questions/4415904/business-logic-in- mvc, который мне кажется более понятным ... - person GFoley83; 09.07.2013

M в MVC - это все, что используется для извлечения и обработки информации, которую вы используете в своем приложении. Таким образом, бизнес-уровень является его частью.

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

Обычно я создаю библиотеку третьего класса и помещаю в нее все определения (интерфейсы служб и модели предметной области). тем самым вы будете следовать разделенному шаблону интерфейса и упростите замену реализации позже на (и для тестирования вашего бизнес-уровня)

person jgauffin    schedule 11.11.2011

Теоретически бизнес-логика задействована на среднем уровне трехуровневой архитектуры.  введите описание изображения здесь

person iamsohel    schedule 06.07.2017

Вы можете просто поместить часть бизнес-логики в отдельный класс C # и ссылаться на него в контроллерах. Вот как был изолирован код в дни веб-формы.

person Jason    schedule 10.11.2011

Самые простые примеры, которые я видел, помещают в контроллер простую бизнес-логику, но в идеале вы можете захотеть создать бизнес-уровень.

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

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

Этот проект использует шаблон разработки сценария транзакции для своей бизнес-логики. Контроллер передает информацию на бизнес-уровень, используя свои собственные модели представления, которые реализуют интерфейс в дизайне шаблона команд. Информация, передаваемая обратно с бизнес-уровня, осуществляется через собственные бизнес-модели бизнес-уровня. Я настоятельно рекомендую вам взглянуть на этот проект, чтобы лучше понять, как достигается разделение.

Для дальнейшего изучения бизнес-уровней я бы также рекомендовал вам взглянуть на Wrox Enterprise .NET, где в нескольких главах подробно обсуждаются варианты структурирования бизнес-уровня, первой из которых является шаблон транзакции, используемый в проекте Silk. .

Надеюсь это поможет.

person Dangerous    schedule 10.11.2011