Руководство. Добавление .NET Aspire в существующее приложение .NET
Если у вас есть микрослужбы и веб-приложение .NET, вы можете добавить в него .NET Aspire и получить все включенные функции и преимущества. В этой статье вы добавите оркестрацию .NET Aspire в простой, уже существующий проект .NET 9. Вы узнаете, как:
- Изучите структуру существующего приложения микрослужб.
- Включите существующие проекты в оркестрацию .NET.NET Aspire.
- Поймите, какие изменения в проектах вносит регистрация.
- Запустите проект .NET.NET Aspire.
Необходимые условия
Для работы с .NET.NET Aspire вам необходимо следующее, установленное локально:
- .NET 8.0 или .NET 9.0
- Среда выполнения контейнера, совместимая с OCI, например:
- Docker настольный компьютер или Podman. Дополнительные сведения см. в среде выполнения контейнера .
- Интегрированная среда разработки (IDE) или редактор кода, например:
- Visual Studio 2022 версия 17.9 или выше (необязательно)
-
Visual Studio Code (необязательно)
- C# Dev Kit: расширение (необязательно)
- JetBrains Rider с плагином .NET.NET Aspire (необязательно)
Дополнительные сведения см. в разделе программы установки и инструментов .NET.NET Aspire, и пакета SDK .NET.NET Aspire.
Начало работы
Начнем с получения кода для решения:
Откройте командную строку и измените каталоги на место хранения кода.
Чтобы клонировать на пример решения № 9, используйте следующую команду
git clone
.git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
Изучение примера приложения
В этой статье используется решение .NET 9 с тремя проектами:
-
сущности данных. Этот проект является примером библиотеки классов. Он определяет класс
Product
, используемый в веб-приложении и веб-API. - Products: Этот пример веб-API возвращает список продуктов в каталоге и их свойства.
- Store: в этом примере веб-приложение Blazor демонстрирует каталог товаров посетителям веб-сайта.
Откройте и запустите отладку проекта, чтобы проверить его поведение по умолчанию:
Запустите Visual Studio и выберите Файл>Открыть>Проект/Решение.
Перейдите в папку верхнего уровня клонированного решения, выберите eShopLite.sln, а затем выберите Открыть.
В окне Обозревателя решенийщелкните правой кнопкой мыши по решению eShopLite, а затем выберите Настройка запускаемых проектов.
Выберите Несколько стартовых проектов.
В столбце действия выберите Start как для проекта Products, так и для проекта Store.
Выберите [] ОК [].
Чтобы начать отладку решения, нажмите F5 или выберите Пуск.
Две страницы открываются в браузере:
- Страница отображает продукты в JSON формате из вызова веб-API продуктов.
- Страница отображает домашнюю страницу веб-сайта. В меню слева выберите Products, чтобы просмотреть каталог, полученный из веб-API.
Чтобы остановить отладку, закройте браузер.
Запустите Visual Studio Code и откройте клонированную папку. В терминале, где клонирован репозиторий, выполните следующую команду:
code .
Выберите пункт меню Запуск и Отладка, или нажмите Ctrl+Shift+D.
Выберите ссылку создать файл launch.json .
Скопируйте и вставьте следующий JSON в этот файл и затем сохраните.
{ "version": "0.2.0", "compounds": [ { "name": "Run all", "configurations": [ "Run products", "Run store", ] } ], "configurations": [ { "name": "Run products", "type": "dotnet", "request": "launch", "projectPath": "${workspaceFolder}/Products/Products.csproj" }, { "name": "Run store", "type": "dotnet", "request": "launch", "projectPath": "${workspaceFolder}/Store/Store.csproj" } ] }
Чтобы начать отладку решения, нажмите F5 или выберите Пуск.
Две страницы открываются в браузере:
- Страница отображает продукты в JSON формате из вызова веб-API продуктов.
- Страница отображает домашнюю страницу веб-сайта. В меню слева выберите Products, чтобы просмотреть каталог, полученный из веб-API.
Чтобы остановить отладку, закройте браузер и нажмите кнопку Остановить дважды (по одному разу для каждого запущенного экземпляра отладки).
Откройте окно терминала и переместитесь в каталог только что клонированного репозитория.
Чтобы запустить приложение продуктов, выполните следующую команду:
dotnet run --project ./Products/Products.csproj
Откроется страница браузера, отображающая JSON для указанных продуктов.
В отдельном окне терминала снова измените каталоги на клонированные репозитории.
Запустите приложение Store, выполнив следующую команду:
dotnet run --project ./Store/Store.csproj
В браузере откроется страница, отображающая домашнюю страницу веб-сайта. В меню слева выберите Products, чтобы просмотреть каталог, полученный из веб-API.
Чтобы остановить отладку, закройте браузер и нажмите клавиши CTRL +C в обоих терминалах.
Добавьте .NET.NET Aspire в веб-приложение Магазина
Теперь давайте включим проект Store, который реализует веб-интерфейс, в оркестрацию .NET.NET Aspire.
В Visual Studio обозревателе решений Solution Explorer щелкните правой кнопкой мыши проект Store, выберите Добавить, а затем выберите .NET.NET Aspire поддержку Orchestrator.
В диалоговом окне Добавить поддержку .NET.NET Aspire Orchestrator выберите ОК.
Теперь у вас должны быть два новых проекта, которые добавлены в решение:
- eShopLite.AppHost: проект оркестратора, предназначенный для подключения и настройки различных проектов и служб приложения. Оркестратор установлен в качестве начального проекта и зависит от проекта eShopLite.Store.
- eShopLite.ServiceDefaults: .NET.NET Aspire общий проект для управления конфигурациями, которые повторно используются в проектах вашего решения, связанных с устойчивостью, обнаружениемслужб и телеметрией.
В проекте eShopLite.AppHost
builder.AddProject<Projects.Store>("store");
Дополнительные сведения см. в разделе AddProject.
Чтобы добавить проект Products в .NET.NET Aspire:
В Visual Studio, в Обозревателе решений, щелкните проект Продуктов правой кнопкой мыши, выберите Добавить, а затем выберите .NET.NET Aspire Orchestrator Support.
Диалоговое окно указывает, что проект .NET.NET Aspire для Оркестратора уже существует, нажмите ОК.
В проекте eShopLite.AppHost
builder.AddProject<Projects.Products>("products");
Кроме того, обратите внимание, что проект eShopLite.AppHost теперь зависит от проектов Store и Products.
Создайте проект размещения приложения
Для оркестрации существующих проектов необходимо создать новый проект хоста приложения
dotnet new aspire-apphost -o eShopLite.AppHost
Добавьте проект размещения приложения к существующему решению:
Добавьте проект Магазина в качестве ссылки на проект узла приложения с помощью следующей команды CLI .NET:
Создать проект настроек службы по умолчанию
После создания проекта узла приложения необходимо создать новый проект службы с параметрами по умолчанию. Чтобы создать новый проект параметров службы по умолчанию из доступных шаблонов .NET Aspire, выполните следующую команду в интерфейсе командной строки (CLI):
dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults
Чтобы добавить проект в решение, используйте следующую команду .NET CLI:
dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Обновите проект приложение-хост, чтобы добавить проектную ссылку на проект Products:
dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj
Проекты Store и Products должны ссылаться на проект service defaults, чтобы они могли легко включать поиск служб. Чтобы добавить ссылку на проект service defaults в проект Store, используйте следующую команду CLI .NET:
dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Одна и та же команда с немного разными путями должна использоваться для добавления ссылки на проект службы по умолчанию в проект Продукты.
dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
В проектах Store и Products обновите их файлы Program.cs, добавив следующую строку непосредственно после строки var builder = WebApplication.CreateBuilder(args);
:
builder.AddServiceDefaults();
Обновление проекта хоста приложения
Откройте файл Program.cs узла приложения проекта и замените его содержимое следующим кодом C#:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.Store>("store");
builder.AddProject<Projects.Products>("products");
builder.Build().Run();
Предыдущий код:
- Создает новый экземпляр
DistributedApplicationBuilder
. - Добавляет проект Store в систему оркестрации.
- Добавляет проект Продукты в оркестратор.
- Создает и запускает оркестратор.
Обнаружение служб
На этом этапе оба проекта являются частью оркестрации .NET.NET Aspire, но проект Магазина должен полагаться на адрес серверной части продуктов через обнаружение служб .NET.NET Aspire. Чтобы включить обнаружение служб, откройте файл Program.cs в проекте eShopLite.AppHost и обновите код, чтобы builder
добавил ссылку на проект Products:
var builder = DistributedApplication.CreateBuilder(args);
var products = builder.AddProject<Projects.Products>("products");
builder.AddProject<Projects.Store>("store")
.WithExternalHttpEndpoints()
.WithReference(products);
builder.Build().Run();
Предыдущий код выражает, что проект Магазин зависит от проекта Продукты. Для получения дополнительной информации см. раздел .NET.NET Aspire хост приложения: Справочные ресурсы. Эта ссылка используется для обнаружения адреса проекта Products во время выполнения. Кроме того, проект Store настроен для использования внешних конечных точек HTTP. Если вы позже решите развернуть это приложение, вам потребуется вызов WithExternalHttpEndpoints, чтобы убедиться, что оно доступно извне.
Затем обновите appsettings.json в проекте Магазин следующим образом JSON:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ProductEndpoint": "http://products",
"ProductEndpointHttps": "https://products"
}
Адреса обеих конечных точек теперь используют название "products", которое было добавлено в оркестратор на узле приложения. Эти имена используются для обнаружения адреса проекта Products.
Исследуйте подключённое приложение
Давайте начнем решение и рассмотрим новое поведение, которое .NET.NET Aspire предоставляет.
Заметка
Обратите внимание, что проект eShopLite.AppHost является новым стартовым проектом.
- Чтобы начать отладку, нажмите Visual Studioклавишу F5 F5Visual Studio создает проекты.
- Если появится диалоговое окно Docker "Рабочий стол" , выберите Да. Visual Studio запускает подсистему Docker и создает необходимые контейнеры. По завершении развертывания отображается панель мониторинга .NET.NET Aspire.
- На панели мониторинга выберите конечную точку для проекта продуктов. Откроется новая вкладка браузера и отображает каталог продуктов в JSON формате.
- На панели мониторинга выберите конечную точку для проекта магазина. Откроется новая вкладка браузера и отображается домашняя страница веб-приложения.
- В меню слева выберите Продукты. Отображается каталог продуктов.
- Чтобы остановить отладку, закройте браузер.
Удалите созданный ранее файл launch.json, он больше не служит цели. Вместо этого, запустите проект приложения-узла, который координирует другие проекты:
Запустите проект узла приложения, выполнив следующую команду:
dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
Заметка
Если Docker рабочий стол (или Podman) не запущен, вы получите ошибку. Запустите подсистему контейнеров, совместимую с OCI, и повторите попытку.
- На панели мониторинга выберите конечную точку для проекта продуктов. Откроется новая вкладка браузера и отображает каталог продуктов в JSON формате.
- На панели мониторинга выберите конечную точку проекта store. Откроется новая вкладка браузера и отображается домашняя страница веб-приложения.
- В меню слева выберите Продукты. Отображается каталог продуктов.
- Чтобы остановить отладку, закройте браузер.
Поздравляем, вы добавили .NET.NET Aspire механизм оркестрации в ранее существующее веб-приложение. Теперь вы можете добавить интеграции .NET Aspire и использовать инструменты .NET Aspire для упрощения разработки облачных веб-приложений.
.NET Aspire