Создание составного пользовательского интерфейса на основе микрослужб
Совет
Это содержание из электронной книги «Архитектура микросервисов .NET для контейнеризированных приложений .NET», доступной в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.
Архитектура микрослужб часто начинается с обработки данных и логики на стороне сервера, но во многих случаях пользовательский интерфейс по-прежнему обрабатывается как монолит. Однако более сложный подход, называемый микрофронтендов, заключается в разработке пользовательского интерфейса приложения на основе микрослужб. Это означает наличие составного пользовательского интерфейса, созданного микрослужбами, вместо того чтобы иметь микрослужбы на сервере и просто монолитное клиентское приложение, использующее микрослужбы. С помощью этого подхода микрослужбы, которые вы создаете, можно завершить как логикой, так и визуальным представлением.
На рисунке 4–20 показан более простой подход к использованию микрослужб из монолитного клиентского приложения. Конечно, вы можете иметь ASP.NET службу MVC между производством HTML и JavaScript. Рисунок — это упрощение, которое подчеркивает, что у вас есть один (монолитный) клиентский пользовательский интерфейс, использующий микрослужбы, которые просто сосредоточены на логике и данных, а не на форме пользовательского интерфейса (HTML и JavaScript).
рис. 4–20. Монолитное приложение пользовательского интерфейса, использующее внутренние микрослужбы
Напротив, составной пользовательский интерфейс генерируется и компонуется самим микросервисами. Некоторые микрослужбы управляют визуальной формой определенных областей пользовательского интерфейса. Ключевое отличие заключается в том, что у вас есть компоненты пользовательского интерфейса клиента (например, классы TypeScript), основанные на шаблонах, а модель представления пользовательского интерфейса (ViewModel) для этих шаблонов поступает из каждой микрослужбы.
Во время запуска клиентского приложения каждый из компонентов пользовательского интерфейса клиента (классы TypeScript, например) регистрируется в микрослужбе инфраструктуры, поддерживающей предоставление ViewModels для заданного сценария. Если микрослужба изменяет фигуру, пользовательский интерфейс также изменяется.
На рисунке 4–21 показана версия этого составного подхода пользовательского интерфейса. Этот подход упрощен, так как у вас могут быть другие микрослужбы, которые агрегируют детализированные части, основанные на различных методах. Это зависит от того, создаете ли вы традиционный веб-подход (ASP.NET MVC) или SPA (одностраничные приложения).
рис. 4-21. Пример составного приложения пользовательского интерфейса, сформированного внутренними микрослужбами
Каждая из этих микрослужб композиции пользовательского интерфейса будет похожа на небольшой шлюз API. Но в этом случае каждый отвечает за небольшую область пользовательского интерфейса.
Составной подход пользовательского интерфейса, управляемый микрослужбами, может быть более сложным или менее таким, в зависимости от того, какие технологии пользовательского интерфейса вы используете. Например, вы не будете использовать те же методы для создания традиционного веб-приложения, которое используется для создания SPA или собственного мобильного приложения (что может быть более сложным для этого подхода).
Пример приложения eShopOnContainers использует монолитный подход пользовательского интерфейса по нескольким причинам. Во-первых, это введение в микросервисы и контейнеры. Составной пользовательский интерфейс является более сложным, но также требует дополнительной сложности при разработке и разработке пользовательского интерфейса. Во-вторых, eShopOnContainers также предоставляет собственное мобильное приложение на основе Xamarin (не поддерживается по состоянию на май 2024 года), что сделает его более сложным на стороне клиента C#.
Однако мы рекомендуем использовать следующие ссылки, чтобы узнать больше о составном пользовательском интерфейсе на основе микрослужб.
Дополнительные ресурсы
Micro Frontends (блог Мартин Фаулер)https://martinfowler.com/articles/micro-frontends.html
микро фронтенды (Сайт Майкла Геерса) Композитный пользовательский интерфейс с использованием ASP.NET (семинар компании Particular)https://github.com/Particular/Workshop/tree/master/demos/asp-net-core
Рубен Oostinga. Монолитный интерфейс в архитектуре микрослужб https://xebia.com/blog/the-monolithic-frontend-in-the-microservices-architecture/
Mauro Servienti. Секрет лучшей структуры пользовательского интерфейса https://particular.net/blog/secret-of-better-ui-composition
Виктор Фарсич. Включение Front-End веб-компонентов в микрослужбы https://technologyconversations.com/2015/08/09/including-front-end-web-components-into-microservices/
управление интерфейсом в архитектуре микрослужбhttps://allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html