Создание составного пользовательского интерфейса на основе микрослужб

Совет

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

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Архитектура микрослужб часто начинается с того, что сервер обрабатывает данные и логику, но часто пользовательский интерфейс по-прежнему обрабатывается как монолит. Однако более сложный подход, называемый микроинтерфейсы, — разработать пользовательский интерфейс приложения также на основе микрослужб. Это означает, что у вас появляется составной пользовательский интерфейс, создаваемый микрослужбами, вместо размещения микрослужб на сервере и наличия монолитного клиентского приложения, которое использует эти микрослужбы. При использовании этого подхода создаваемые микрослужбы можно дополнить логикой и визуальным представлением.

На рис. 4-20 показан более простой подход, при котором монолитное клиентское приложение просто использует микрослужбы. Конечно, вы можете использовать промежуточную службу ASP.NET MVC между формированием HTML и JavaScript. На рисунке показана упрощенная схема, которая выделяет наличие единого (монолитного) пользовательского интерфейса клиента, использующего микрослужбы. Эта схема делает акцент на логике и данных, а не на форме пользовательского интерфейса (HTML и JavaScript).

Diagram of a monolithic UI app connecting to microservices.

Рис. 4-20. Приложение с монолитным пользовательским интерфейсом, использующее серверные микрослужбы

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

Во время запуска приложения клиента каждый из компонентов пользовательского интерфейса клиента (например, классы TypeScript) регистрируется в микрослужбе инфраструктуры, которая предоставляет модели представления для данного сценария. Если микрослужба изменяет форму интерфейса, это приводит к изменению пользовательского интерфейса.

На рисунке 4-21 показан вариант составного пользовательского интерфейса. Это упрощенный вариант, так как у вас могут использоваться другие микрослужбы, агрегирующие отдельные фрагменты на основе различных методов. Это зависит от того, используете ли вы традиционный подход к созданию веб-приложения (ASP.NET MVC) или одностраничное приложение (SPA).

Diagram of a composite UI made up of many view models.

Рис. 4-21. Пример составного пользовательского интерфейса приложения, форма которого определяется серверными микрослужбами

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

Подход с составным пользовательским интерфейсом, который формируется микрослужбами, может быть более или менее трудным в зависимости от того, какие методы создания пользовательского интерфейса применяются. Например, вы не сможете использовать одни и те же методы для создания традиционного веб-приложения, одностраничного приложения или собственного мобильного приложения (как при разработке приложений Xamarin, для которых этот подход может оказаться более трудным).

В примере приложения EShopOnContainers используется монолитный пользовательский интерфейс по различным причинам. Во-первых, он позволяет новичкам познакомиться с микрослужбами и контейнерами. Подход с составным пользовательским интерфейсом более сложен, но он еще больше усложняется при проектировании и разработки пользовательского интерфейса. Во-вторых, eShopOnContainers также предоставляет собственное мобильное приложение на основе Xamarin, что сделает его более сложным на стороне клиента C#.

Тем не менее мы рекомендуем воспользоваться следующими ресурсами для дальнейшего изучения составных пользовательских интерфейсов на основе микрослужб.

Дополнительные ресурсы