Что такое .NET Aspire?
Обзор .NET Aspire — ориентированного на облако фреймворка для построения масштабируемых распределённых приложений, охватывающего оркестрацию, компоненты и инструментарий.
.NET Aspire — это комплексный, ориентированный на облако фреймворк, предназначенный для создания масштабируемых, наблюдаемых распределённых приложений промышленного уровня. Он был представлен в виде preview в составе релиза .NET 8.
Фреймворк поставляется через набор пакетов NuGet, каждый из которых охватывает разные аспекты разработки cloud-native приложений, которые обычно строятся как сеть микросервисов, а не как единая большая кодовая база, и сильно опираются на различные сервисы вроде баз данных, систем обмена сообщениями и решений для кеширования.
Orchestration
Оркестрация в контексте cloud-native приложений включает синхронизацию и администрирование различных компонентов. .NET Aspire улучшает этот процесс, упрощая настройку и интеграцию различных частей cloud-native приложения. Он предлагает высокоуровневые абстракции для эффективной работы с такими аспектами, как обнаружение сервисов, переменные окружения и настройки контейнеров, тем самым устраняя необходимость в сложном низкоуровневом коде. Эти абстракции обеспечивают единообразные процедуры конфигурации в приложениях, состоящих из нескольких компонентов и сервисов.
С .NET Aspire оркестрация решает такие ключевые задачи:
- Композиция приложения: включает определение проектов .NET, контейнеров, исполняемых файлов и облачных ресурсов, из которых состоит приложение.
- Обнаружение сервисов и управление строками подключения: хост приложения отвечает за бесшовное включение точных строк подключения и сведений об обнаружении сервисов, тем самым улучшая процесс разработки.
Например, .NET Aspire позволяет создать локальный ресурс контейнера Redis и настроить соответствующую строку подключения в “frontend”-проекте с минимумом кода, используя всего несколько вспомогательных методов.
// Create a distributed application builder given the command line arguments.
var builder = DistributedApplication.CreateBuilder(args);
// Add a Redis container to the application.
var cache = builder.AddRedisContainer("cache");
// Add the frontend project to the application and configure it to use the
// Redis container, defined as a referenced dependency.
builder.AddProject<Projects.MyFrontend>("frontend")
.WithReference(cache);
Components
Компоненты .NET Aspire, доступные в виде пакетов NuGet, разработаны для упрощения интеграции с широко используемыми сервисами и платформами вроде Redis и PostgreSQL. Эти компоненты охватывают различные аспекты разработки cloud-native приложений, предлагая единообразные настройки конфигурации, включая реализацию проверок состояния и средств телеметрии.
Каждый из этих компонентов спроектирован так, чтобы бесшовно интегрироваться с фреймворком оркестрации .NET Aspire. Они способны автоматически распространять свои конфигурации по зависимостям, исходя из связей, определённых в ссылках проектов и пакетов .NET. Это означает, что если компонент, скажем Example.ServiceFoo, зависит от другого, Example.ServiceBar, то Example.ServiceFoo автоматически принимает необходимые конфигурации Example.ServiceBar для обеспечения их взаимодействия.
Для иллюстрации рассмотрим использование компонента Service Bus .NET Aspire в сценарии разработки.
builder.AddAzureServiceBus("servicebus");
Метод AddAzureServiceBus в .NET Aspire решает несколько ключевых задач:
- Регистрирует
ServiceBusClientкак singleton в контейнере внедрения зависимостей (DI), позволяя подключаться к Azure Service Bus. - Этот метод позволяет настраивать
ServiceBusClient, что можно делать непосредственно в коде или через внешние настройки конфигурации. - Дополнительно активирует соответствующие проверки состояния, журналирование и средства телеметрии, специально адаптированные для Azure Service Bus, обеспечивая эффективный мониторинг и сопровождение.
Tooling
Приложения, разработанные с .NET Aspire, придерживаются единообразной структуры, заданной стандартными шаблонами проектов .NET Aspire. Как правило, приложение .NET Aspire состоит как минимум из трёх различных проектов:
- Foo: это исходное приложение, которое может быть стандартным проектом .NET, например Blazor UI или Minimal API. По мере роста приложения можно добавлять больше проектов, и их оркестрация управляется через проекты Foo.AppHost и Foo.ServiceDefaults.
- Foo.AppHost: проект AppHost управляет высокоуровневой оркестрацией приложения. Это включает сборку различных компонентов, таких как API, контейнеры сервисов и исполняемые файлы, а также настройку их взаимосвязи и взаимодействия.
- Foo.ServiceDefaults: этот проект содержит настройки конфигурации по умолчанию для приложения .NET Aspire. Эти настройки, включающие такие аспекты, как проверки состояния и конфигурации OpenTelemetry, можно адаптировать и расширять по необходимости.
Чтобы помочь начать работу с этой структурой, предлагаются два основных стартовых шаблона .NET Aspire:
- .NET Aspire Application: фундаментальный стартовый шаблон, включающий только проекты Foo.AppHost и Foo.ServiceDefaults и предоставляющий базовую основу для дальнейшего развития.
- .NET Aspire Starter Application: более полный шаблон, который содержит не только проекты Foo.AppHost и Foo.ServiceDefaults, но также поставляется с заранее настроенными UI- и API-проектами. Эти дополнительные проекты предварительно настроены с обнаружением сервисов и другими стандартными возможностями .NET Aspire.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.