Бөлісу құралы:


Руководство. Добавление .NET Aspire в существующее приложение .NET

Если у вас есть микрослужбы и веб-приложение .NET, вы можете добавить в него .NET Aspire и получить все включенные функции и преимущества. В этой статье вы добавите оркестрацию .NET Aspire в простой, уже существующий проект .NET 9. Вы узнаете, как:

  • Изучите структуру существующего приложения микрослужб.
  • Включите существующие проекты в оркестрацию .NET.NET Aspire.
  • Поймите, какие изменения в проектах вносит регистрация.
  • Запустите проект .NET.NET Aspire.

Необходимые условия

Для работы с .NET.NET Aspire вам необходимо следующее, установленное локально:

Дополнительные сведения см. в разделе программы установки и инструментов .NET.NET Aspire, и пакета SDK .NET.NET Aspire.

Начало работы

Начнем с получения кода для решения:

  1. Откройте командную строку и измените каталоги на место хранения кода.

  2. Чтобы клонировать на пример решения № 9, используйте следующую команду git clone.

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
    

Изучение примера приложения

В этой статье используется решение .NET 9 с тремя проектами:

  • сущности данных. Этот проект является примером библиотеки классов. Он определяет класс Product, используемый в веб-приложении и веб-API.
  • Products: Этот пример веб-API возвращает список продуктов в каталоге и их свойства.
  • Store: в этом примере веб-приложение Blazor демонстрирует каталог товаров посетителям веб-сайта.

Откройте и запустите отладку проекта, чтобы проверить его поведение по умолчанию:

  1. Запустите Visual Studio и выберите Файл>Открыть>Проект/Решение.

  2. Перейдите в папку верхнего уровня клонированного решения, выберите eShopLite.sln, а затем выберите Открыть.

  3. В окне Обозревателя решенийщелкните правой кнопкой мыши по решению eShopLite, а затем выберите Настройка запускаемых проектов.

  4. Выберите Несколько стартовых проектов.

  5. В столбце действия выберите Start как для проекта Products, так и для проекта Store.

  6. Выберите [] ОК [].

  7. Чтобы начать отладку решения, нажмите F5 или выберите Пуск.

  8. Две страницы открываются в браузере:

    • Страница отображает продукты в JSON формате из вызова веб-API продуктов.
    • Страница отображает домашнюю страницу веб-сайта. В меню слева выберите Products, чтобы просмотреть каталог, полученный из веб-API.
  9. Чтобы остановить отладку, закройте браузер.

  1. Запустите Visual Studio Code и откройте клонированную папку. В терминале, где клонирован репозиторий, выполните следующую команду:

    code .
    
  2. Выберите пункт меню Запуск и Отладка, или нажмите Ctrl+Shift+D.

  3. Выберите ссылку создать файл launch.json .

    Visual Studio Code: запуск и отладка файла launch.json.

  4. Скопируйте и вставьте следующий 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"
            }
        ]
    }
    
  5. Чтобы начать отладку решения, нажмите F5 или выберите Пуск.

  6. Две страницы открываются в браузере:

    • Страница отображает продукты в JSON формате из вызова веб-API продуктов.
    • Страница отображает домашнюю страницу веб-сайта. В меню слева выберите Products, чтобы просмотреть каталог, полученный из веб-API.
  7. Чтобы остановить отладку, закройте браузер и нажмите кнопку Остановить дважды (по одному разу для каждого запущенного экземпляра отладки).


  1. Откройте окно терминала и переместитесь в каталог только что клонированного репозитория.

  2. Чтобы запустить приложение продуктов, выполните следующую команду:

    dotnet run --project ./Products/Products.csproj
    
  3. Откроется страница браузера, отображающая JSON для указанных продуктов.

  4. В отдельном окне терминала снова измените каталоги на клонированные репозитории.

  5. Запустите приложение Store, выполнив следующую команду:

    dotnet run --project ./Store/Store.csproj
    
  6. В браузере откроется страница, отображающая домашнюю страницу веб-сайта. В меню слева выберите Products, чтобы просмотреть каталог, полученный из веб-API.

  7. Чтобы остановить отладку, закройте браузер и нажмите клавиши CTRL +C в обоих терминалах.

Добавьте .NET.NET Aspire в веб-приложение Магазина

Теперь давайте включим проект Store, который реализует веб-интерфейс, в оркестрацию .NET.NET Aspire.

  1. В Visual Studio обозревателе решений Solution Explorer щелкните правой кнопкой мыши проект Store, выберите Добавить, а затем выберите .NET.NET Aspire поддержку Orchestrator.

  2. В диалоговом окне Добавить поддержку .NET.NET Aspire Orchestrator выберите ОК.

    снимок экрана диалогового окна

Теперь у вас должны быть два новых проекта, которые добавлены в решение:

  • eShopLite.AppHost: проект оркестратора, предназначенный для подключения и настройки различных проектов и служб приложения. Оркестратор установлен в качестве начального проекта и зависит от проекта eShopLite.Store.
  • eShopLite.ServiceDefaults: .NET.NET Aspire общий проект для управления конфигурациями, которые повторно используются в проектах вашего решения, связанных с устойчивостью, обнаружениемслужб и телеметрией.

В проекте eShopLite.AppHost откройте файл . Обратите внимание на эту строку кода, которая регистрирует проект Store в оркестрации: .NET.NET Aspire.

builder.AddProject<Projects.Store>("store");

Дополнительные сведения см. в разделе AddProject.

Чтобы добавить проект Products в .NET.NET Aspire:

  1. В Visual Studio, в Обозревателе решений, щелкните проект Продуктов правой кнопкой мыши, выберите Добавить, а затем выберите .NET.NET Aspire Orchestrator Support.

  2. Диалоговое окно указывает, что проект .NET.NET Aspire для Оркестратора уже существует, нажмите ОК.

    Снимок экрана, показывающий, что.NET.NET Aspire Orchestrator уже добавлен.

В проекте eShopLite.AppHost откройте файл . Обратите внимание на эту строку кода, которая регистрирует проект Products в оркестрации .NET.NET Aspire.

builder.AddProject<Projects.Products>("products");

Кроме того, обратите внимание, что проект eShopLite.AppHost теперь зависит от проектов Store и Products.

Создайте проект размещения приложения

Для оркестрации существующих проектов необходимо создать новый проект хоста приложения . Чтобы создать новый проект хоста приложения из доступных шаблонов, используйте следующую команду CLI:

dotnet new aspire-apphost -o eShopLite.AppHost

Добавьте проект размещения приложения к существующему решению:

dotnet sln ./eShopLite.sln add ./eShopLite.AppHost/eShopLite.AppHost.csproj

Добавьте проект Магазина в качестве ссылки на проект узла приложения с помощью следующей команды CLI .NET:

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Store/Store.csproj

Создать проект настроек службы по умолчанию

После создания проекта узла приложения необходимо создать новый проект службы с параметрами по умолчанию. Чтобы создать новый проект параметров службы по умолчанию из доступных шаблонов .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 является новым стартовым проектом.

  1. Чтобы начать отладку, нажмите Visual Studioклавишу F5 F5Visual Studio создает проекты.
  2. Если появится диалоговое окно Docker "Рабочий стол" , выберите Да. Visual Studio запускает подсистему Docker и создает необходимые контейнеры. По завершении развертывания отображается панель мониторинга .NET.NET Aspire.
  3. На панели мониторинга выберите конечную точку для проекта продуктов. Откроется новая вкладка браузера и отображает каталог продуктов в JSON формате.
  4. На панели мониторинга выберите конечную точку для проекта магазина. Откроется новая вкладка браузера и отображается домашняя страница веб-приложения.
  5. В меню слева выберите Продукты. Отображается каталог продуктов.
  6. Чтобы остановить отладку, закройте браузер.

Удалите созданный ранее файл launch.json, он больше не служит цели. Вместо этого, запустите проект приложения-узла, который координирует другие проекты:

  1. Запустите проект app host, щелкнув правой кнопкой мыши проект eShopLite.AppHost в обозревателе решений и выбрав Отладка>Запустить новый экземпляр:

    Visual Studio Code: Solution Explorer: выбор режима отладки >, запуск нового экземпляра.

    Заметка

    Если Docker рабочий стол (или Podman) не запущен, вы получите ошибку. Запустите подсистему контейнеров, совместимую с OCI, и повторите попытку.

  1. Запустите проект узла приложения, выполнив следующую команду:

    dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
    

    Заметка

    Если Docker рабочий стол (или Podman) не запущен, вы получите ошибку. Запустите подсистему контейнеров, совместимую с OCI, и повторите попытку.

  1. На панели мониторинга выберите конечную точку для проекта продуктов. Откроется новая вкладка браузера и отображает каталог продуктов в JSON формате.
  2. На панели мониторинга выберите конечную точку проекта store. Откроется новая вкладка браузера и отображается домашняя страница веб-приложения.
  3. В меню слева выберите Продукты. Отображается каталог продуктов.
  4. Чтобы остановить отладку, закройте браузер.

Поздравляем, вы добавили .NET.NET Aspire механизм оркестрации в ранее существующее веб-приложение. Теперь вы можете добавить интеграции .NET Aspire и использовать инструменты .NET Aspire для упрощения разработки облачных веб-приложений.