Сведения о компонентах .NET Aspire
Хотя каждая микрослужба в приложении, скорее всего, будет уникальной, они часто имеют аналогичные требования для служб резервного копирования, таких как базы данных и кэши. Это может быть сложно написать код в каждой микрослужбе, которая взаимодействует с этими службами резервного копирования. В .NET Aspire этот код уменьшается при добавлении компонента .NET Aspire. Существуют встроенные компоненты для многих распространенных требований к поддержке, которые, скорее всего, требуются в микрослужбах.
Представьте, что вы работаете на открытом воздухе одежды и оборудования компании. Ваши команды разработчиков начали разрабатывать микрослужбы для нового веб-приложения eShop. Для каждой микрослужбы могут потребоваться такие службы, как базы данных, службы обмена сообщениями и кэши. Вы хотите оценить, как .NET Aspire может помочь взаимодействовать с этими службами.
В этом уроке вы узнаете о компонентах, включенных в .NET Aspire вне коробки, и о том, как выбрать лучший компонент для микрослужбы.
Использование компонентов .NET Aspire
Каждый компонент .NET Aspire — это пакет NuGet, который можно добавить в проект с помощью диспетчера пакетов NuGet. В Visual Studio есть новый пункт меню "Добавить > компонент .NET Aspire ". Это действие отображает диспетчер пакетов с фильтром, примененным для отображения только компонентов .NET Aspire:
Примечание.
Вы увидите, как использовать эти средства компонента в упражнении далее в этом модуле.
Visual Studio Code с расширением комплекта разработки C# также поддерживает добавление компонентов .NET Aspire.
Кроме того, интерфейс командной строки .NET может добавлять компоненты .NET. Например:
dotnet add package Aspire.StackExchange.Redis --prerelease
В проекте AppHost необходимо зарегистрировать компонент и использовать его в проектах, вызывающих его:
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.AspireSample_Web>("webfrontend")
.WithReference(cache);
Затем можно использовать внедрение зависимостей, чтобы добавить его в потребляемый проект:
build.AddRedisClient("cache");
Другой код использования зависит от используемого компонента.
Примечание.
Каждый тип компонента .NET Aspire обычно имеет эквивалентный пакет размещения. Пакеты размещения настраивают ресурсы и зависимости, необходимые приложению, и их устанавливаются в проекте AppHost , а не в используемом проекте.
Компоненты базы данных
В облачных приложениях каждая микрослужба отвечает за хранение собственных данных и может потребоваться база данных структурированных или частично структурированных данных для чтения и записи. Так как каждая микрослужба разрабатывается независимо, вы можете обнаружить, что несколько различных систем баз данных используются различными частями вашего полного приложения.
.NET Aspire включает компоненты для следующих реляционных серверов баз данных:
- PostgreSQL: популярный сервер базы данных с открытым кодом с реализацией язык SQL (SQL).
- MySQL: другой сервер базы данных SQL с открытым исходным кодом.
- База данных SQL: система базы данных SQL Майкрософт.
Примечание.
Компонент .NET Aspire База данных SQL может работать с Microsoft SQL Server или База данных SQL Azure, который является реализацией SQL Server в облаке Azure. Аналогичным образом Azure включает в себя реализации PostgreSQL и MySQL с платформой как услуга (PaaS). Расположение, в котором выполняется база данных, является решением для каждой группы архитектуры микрослужб, но компоненты .NET Aspire могут поддерживать множество облачных расположений и не применять какую-либо конкретную службу размещения.
Если вы хотите работать с полуструктурированных данных, .NET Aspire включает поддержку для этих систем NoSQL:
- MongoDB: кроссплатформенный, ориентированный на документ сервер базы данных NoSQL.
- Azure Cosmos DB: гибкая система базы данных NoSQL Майкрософт, размещенная в Azure.
Компоненты хранилища
В .NET Aspire компоненты хранилища предоставляются для микрослужб, которые должны хранить файлы, данные или сообщения в учетных записях служба хранилища Azure. Существует один компонент для каждой из трех служб в служба хранилища Azure. Выберите компонент в соответствии с тем, что вы хотите сделать с служба хранилища Azure:
- Хранилище BLOB-объектов Azure. Используйте эту службу для хранения и получения файлов BLOB-объектов, таких как изображения и видео.
- Хранилище таблиц Azure: используйте эту службу для хранения и извлечения строк в таблицах данных с запятой.
- Хранилище очередей Azure: используйте эту службу для добавления сообщений в очереди для распространения в другие микрослужбы подписки.
Компоненты обмена сообщениями
Одним из способов повышения надежности и гибкости взаимодействия между микрослужбами в облачном приложении является использование решений для обмена сообщениями, которые предоставляют очереди, разделы и подписки вместо прямого обмена данными. .NET Aspire включает компоненты для следующих трех служб обмена сообщениями. Выберите компонент на основе брокера обмена сообщениями, который требуется использовать разработчику:
- RabbitMQ: этот брокер сообщений широко используется, с открытым исходным кодом и поддерживает несколько протоколов обмена сообщениями для предоставления, очередей, разделов и подписок.
- Apache Kafka: эта служба обрабатывает потоки событий, которые могут включать сообщения и включает API Kafka Connect для импорта и экспорта данных в другие системы.
- Служебная шина Azure. Этот брокер сообщений размещен в Azure и предоставляет очереди и распределение сообщений на основе подписки.
Кэширование компонентов
Когда микрослужба получает запрос от пользователя или другой микрослужбы, может потребоваться создать ответ с помощью данных из нескольких расположений или сложных операций. Эта операция может занять время. Кэширование частей таких ответов позволяет сэкономить время позже при поступлении аналогичных или идентичных запросов. Таким образом кэширование оптимизирует производительность.
Одна из популярных служб кэша — Redis. Он имеет функции брокера сообщений и базы данных в памяти, но чаще всего используется для кэширования ответов в веб-приложениях и службах. .NET Aspire имеет три различных компонента, которые работают с Redis. Выберите компонент на основе задачи кэширования, которую вы хотите достичь в микрослужбе:
- Компонент Redis: используйте этот компонент, если вы хотите использовать Redis в качестве базы данных в памяти.
- Компонент кэширования выходных данных Redis: используйте этот компонент, если требуется кэшировать полные HTTP-ответы, такие как все веб-страницы.
- Компонент распределенного кэша Redis: используйте этот компонент, если вы хотите создать один кэш для нескольких микрослужб в приложении.
Безопасность
В облачном приложении безопасность данных часто является критически важной для бизнеса темой. Так как ваши клиенты могут доверять вам персональными и конфиденциальными данными, необходимо убедиться, что он зашифрован и защищен от перехвата или изменения. Цифровые подписи и шифрование требуют хранения закрытых ключей и их извлечения для расшифровки. Azure Key Vault — это одно расположение, в котором можно безопасно хранить ключи и другие секреты, такие как пароли и сертификаты.
.NET Aspire включает компонент Azure Key Vault, чтобы можно было легко хранить и извлекать секреты в Azure Key Vault.