Знакомство с справочным приложением eShopOnContainers

Совет

Это содержимое является фрагментом из электронной книги, архитектора облачных собственных приложений .NET для Azure, доступных в .NET Docs или в виде бесплатного скачиваемого PDF-файла, который можно прочитать в автономном режиме.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Корпорация Майкрософт, в партнерстве с ведущими экспертами сообщества, разработала полнофункциональное приложение справочника по микрослужбам на основе облака, eShopOnContainers. Это приложение создано для демонстрации с помощью .NET и Docker, а также при необходимости Azure, Kubernetes и Visual Studio для создания онлайн-магазина.

eShopOnContainers Sample App Screenshot.

Рис. 2-1. Снимок экрана приложения eShopOnContainers.

Перед началом работы с этой главой рекомендуется скачать эталонное приложение eShopOnContainers. Если это сделать, вам будет проще следовать вместе с представленной информацией.

Компоненты и требования

Начнем с проверки функций и требований приложения. Приложение eShopOnContainers представляет интернет-магазин, который продает различные физические продукты, такие как футболки и кофейные кружки. Если вы купили что-нибудь онлайн раньше, опыт использования магазина должен быть относительно знакомым. Ниже приведены некоторые основные функции, которые реализует магазин:

  • Список элементов каталога
  • Фильтрация элементов по типу
  • Фильтрация элементов по бренду
  • Добавление элементов в корзину покупок
  • Изменение или удаление элементов из корзины
  • Оформление
  • Регистрация учетной записи
  • Вход
  • Выйти
  • Просмотр заказов

Приложение также имеет следующие нефункциональный требования:

  • Он должен быть высокодоступен, и он должен автоматически масштабироваться для удовлетворения повышенного трафика (и масштабирование обратно после утихания трафика).
  • Он должен обеспечить простой мониторинг работоспособности и журналов диагностики, чтобы помочь устранить проблемы, возникающие в ней.
  • Она должна поддерживать гибкий процесс разработки, включая поддержку непрерывной интеграции и развертывания (CI/CD).
  • Помимо двух интерфейсных веб-интерфейсов (традиционное и одностраничное приложение), приложение также должно поддерживать мобильные клиентские приложения с различными типами операционных систем.
  • Она должна поддерживать кроссплатформенную разработку и кроссплатформенную разработку.

eShopOnContainers reference application development architecture.

Рис. 2-2. Архитектура разработки приложений eShopOnContainers.

Приложение eShopOnContainers доступно из веб-клиентов или мобильных клиентов, обращаюющихся к приложению по протоколу HTTPS, предназначенным для приложения сервера ASP.NET Core MVC или соответствующего шлюза API. Шлюзы API предлагают несколько преимуществ, таких как отключение серверных служб от отдельных интерфейсных клиентов и повышение безопасности. Приложение также использует связанный шаблон, известный как Backends-for-Frontends (BFF), который рекомендует создавать отдельные шлюзы API для каждого внешнего клиента. Эталонная архитектура демонстрирует разбиение шлюзов API на основе того, поступает ли запрос из веб-клиента или мобильного клиента.

Функциональные возможности приложения разбиваются на множество различных микрослужб. Существуют службы, ответственные за проверку подлинности и идентификацию, перечисление элементов из каталога продуктов, управление корзинами покупок пользователей и размещение заказов. Каждая из этих отдельных служб имеет собственное постоянное хранилище. Нет единого основного хранилища данных, с которым взаимодействуют все службы. Вместо этого координация и обмен данными между службами выполняется по мере необходимости и с помощью шины сообщений.

Каждая из различных микрослужб разработана по-разному в зависимости от их индивидуальных требований. Этот аспект означает, что их стек технологий может отличаться, хотя все они построены с помощью .NET и предназначены для облака. Более простые службы предоставляют базовый доступ Create-Read-Update-Delete (CRUD) к базовым хранилищам данных, а более сложные службы используют подходы и шаблоны проектирования на основе домена для управления сложностью бизнеса.

Different kinds of microservices

Рис. 2-3. Различные микрослужбы.

Обзор кода

Так как он использует микрослужбы, приложение eShopOnContainers включает в себя довольно несколько отдельных проектов и решений в своем репозитории GitHub. Помимо отдельных решений и исполняемых файлов различные службы предназначены для запуска внутри собственных контейнеров как во время локальной разработки, так и во время выполнения в рабочей среде. На рисунке 2–4 показано полное решение Visual Studio, в котором организованы различные проекты.

Projects in Visual Studio solution.

Рис. 2-4. Проекты в решении Visual Studio.

Код организован для поддержки различных микрослужб и внутри каждой микрослужбы код разбивается на логику домена, проблемы инфраструктуры и пользовательский интерфейс или конечную точку службы. Во многих случаях зависимости каждой службы могут выполняться службами Azure в рабочей среде и альтернативными вариантами для локальной разработки. Давайте рассмотрим, как требования приложения сопоставляются со службами Azure.

Общие сведения о микрослужбах

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