Создадим первую программу на ASP.NET Core. Что нам для этого потребуется? Прежде всего необходим текстовый редактор для написания кода программы. В данном случае я буду использовать в качестве текстового редактора Visual Studio Code
Также для компиляции и запуска программы нам потребуется .NET SDK. Для его установки перейдем на официальный сайт по ссылке .NET SDK
C:\dotnet\aspnet\helloapp. Откроем терминал/командную строку и перейдем к созданной папке проекта с помощью команды cdcd C:\dotnet\aspnet\helloapp
В данном случае мы для создания и запуска проекта мы будем использовать встроенную инфраструктуру .NET CLI, которая устанавливается вместе с .NET SDK.
Для создания проекта в .NET CLI применяется команда dotnet new, после которой указывается тип проекта. Для ASP.NET Core есть ряд встроенных типов проектов. В данном случае мы будем использовать самый простейший тип - web. Поэтому введем в терминале команду
dotnet new web
Рассмотрим базовую структуру простейшего стандартного проекта ASP.NET Core:
Dependencies: все добавленные в проект пакеты и библиотеки, иначе говоря зависимости
Properties: узел, который содержит некоторые настройки проекта. В частности, в файле launchSettings.json описаны настройки запуска проекта, например, адреса, по которым будет запускаться приложение.
appsettings.json: файл конфигурации приложения в формате json
appsettings.Development.json: версия файла конфигурации приложения, которая используется в процессе разработки
helloapp.csproj: стандартный файл проекта C#, который соответствует назанию проекта (по умолчанию названию каталога) и описывает все его настройки.
Program.cs: главный файл приложения, с которого и начинается его выполнение. Код этого файла настраивает и запускает веб-приложение
Например, посмотрим на содержимое файла helloapp.csproj
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> </Project>
Ключевой компонент здесь - атрибут Sdk="Microsoft.NET.Sdk.Web"
, который собственно и определяет, что приложение будет использовать SDK "Microsoft.NET.Sdk.Web", который предназначен
именно для веб-проектов.
Проект по умолчанию не представляет какой-то грандиозной функциональности, тем не менее этот проект мы уже можем запустить. Итак, запустим проект. Для этого выполним команду
dotnet run
При запуске в консоли мы можем увидеть адрес, по которому мы можем обращаться к приложению. В моем случае это адрес "http://localhost:5204". И я могу обратиться по этому адресу к приложению в браузере и увидеть в нем строку "Hello World!" - результат работы кода по умолчанию из файла Program.cs:
Рассмотрим код файла Program.cs, который создает подобное приложение:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
Это так называемое Minimal API - упрощенная минизированная модель для запуска веб-приложения в ASP.NET.
Приложение в ASP.NET Core представляет объект Microsoft.AspNetCore.Builder.WebApplication. Этот объект настраивает всю конфигурацию приложения, его маршруты, используемые зависимости и т.д.. Исходный код класса на github: https://github.com/dotnet/aspnetcore/blob/main/src/DefaultBuilder/src/WebApplication.cs
Для создания объекта WebApplication необходим специальный класс-строитель - WebApplicationBuilder. И в файле Program.cs вначале создается данный объект
с помощью статического метода WebApplication.CreateBuilder
:
var builder = WebApplication.CreateBuilder(args);
В качестве параметра в метод передаются аргументы, которые передаются приложению при запуске.
Получив объект WebApplicationBuilder, у него вызывается метод Build(), который собствено и создает объект WebApplication:
var app = builder.Build();
С помощью объекта WebApplication можно настроить всю инфраструктуру приложения - его конфигурацию, маршруты и так далее. В файле Program.cs по умолчанию для приложения определяется один маршрут:
app.MapGet("/", () => "Hello World!");
Метод MapGet() в качестве первого параметра принимает путь, по которому можно обратиться к приложению. В данном случае это путь "/", то есть
по сути корень веб-приложения - имя домена и порта, после которых может идти слеш, например, https://localhost:7256/
В качестве второго параметра в метод MapGet() передаются обработчик запроса по этому маршруту в виде функции. Здесь это лямбда-выражение, которое возвращает строку "Hello World!". Именно поэтому при обращении к приложению мы увидим данную строку в браузере.
И в конце необходимо запустить приложение. Для этого у класса WebApplication вызывается метод Run():
app.Run();
В итоге запустится приложение в виде консоли, и мы сможем обращаться к приложению из различных браузеров.