Andriy Shyrokoryadov

.Net developer, data scientist

Asp.Net Core MVC / Web API. Технология и архитектурный подход (шаблон проектирования).

Текст к видео "Asp.Net Core MVC / Web API" на канале YouTube

Сегодня видео имеет тему, которую можно отнести к двум категориям: видео о шаблонах проектирования и видео вступление к серии видео о технологии Asp.Net Core MVC / API. Сокращение MVC обозначает Model – View – Control. Некоторые авторы дидактической литературы и программисты относят это понятие к шаблонам проектирования. Я и сам планировал снять видео на тему этого шаблона одним из последних в серии видео о шаблонах проектирования, но раз уже необходимо сделать вступление к тематике Asp.Net Core MVC / API, то лучшей возможности, пожалуй, не будет.

Идею серии видео о Asp.Net Core MVC / API мне подсказал один из моих зрителей, за что выражаю ему отдельную благодарность.

Рассмотрим понятие MVC с точки зрения шаблонов проектирования. Данный подход или шаблон используется, когда необходимо разделить зоны ответственности в приложении. Ответственность определенных частей приложения или классов является очень важным понятием. Тут можно вспомнить принцип единичной ответственности из принципов SOLID. Каждая буква в аббревиатуре MVC означает зону ответственности приложения.

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

  • Контроллер (controller) – место в нашем приложении, посредством которого, пользователь может взаимодействовать с нашим приложением, то есть влиять на состояния данных в модели. Действия в контроллере называются акциями. В практическом измерении контроллер — это класс, а акции контролера — это публичные методы, в которых вызывается логика изменения данных, которые хранятся в модели, то есть в классах, которые содержат наши данные.

  • Представление (view) – это часть нашего приложения, которая служит для отображения данных из модели. В практическом измерении – это графический интерфейс пользователя нашего приложения. Как правило это графический интерфейс созданный в технологии веб приложения.

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

Преимущества использования данного шаблона проектирования или архитектурного шаблона:

  • разные группы программистов могут работать над разными частями приложения не мешая друг другу. Веб-девелоперы работают с частью, которая называется «Представление», а специалисты от бэкенда работают с контроллерами и моделями.
  • как правило графический интерфейс пользователя — это та часть, которая «продаёт» приложение, а как мы знаем клиенты покупают глазами. Поэтому данная часть изменяется намного чаще по сравнению с остальными частями системы. В виду того, что при использовании MVC представление отделено от основной логики, мы можем изменять его без особого труда и опасности испортить бизнес-логику.

Недостатки:

  • если мы часто изменяем модель приложения, то это будет связано с частыми изменениями в части представления нашего приложения. Представление отражает модель, а если модель изменяется, то и представление также должно изменяться.
  • тестирование части представления может быть трудным заданием, так как представление зависит от модели. То есть внутренняя логика представления не является самодостаточной – она всегда зависит от данных, которые предоставлены моделью.

Теперь о второй части сегодняшней темы – подготовка к собеседованию по технологии ASP.NET Core MVC или ASP.Net Core WebApi. Из названия понятно, что в обоих случаях используется .Net Core о котором у меня на канале было снято видео. Чем они отличаются? Отличаются они тем, что в каждой из этих технологий используются разное представление. В ASP.NET Core MVC используются представление на основе файлов cshtml с синтаксисом, который напоминает HTML и называется Razor. ASP.Net Core WebApi можно назвать шаблоном MVC без части представления. То есть с помощью ASP.Net Core WebApi можно написать веб услугу с контроллерами и моделями, но без представления. В этом случае представлением может быть веб приложение написанное в Angular или React или, например, приложение Windows Desktop написанное в WPF – все эти типы приложений служат только для представления данных и взаимодействия с веб услугой. Здесь у нас больше возможностей в плане выбора графического интерфейса пользователя, но в то же время это требует больше работы и знаний определенных технологий. Например, приложение по изучению японского алфавита, которое я использовал как пример в видео о микроуслугах, использует технологию ASP.Net Core WebApi, а интерфейс пользователя написан в технологии React.

Давайте рассмотрим на практике как это выглядит.

Я пытался найти список вопросов на собеседование по технологиям ASP.NET Core MVC или ASP.Net Core WebApi, но то, что я нашел не было по моему мнению наилучшим вариантом. Как правило на собеседовании большая часть вопросов касается языка C#, а меньшая часть вопросов касается конкретных технологий и фреймворков. В связи с этим я подготовлю свой список из 15–20 вопросов и сниму по каждому вопросу видео. В этих видео я постараюсь раскрыть интересные особенности этой технологии в форме ответа на вопрос собеседования. Естественно, не стоит считать эти видео учебником по ASP.NET Core MVC или ASP.Net Core WebApi. Однако возможно эти видео будут для Вас указателями, что надо подучить и на что необходимо обратить особое внимание. Сейчас мне пришло в голову построение этих видео уроков в видео написания некоторого приложение, которое мы с Вами будем развивать в течении этой серии видео уроков. Возможно сюда можно будет приплести пару видео системах ORM (object-relational mapping). В общем планов много. Поживем, увидим.

Пользуясь случаем, я хотел бы сделать небольшое объявление – некоторые зрители пишут мне, что лучше не использовать ручку и бумагу при объяснении кода C#. Такие видео не всегда удобно смотреть на мобильных телефонах. Я согласен с этим, поэтому этот подход я не буду использовать. В данный момент я будут делать видео в форме презентации Power Point с практическими примерами в Visual Studio 2019.

Благодарю вас за внимание!