Поделиться через


Руководство. Добавление .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. Чтобы клонировать в .NET9 пример решения, используйте следующую команду 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. Выберите пункт меню запуска и отладки или нажмите клавиши CTRLSHIFTD.

  3. Выберите , чтобы создать запуск. Ссылка на файлjson.

    Visual Studio Code: запуск и отладка, создание конфигурации запуска.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. В в обозревателе решенийщелкните правой кнопкой мыши проект Store, выберите Добавить, а затем выберите службу поддержки Orchestrator.

  2. В диалоговом окне Добавление .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:

  1. В вобозревателя решений щелкните проект продуктов правой кнопкой мыши, выберите Добавить, а затем выберите службу поддержки Orchestrator.

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

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

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

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

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

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

Для оркестрации существующих проектов необходимо создать новый проект узла приложений . Чтобы создать новый узел приложения проекта из доступных шаблонов .NET Aspire, выполните следующую команду .NET 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, выполните следующую команду .NET 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, чтобы они могли легко включать поиск служб. Чтобы добавить ссылку на службу по умолчанию проекта в проекте 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, но Store должен быть в состоянии обнаружить адрес backend для продуктов с помощью .NET.NET Aspireобнаружения служб. Чтобы включить обнаружение сервисов, откройте файл Program.cs в eShopLite.AppHost и обновите код, который Магазин добавляет ссылку на проект 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 в хосте приложения: справочные материалы. Эта ссылка используется, чтобы обнаружить адрес проекта продуктов . Кроме того, проект 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. Чтобы остановить отладку, закройте браузер.

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

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

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

    Заметка

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

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

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

    Заметка

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

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

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