Введение в ASP.NET Core
ASP.NET Core представляет технологию для создания веб-приложений на платформе .NET, развиваемую компанией Microsoft. В качестве языков программирования для разработки приложений на ASP.NET Core используются C# и F#.
История ASP.NET фактически началась с выходом первой версии .NET в начале 2002 года и с тех пор ASP.NET и .NET развивались параллельно: выход новой версии .NET знаменовал выход новой версии ASP.NET, поскольку ASP.NET работает поверх .NET. В то же время изначально ASP.NET была нацелена на работу исключительно в Windows на веб-сервере IIS (хотя благодаря проекту Mono приложения на ASP.NET можно было запускать и на Linux).
Однако 2014 год ознаменовал большие перемены, фактически революцию в развитии платформы: компания Microsoft взяла курс на развитии ASP.NET как кроссплатформенной технологии, которая развивается как opensource-проект. Данное развитие платформы в дальнейшем получило название ASP.NET Core , собственно как ее официально именут Microsoft до сих пор. Первый релиз обновленной платформы увидел свет в июне 2016 года. Теперь она стала работать не только на Windows, но и на MacOS и Linux. Она стала более легковесной, модульной, ее стало проще конфигурировать, в общем, она стала больше отвечать требованиям текущего времени.
Текущая версия ASP.NET Core, которая собственно и будет охвачена в текущем руководстве, вышла вместе с релизом .NET 7 в ноябре 2022 года.
ASP.NET Core теперь полностью является opensource-фреймворком. Все исходные файлы фреймворка доступны на github в репозитории https://github.com/dotnet/aspnetcore/.
Архитектура и модели разработки
Текущую архитектуру платформы ASP.NET Core можно выразить следующим образом:

На самом верхнем уровне располагаются различные модели взаимодействия с пользователем. Это технологии построения пользовательского интерфейса и обработки ввода пользователя, как MVC, Razor Pages, SPA (Single Page Application — одностраничные приложения с использованием Angular, React, Vue) и Balzor. Кроме того, это сервисы в виде встроенных HTTP API, библиотеки SignalR или сервисов GRPC.
Все эти технологии базируются и/или взаимодействуют с чистым ASP.NET Core, который представлен прежде всего различными встроенными компонентами middleware — компонентами, которые применяются для обработки запроса. Кроме того, технологии высшего уровня также взаимодействуют с различными расширениями, которые не являются непосредственной частью ASP.NET Core, как расширения для логгирования, конфигурации и т.д.
И на самом нижнем уровне приложение ASP.NET Core работает в рамках некоторого веб-сервера, например, Kestrel, IIS, библиотеки HTTP.sys.
Это вкратце архитектура платформы, теперь рассмотрим моделей разработки приложения ASP.NET Core:
Прежде всего это базовый ASP.NET Core , который поддерживает все основные моменты, необходимые для работы соввременного веб-приложения: маршрутизация, конфигурация, логгирования, возможность работы с различными системами баз данных и т.д.. В ASP.NET Core 6 в фреймворк был добавлен так называемый Minimal API — минимизированная упрощенная модель, который еще упростила процесс разработки и написания кода приложения. Все остальные модели разработки работаю поверх базового функционала ASP.NET Core
ASP.NET Core MVC представляет в общем виде построения приложения вокруг трех основных компонентов — Model (модели), View (представления) и Controller (контроллеры), где модели отвечают за работу с данными, контроллеры представляют логику обработки запросов, а представления определяют визуальную составляющую.
Razor Pages представляет модель, при котором за обаботку запроса отвечают специальные сущности — страницы Razor Pages. Каждую отдельную такую сущность можно ассоциировать с отдельной веб-страницей.
ASP.NET Core Web API представляет реализацию паттерна REST, при котором для каждого типа http-запроса (GET, POST, PUT, DELETE) предназначен отдельный ресурс. Подобные ресурсы определяются в виде методов контроллера Web API. Данная модель особенно подходит для одностраничных приложений, но не только.
Blazor представляет фреймворк, который позволяет создавать интерактивные приложения как на стороне сервера, так и на стороне клиента и позволяет задействовать на уровне браузера низкоуровневый код WebAssembly.
Особенности платформы
ASP.NET Core работает поверх платформы .NET и, таким образом, позволяет задействовать весь ее функционал.
В качестве языков разработки применяются языки программирования, поддерживаемые платформой .NET. Официально встроенная поддержка для проектов ASP.NET Core есть у языков C# и F#
ASP.NET Core представляет кросс-платформенный фреймворк, приложения на котором могут быть развернуты на всех основных популярных операционных системах: Windows, Mac OS, Linux. И таким образом, с помощью ASP.NET Core мы можем как создавать кросс-платформенные приложения на Windows, на Linux и Mac OS, так и запускать на этих ОС.
Благодаря модульности фреймворка все необходимые компоненты веб-приложения могут загружаться как отдельные модули через пакетный менеджер Nuget.
Поддержка работы с большинством распространенных систем баз данных: MS SQL Server, MySQL, Postgres, MongoDB
ASP.NET Core характеризуется расширяемостью. Фреймворк построен из набора относительно независимых компонентов. И мы можем либо использовать встроенную реализацию этих компонентов, либо расширить их с помощью механизма наследования, либо вовсе создать и применять свои компоненты со своим функционалом.
Богатый инструментарий для разработки приложений. В качестве инструментария разработки мы можем использовать такую среду разработки с богатым функционалом, как Visual Studio от компании Microsoft.
Также можно использовать для разработки среду Rider от компании JetBrains.
Путь ASP.NET Core [уровень 1] Основы
ASP.NET Core — новейший фреймворк для кроссплатформенной веб разработки. Пока его популярность (как и количество вакансий) только начинает набирать обороты самое время узнать о нем побольше. Ну а для того, чтобы все знания не испарились сразу после прочтения — добавим существенную практическую часть. Создадим простое приложение, для тестирования прочитанного.
Если вы считаете, что уже достаточно круты в новом фреймворке — можете попробовать пройти тест до того, как прочтете статью. Линк. Весь код проекта можно посмотреть на гитхабе.
Первая часть включает:
- Что такое .NET Core и ASP.NET Core?
- Основы создания приложения и его структура
- Добавление новых элементов, скаффолдинг
- Основы встроенного Dependency Injection
- Деплоймент в Azure
- С открытым исходным кодом
- Кроссплатформенная
- Гибкая в установке — может быть внутри приложения и можно поставить несколько версий на одной и той же машине
- Все сценарии работы поддерживаются с помощью консольных инструментов

В чем же тогда особенности и отличия ASP.NET Core от предыдущего ASP.NET? Некоторые из них это:
- Возможность намного лучше контролировать нужные модули, сборки. Например, нет жесткой привязки к IIS, System.Web.dll
- Встроенный функционал для внедрения зависимостей
- Открытый исходный код
Класс Statup можно, в какой-то степени, охарактеризовать как новый вариант Global.asax (Это класс для глобальной настройки всего приложения в предыдущей версии ASP.NET). Грубо говоря, можно сказать, что метод ConfigureServices нужен для конфигурации контейнера для внедрения зависимостей и его сервисов, а метод Configure для конфигурации конвейера обработки запросов.
Приступим к практической реализации
Для того, чтобы лучше понять все новшества, создадим ASP.NET Core приложение на основе .NET Core.

Чтобы облегчить себе жизнь, выберем Web Application и поменяем аутентификацию на Individual User Accounts. Таким образом Visual Studio уже сгенерирует весь нужный код для базового приложения.

Рассмотрим детальней что же нового появилось в ASP.NET Core. С точки зрения разработки вся концепция осталась прежней. Структура проекта базируется на паттерне MVC. Для работы с данными по умолчанию используем Entity Framework, логика описана в классах-контроллерах, на уровне представлений используем синтаксис cshtml + новая фишка tag helpers.
Проверим классы Program.cs и Startup.cs, они действительно выглядят такими же, как было описано выше. Конечно класс Startup не совсем пуст, а уже вмещает функционал для считывания конфигурации, настройки базового логирования, маршрутизации и привязку на нашу модель базы данных.
Дополним модель базы данных сущностями для создания и прохождения тестов. Будем использовать следующие сущности: Набор тестовых вопросов — TestPackage, Сам вопрос (тест) — TestItem, Результат теста — TestResult. Пример можно посмотреть тут. Радует, что EntityFramework Core уже поддерживает большинство функционала и можно полноценно пользоваться Code First миграциями.
Добавляем логику
Теперь, когда у нас есть модель базы данных, мы можем приступить к созданию логики для нашего приложения. Самый простой способ создания админки — это механизм scaffolding. Для этого, кликаем правой кнопкой мыши по папке контроллеров и выбираем Add → New Scaffold Item:

Выбираем «MVC Controller с представлениями, с использованием Entity Framework». Этот шаблон позволяет нам быстро создать контроллер и вьюхи для управления одной конкретной моделью. Проделаем такой трюк для TestPackage и TestItem. В результате у нас есть готовый прототип админки для нашей системы. Можно запустить проект и зайти на страницы этих контроллеров, просто добавить его имя без слова Controller в конец адреса, например, /testpackages. Конечно в ней еще не все идеально, поэтому нужно допилить некоторые моменты и сделать их более удобными.
После создания модели и простого функционала для работы с ней, можно перейти к самому процессу прохождения тестов. В общем, все выглядит просто. Сервер присылает вопрос, варианты, мы отсылаем назад ответ. Сервер сохраняет его. В конце теста показываем результат. Добавим код для этого поведения.
В общем, все что нужно для теста у нас есть.
Основы Dependency Injection в ASP.NET Core
Важным новшеством новой версии ASP.NET так же является встроенный механизм внедрения зависимостей. В 2016 году уже никого не удивишь тем, что механизм внедрения зависимостей можно перенести внутрь фреймворка. Мало какое серьёзное приложение пишут без использование этого подхода. DI в ASP.NET Core реализован достаточно базово, но в то же время позволяет решить большинство задач управления зависимостями.
Конфигурация контейнера осуществляется в методе ConfigureServices класса Startup. Пример:
Можно заметить, что для контекста базы данных и Identity фреймворка есть дополнительные, не типичные методы их регистрации. Это позволяет более гибко их сконфигурировать. В этот подход регистрации сервисов очень красиво вписываются extension-методы.
После регистрации сервисов, самый легкий способ получить из в коде (например, в контроллерах) — это просто добавить параметр конструктора типа, который был зарегистрирован. Такие контроллеры по умолчанию создаются скаффолдингом.
Деплой
Одним из самых простых способов деплоймента остается Microsoft Azure. Нам достаточно самых базовых настроек для полноценной работы. Развертывание сайта на сервере все так же просто — с помощью нескольких кликов, начиная с контекстного меню на файле проекта.

Выводы
Пока не известно будущее «классического» .NET фреймворка, так как он, все же, является более стабильным и проверенным, поэтому может существовать еще довольно долго (привет, Python 2), хотя возможна и ситуация быстрой миграции большинства девелоперов на Core версии (не такой уже .NET и старый — 14 лет всего лишь).
Name already in use
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
ASP.NET Core is an open-source and cross-platform framework for building modern cloud-based internet-connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps run on .NET, a free, cross-platform and open-source application runtime. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. Learn more about ASP.NET Core.
Follow the Getting Started instructions.
Also check out the .NET Homepage for released versions of .NET, getting started guides, and learning resources.
See the Triage Process document for more information on how we handle incoming issues.
How to engage, contribute, and give feedback
Some of the best ways to contribute are to try things out, file issues, join in design conversations, and make pull-requests.
Tutorial Introduction to ASP.NET Core
We are going to give you a brief overview of ASP.NET Core. Nowadays, when it comes to software development world, everyone is looking for open-source, cross-platform development and which is free platform.
ASP.NET Core is a new version of ASP.NET by Microsoft. It is an open-source web framework which can be run on Windows, Mac, or Linux. These tutorials will help you understand ASP.NET Core web application step by step. We are going to discuss the following pointers in detail.
1. Overview of ASP.Net Core
2. History of ASP.NET Core
3. Why ASP.NET Core?
4. Where can we develop applications using .NET Core?
5. ASP.NET Core vs ASP.NET 4x
Prerequisites
Basic knowledge of C#, HTML, Visual Studio, and Object Oriented Programming is required.
ASP.NET Core Overview
ASP.NET Core is the new version of the ASP.NET web framework primarily focused to run on .NET Core stage.
ASP.NET Core is a free, open-source, and cross-platform framework for building cloud-based applications, like web apps, IoT apps, and mobile backends. It is designed to run on the cloud as well as on-premises.
Same as .NET Core, it absolutely was architected modular with minimum overhead, then other more advanced features are often added as NuGet packages as per application requirement. This leads to high performance, require less memory, less deployment size, and simple to take care of.
History of ASP.NET Core
.NET Core 1.0, announced on November 12, 2014, was released on June 27, 2016, along with Microsoft Visual Studio 2015 Update 3, which enables .NET Core development. .NET Core 1.0.4 and .NET Core 1.1.1 were released along with .NET Core Tools 1.0 and Visual Studio 2017 on March 7, 2017.
.NET Core 2.0 was released on August 14, 2017, along with Visual Studio 2017 15.3, ASP.NET Core 2.0, and Entity Framework Core 2.0. .NET Core 2.1 was released on May 30, 2018. NET Core 2.2 was released on December 4, 2018.
.NET Core 3 was announced on May 7, 2019, at Microsoft Build. Version 3.0.0 was released on September 23, 2019. With .NET Core 3, the framework supports development of desktop application software, artificial intelligence/machine learning and IoT apps.
The next release after .NET Core 3.1 will be .NET 5. The .NET Framework will not receive any further major versions, and .NET 5 will be the only .NET meant for new applications going forward — hence the removal of the “Core” branding and skipping of version 4 to avoid confusion with the .NET Framework 4.x. The first preview of .NET 5 was released on March 16, 2020.
Why ASP.NET Core
There are a few limitations with the .NET Framework. For example, it just runs on the Windows platform. Likewise, you would like to use different .NET APIs for various Windows devices for example, Web applications, Windows Desktop, Windows Phone and Windows Store. Additionally to the present, the .NET Framework is a machine-wide framework. Any changes made to that affect all applications taking a dependency on it. Learn more about the motivation behind .NET Core.
Today, it’s normal to possess an application that runs across devices; a backend on the online server, admin front-end on web, windows desktop and mobile apps for consumers. So, there’s a requirement for one framework that works everywhere. So, considering this, Microsoft created .NET Core. The most objective of .NET Core is to make .NET Framework open-source, cross-platform compatible which will be utilized in a good sort of verticals, from the info center to touch-based devices.
There are various reasons why present day developers are using it and some of them are listed below:
Open Source:
The ASP.NET Core framework is Open Source which is that the main reason behind its popularity. .NET Core team is usually there to support your effort within the seamless development of the application. It receives bug fixing and improvement updates on a regular basis usually within a brief period of time. You don’t need to wait longer for updates. The pliability in framework code is keeping it at the highest of the developer’s choice. Depending upon the project’s requirements libraries and framework’s component are often added later.
Cross-Platform:
The earlier versions of ASP.NET Framework applications can only run on windows platforms whereas the .NET Core runs on Windows, macOS, and Linux operating systems. There are different runtime for each operating system that executes the code and generates the same output.
The ASP.NET Core Framework is designed from scratch to stay in mind to be Cross-Platform for both development and deployment. So, we don’t got to build different applications for various platforms using different frameworks. allow us to discuss what Cross-Platform is from the ASP.NET Core point of view by comparing it with the sooner versions of the ASP.NET Framework.
Supports Multiple Languages
You can use C#, F#, and Visual Basic programming languages to develop .NET Core applications. You can use your favorite IDE, including Visual Studio 2017/2019, Visual Studio Code, Sublime Text, Vim, etc.
Sophisticated Programming Features
The ASP.NET stack has undergone major overhaul, presenting to you ASP.NET Core framework that comes with a gamut of advanced features. These include:
· Automatic memory management
· Easy to quick and customize feature-rich enterprise-grade web applications
· Flawless development of MVC web applications and RESTful APIs
· Multiple language support
These features make it easier, faster and efficient for developers to build robust and modern web applications.
IoC Container
One of the foremost important used design patterns within the real-time application is that the Dependency Injection Design Pattern. It includes the built-in IoC (Inversion of Control) container for automatic dependency injection which makes it maintainable and testable.
Testing and Maintainability:
You can easily test and maintain the applications developed using the ASP.NET Core MVC framework. This is often possible because it allows you to separate different parts of your application into independent pieces and it also allows you to check them independently. The Testing frameworks like xUnit and MOQ are often easily integrated into ASP.NET Core MVC application for simulating any scenario.
Integration with Modern UI Frameworks:
It allows you to use and manage modern UI frameworks such as AngularJS, ReactJS, Umber, Bootstrap, etc.
Hosting
ASP .Net Core ability to host on the following and it is not dependent only on IIS as a standard .NET Framework:
- Kestrel
- IIS
- HTTP.sys
- Nginx
- Apache
- Docker
Code Sharing
It allows you to build a class library that can be used with other .NET frameworks such as .NET Framework 4.x or Mono. Thus a single code base can be shared across frameworks.
App Versioning
ASP.NET Core runs on .NET Core, which supports the simultaneous running of multiple versions of applications.
Smaller Deployment Footprint
ASP.NET Core application runs on .NET Core, which is smaller than the full .NET Framework. So, the application which uses only a part of .NET CoreFX will have a smaller deployment size. This reduces the deployment footprint.
Where can we develop applications using .NET Core?
As the dot net core is cross-platform so we will use several sorts of machines like Windows, Mac, and Linus to develop dot net applications.
What type of application we can develop with .Net Core?
- Web: ASP.NET Core MVC, Web API, Razor Pages, and Microservices
- Mobile
- Console
- Desktop Applications (Starting from 3.0)
- IoT
- ML
- Gaming Applications
- Cloud Applications
ASP.NET Core vs ASP.NET 4x
The following table compares ASP.NET Core to ASP.NET 4.x.
Thank you for reading, please let me know your questions, thoughts, or feedback in the comments section. I appreciate your feedback and encouragement.