RoadMap профессии ASP.NET Developer. Часть 2

RoadMap профессии ASP.NET Developer. Часть 2

  • 11 мая, 2020
Сергей Артеменко
Сергей Артеменко Full Stack Developer в Ciklum, Преподаватель Компьютерной школы Hillel.

Предлагаем вначале прочесть первую часть статьи в блоге.

ASP.NET Core

Тут последовательность будет следующей:

Структура базового проекта, понятие Middleware

● MVC (Model-View-Controller) — архитектурный шаблон программирования, разделяет приложение на три компонента: модель (Model), представление (View) и контроллер (Controller). Эта модель помогает достичь «разделения интересов». В этом шаблоне, пользовательские запросы направляются в контроллер. Контроллер вызывает модель для выполнения действий пользователя или получения данных. Затем контроллер передает эту модель в представление, и она возвращается пользователю.

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

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

Я рекомендую для начала прочитать книгу А. Фримена “Pro ASP.NET Core MVC 2”.

● Работа с данными.

● Razor Pages и частичные представления.

● Маршрутизация.

● Фильтры.

СУБД (система управления базами данных). Тут я выделю несколько — некоммерческие, такие как PostgreSQL, MySql и коммерческие такие как Oracle и MS SQL Server. На самом деле интерес представляют не столько сами СУБД, как язык запросов SQL, которой в большинстве своем, одинаков для всех. То есть я рекомендую сначала разобраться с такими понятиями как:

● Понятие реляционной модели.

● Понятие ограничений (первичные ключи, внешние ключи, check constraint). В чем преимущества и недостатки. Где должны, а где не должны применяться.

● Понятие индексирования записей. Для чего необходимо. Какие недостатки (замедление DML операции). Выбор «золотой середины».

● Нормальные формы. До 3 нормальной формы включительно. OLTP и DWH (OLAP). Где применение этих правил не желательно.

● Оператор выбора записей (SELECT).

● Скалярные подзапросы в select.

● Встроенные представления.

● Группировка записей. Тонкий момент в групперовочной функции, на примере count(distinct column).

Триггеры, функции, процедуры. Понимание преимущества хранения бизнес логики в базе данных.

Для теории можно прочитать А. Бьюли «Изучаем SQL» 2007.

Для практики сайт sql-ex.ru. Ну а дальше изучать уже непосредственно вашу СУБД.

Entity Framework — это библиотека, которая позволяет получать доступ к базе данных из наших приложений. Он спроектирован как объектно-реляционное отображение (ORM) и работает путем отображения реляционной базы данных в модель базы данных приложений. EF Core — это кроссплатформенная библиотека, которая работает как в Windows, так и в Linux. Он был введен с платформой .NET Core, поэтому в названии присутствует “Core”, чтобы отличать его от версии .NET Framework. Вам надо знать как:

● создать базовую конфигурацию;

● использовать модели и классы контекста;

● использовать разные стили конфигурации;

● мигрировать данные;

● создать отношения в EF Core, запросах к базе данных и изменять содержимое базы данных;

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

Ознакомиться можно в этом источнике — А. Фримен “Pro Entity Framework Core 2 for ASP.NET Core MVC”.

Рекомендуем курс по теме

В настоящее время большая часть работы выполняется такими фреймворками, как Angular, React JS или Vue.js.

ASP.NET WEB API 2. REST API стал стандартом де факто в отрасли web-разработки из-за его способности расщеплять внутренние и внешние части приложения и способности одновременно обслуживать тысячи клиентов. Вообще одним из преимуществ стека технологий на платформе .NET, является возможность создания сервисов. Так в ASP.NET мы могли создавать ASMX-веб-службы. Кроме того, мы можем использовать более функциональную в этом плане технологию WCF, для создания веб-служб. Но с выпуском MVC 4 и вообще всей платформы .NET 4.5 в нашем распоряжении оказался еще один инструмент для создания веб-служб — Web API. Концепция Web API (которую кстати можно использовать не только в MVC, но и в веб-формах) — новый подход к реализации веб-приложений. И на данный момент я рекомендую вам именно с этой технологией работать!

Начать обучение стоит с понятий REST и RESTFul (легко гуглится), а далее c сайта Microsoft.

ASP.NET Core Identity представляет собой встроенную в ASP.NET систему аутентификации и авторизации. Данная система позволяет пользователям:

● создавать учетные записи;

● аутентифицироваться;

● управлять учетными записями или использовать для входа на сайт учетные записи внешних провайдеров, таких как Facebook, Google, Microsoft, Twitter и других.

Дополнительные вещи, которые стоит изучить:

● JWT Authentication — вариант авторизации и аутентификации с использованием популярного на сегодняшний момент JWT-tokens.

● Тестирование Web-приложений. При написании тестов мы можем обнаружить потенциальные ошибки на этапе разработки, что намного лучше, чем обнаружение их в production. В результате, как только наше приложение будет опубликовано, мы меньше будем тратить времени на исправление ошибок, а больше будем тратить на разработку нового функционала, что намного лучше, не правда ли?

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

● Паттерны проектирования из каталога GoF, нужны для улучшения нашего кода, с точки зрения читабельности как нами, так и другими разработчиками. Я рекомендую далеко не все, а наиболее важные с моей точки зрения: Builder и Fluent Builder, Fluent Builder Interface c Recursive Generics, Faceted Builder, Factory Method, Singleton, Adapter, Composite, Decorator, Command, Strategy.

● Swagger — позволяет нам документировать наш API. Документация API — это процесс предоставления инструкций о том, как эффективно использовать и интегрировать наше API. Его можно рассматривать как краткое справочное руководство, содержащее всю информацию, необходимую для работы с подробными сведениями о функциях, классах, типах возвращаемых данных, аргументах и ​​многом другом, поддерживаемых учебными пособиями и примерами. Наличие надлежащей документации для нашего API позволяет потребителям максимально быстро интегрировать наши API и двигаться вперед в процессе разработки. Это помогает им понять ценность использования нашего API, повысить шансы на принятие нашего API и упростить поддержку.

● Внедрение зависимостей (Dependency Injection). Давно стало стандартом в мире программирования.

● AutoMapper. Это простая библиотека, которая помогает нам преобразовывать один тип объекта в другой.

Все вышеописанное является далеко не полной дорожной картой по изучению. Со многими вещами вы столкнетесь в процессе уже вашей профессиональной деятельности. Важно понимать, что существует такое понятие как предметная область и вам, как разработчикам необходимо будет в нее вникать, чтобы понимать как применять вышеописанные знания. Далее я опишу дорожную карту со стороны Front End. Данное понимание вам точно необходимо, чтобы лучше понимать, как устроена разработка в целом.

Front-end stack

● HTML и CSS — являются основой любого сайта. HTML обеспечивает структуру, а CSS обеспечивает стиль и помогает сайтам выглядеть лучше и визуально привлекательнее. Если вы хотите стать серьезным разработчиком, вы должны освоить эти два понятия.

● JavaScript. Так же, как четыре столпа объектно-ориентированного программирования, я имею в виду абстракцию, инкапсуляцию, полиморфизм и наследование. Есть три основных столпа веб-разработки, а именно — HTML, CSS и JavaScript. Первые два обеспечивают структуру и стиль, как было описано выше, ну а JavaScript, «оживляет» сайты, добавляя интерактивность. Плюс это способ взаимодействия с серверной частью. Для современного ASP.Net Core разработчика, чрезвычайно важно изучить JavaScript.

● JQuery.

● Ajax.

● TypeScript. Как и в случае с C и C++ , TypeScript можно рассматривать как JavaScript++, хотя он не так популярен, как C++. Хорошей частью TypeScript является то, что он добавляет безопасность типов (строгая типизация) в код JavaScript, что значит, что вы можете обнаружить ошибки, связанные с типами JavaScript, на этапе разработки. Это также облегчает разработку объектно-ориентированного кода для JavaScript.

Теперь пройдемся по Frameworks. Прошли те времена, когда люди строили веб-сайты, используя простой HTML, CSS и JavaScript. В настоящее время большая часть работы выполняется такими фреймворками, как Angular, React JS или Vue.js. Конечно, есть еще огромное количество различных фреймворков, так или иначе упрощающих жизнь, но я бы начал именно с этих, т.к. они являются наиболее востребованными.

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

● Angular. Поддерживается Google, поэтому изучение Angular является хорошим выбором для любого современного веб-разработчика.

● React JS. Как и Angular, React также является популярной библиотекой для разработки веб-приложений. Это позволяет вам писать повторно используемые компоненты, которые затем можно использовать для создания современных интерактивных веб-страниц. Как Angular поддерживается Google, React поддерживается Facebook и, следовательно, довольно популярен.

● Vue.js. Набрал «скорость» в прошлом году, и все больше и больше людей рекомендуют и используют Vue.js. Я все еще новичок во Vue и, возможно, мне потребуется некоторое время, чтобы изучить его и перейти на приложение на основе Vue.

● Bootstrap. Тут все просто, должен знать каждый. Любой веб-разработчик и верстальщик рано или поздно задумывается о том, как ему упростить и ускорить процесс верстки сайта. В связи с этим, он прибегает к помощи css-фреймворков. Самый популярных из них – bootstrap.

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

Удачи в вашем путешествии по просторам разработки на ASP.Net Core!