2.1. MVC (Model View Controller) в .NET Core

Реализация MVC (Model – View - Controller) в .NET Core ничем не отличается по своей идеологии от других, но пару слов все же скажу на всякий случай.

Модель – Представление – Контроллер (Model – View – Controller) это попытка отделить бизнес логику от отображения. Логика хранится в модели, а отображение в представлении. Контроллер – это связующее звено. Модель ничего не знает о представлении, а представление не должно иметь никаких зависимостей на модель.

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

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

Модель – это простые C# классы, которые отличаются от других классов только логически. Просто на них возлагается ответственность за реализацию логики нашего приложения. Конечно же, эту логику желательно как-то группировать, а как это делать это уже зависит от проекта и предпочтений. В простых проектах как минимум создают отдельную папку Model, куда помещают всю логику. Кто-то предпочитает отделять более кардинально – создавать отдельные библиотеки и хранить логику в DLL файлах. В больших проектах отдельные DLL файлы становятся просто необходимостью.

Контроллеры – это тоже C# классы, но они происходят от класса Controller:

public class HomeController: Controller
{
  public IActionResult Index()
  {
    // Здесь может быть код создания моделей

    return View();
  }
}

Здесь создается класс HomeController, который происходит от базового контроллера Controller. В нем показан один метод Index. По умолчанию подобные методы будут вызываться в ответ на пользовательский запрос /home/index, но об этом чуть позже, когда мы начнем говорить про маршрутизацию запросов.

В качестве результата метод возвращает View.

Отделение логики от представления позволяет не только облегчить замену дизайна, но и бизнес логики. Я много раз встречался с задачами, когда нужно было менять дизайн. За счет того, что в таких случаях приходилось менять только HTML файлы, в которых был только внешний вид без необходимости трогать логику, все проходило очень даже гладко.

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

Предыдущая глава

2. .NET Core и MVC

Следующая глава

2.2. Маршрутизация в .NET Core MVC

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

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

Пишите мне