Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
Легковесный и модульный конвейер запросов HTTP
Следуя принципам .NET Core, все в ASP.NET Core происходит по подписке. По умолчанию в приложение ничего не загружается. Такой подход позволяет приложениям быть насколько возможно легковесными, улучшая производительность и сводя к минимуму объем их кода и потенциальный риск.
Создание и конфигурирование решения
Теперь, когда у вас есть опыт работы с рядом основных концепций ASP.NET Core, самое время приступить к построению приложений ASP.NET Core. Проекты ASP.NET Core можно создавать с применением либо Visual Studio, либо командной строки. Оба варианта будут раскрыты в последующих двух разделах.
Использование Visual Studio
Преимущество Visual Studio связано с наличием графического пользовательского интерфейса, который поможет вам пройти через процесс создания решения и проектов, добавления пакетов NuGet и создания ссылок между проектами.
Создание решения и проектов
Начните с создания нового проекта в Visual Studio. Выберите в диалоговом окне Create a new project (Создание нового проекта) шаблон C# под названием ASP.NET Core Web Application (Веб-приложение ASP.NET Core). В диалоговом окне Configure your new project (Конфигурирование нового проекта) введите AutoLot.Api в качестве имени проекта и AutoLot для имени решения (рис. 29.1).
На следующем экране выберите шаблон ASP.NET Core Web API, а выше в раскрывающихся списках — .NET Core и ASP.NET Core 5.0. Оставьте флажки внутри области Advanced (Дополнительно) в их стандартном состоянии (рис. 29.2).
Добавьте в решение еще один проект ASP.NET Core Web Application, выбрав шаблон ASP.NET Core Web Арр (Model-View-Controller) (Веб-приложение ASP.NET Core (модель-представление-контроллер)). Удостоверьтесь в том, что в раскрывающихся списках вверху выбраны варианты .NET Core и ASP.NET Core 5.0; оставьте флажки внутри области Advanced в их стандартном состоянии.
Наконец, добавьте в решение проект C# Class Library (.NET Core) (Библиотека классов C# (.NET Core)) и назначьте ему имя AutoLot.Services. Отредактируйте файл проекта, чтобы установить TargetFramework в net 5.0:
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
Добавление проектов AutoLot.Models и AutoLot.Dal
Решение требует завершенного уровня доступа к данным из главы 23. Вы можете либо скопировать файлы в каталог текущего решения, либо оставить их на месте. В любом случае вам нужно щелкнуть правой кнопкой мыши на имени решения в окне Solution Explorer, выбрать в контекстном меню пункт Add►Existing Project (Добавить►Существующий проект), перейти к файлу AutoLot.Models.csproj и выбрать его. Повторите такие же действия для проекта AutoLot.Dal.
На заметку! Хотя порядок добавления проектов в решение формально не имеет значения, среда Visual Studio сохранит ссылки между AutoLot.Models и AutoLot.Dal, если проект AutoLot.Models добавляется первым.
Добавление ссылок на проекты
Добавьте указанные ниже ссылки на проекты, щелкнув правой кнопкой на имени проекта в окне Solution Explorer и выбрав в контекстном меню пункт Add►Project Reference (Добавить►Ссылка на проект) для каждого проекта.
Проекты AutoLot.Api и AutoLot.Mvc ссылаются на:
• AutoLot.Models
• AutoLot.Dal
• AutoLot.Services
Проект AutoLot.Services ссылается на:
• AutoLot.Models
• AutoLot.Dal
Добавление пакетов NuGet
Для приложения необходимы дополнительные пакеты NuGet.
Добавьте перечисленные ниже пакеты в проект AutoLot.Api:
• AutoMapper
• System.Text.Json
• Swashbuckle.AspNetCore.Annotations
• Swashbuckle.AspNetCore.Swagger
• Swashbuckle.AspNetCore.SwaggerGen
• Swashbuckle.AspNetCore.SwaggerUI
• Microsoft.VisualStudio.Web.CodeGeneration.Design
• Microsoft.EntityFrameworkCore.SqlServer
На заметку! Благодаря шаблонам ASP.NET Core 5.0 API ссылка на Swashbuckle.AspNetCore уже присутствует. Указанные здесь пакеты Swashbuckle добавляют возможности за рамками базовой реализации.
Добавьте следующие пакеты в проект AutoLot.Mvc:
• AutoMapper
• System.Text.Json
• LigerShark.WebOptimizer.Core
• Microsoft.Web.LibraryManager.Build
• Microsoft.VisualStudio.Web.CodeGeneration.Design
• Microsoft.EntityFrameworkCore.SqlServer
Добавьте указанные ниже пакеты в проект AutoLot.Services:
• Microsoft.Extensions.Hosting.Abstractions
• Microsoft.Extensions.Options
• Serilog.AspNetCore
• Serilog.Enrichers.Environment
• Serilog.Settings.Configuration
• Serlog.Sinks.Console
• Serilog.Sinks.File
• Serilog.Sinks.MSSqlServer
• System.Text.Json
Использование командной строки
Как было показано ранее в книге, проекты и решения .NET Core можно создавать с применением командной строки. Откройте окно командной строки и перейдите в каталог, куда вы хотите поместить решение.
На заметку! В приводимых далее командах используется разделитель каталогов Windows. Если вы работаете не в среде Windows, тогда должным образом скорректируйте разделитель.
Создайте решение AutoLot и добавьте в него существующие проекты AutoLot.Models и AutoLot.Dal:
rem Создать решение
dotnet new sln -n AutoLot
rem Добавить в решение проекты
dotnet sln AutoLot.sln add ..Chapter_23AutoLot.Models
dotnet sln AutoLot.sln add ..Chapter_23AutoLot.Dal
Создайте проект AutoLot.Services, добавьте его в решение, добавьте пакеты NuGet и добавьте ссылки на проекты:
rem Создать библиотеку классов для служб приложения и добавить ее в решение
dotnet new classlib -lang c# -n AutoLot.Services -o .AutoLot.Services -f net5.0
dotnet sln AutoLot.sln add AutoLot.Services
rem Добавить пакеты
dotnet add AutoLot.Services package Microsoft.Extensions.Hosting.Abstractions
dotnet add AutoLot.Services package Microsoft.Extensions.Options
dotnet add AutoLot.Services package Serilog.AspNetCore
dotnet add AutoLot.Services package Serilog.Enrichers.Environment
dotnet add AutoLot.Services package Serilog.Settings.Configuration
dotnet add AutoLot.Services package Serilog.Sinks.Console
dotnet add AutoLot.Services package Serilog.Sinks.File
dotnet add AutoLot.Services package Serilog.Sinks.MSSqlServer
dotnet add AutoLot.Services package System.Text.Json
rem Добавить ссылки на проекты
dotnet add AutoLot.Services reference ..Chapter_23AutoLot.Models
dotnet add AutoLot.Services reference ..Chapter_23AutoLot.Dal
Создайте проект AutoLot.Api, добавьте его в решение, добавьте пакеты NuGet и добавьте ссылки на проекты:
dotnet new webapi -lang c# -n AutoLot.Api -au none -o .AutoLot.Api -f net5.0
dotnet sln AutoLot.sln add AutoLot.Api
rem Добавить пакеты
dotnet add AutoLot.Api package AutoMapper
dotnet add AutoLot.Api package Swashbuckle.AspNetCore
dotnet add AutoLot.Api package Swashbuckle.AspNetCore.Annotations
dotnet add AutoLot.Api package Swashbuckle.AspNetCore.Swagger
dotnet add AutoLot.Api package Swashbuckle.AspNetCore.SwaggerGen
dotnet add AutoLot.Api package Swashbuckle.AspNetCore.SwaggerUI
dotnet add AutoLot.Api package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add AutoLot.Api package Microsoft.EntityFrameworkCore.SqlServer
dotnet add AutoLot.Api package System.Text.Json
rem Добавить ссылки на проекты
dotnet add AutoLot.Api reference ..Chapter_23AutoLot.Dal
dotnet add AutoLot.Api