Как подойти к микрофронтендам в ASP.NET?

Я новичок в микросервисах и веб-разработке, но построил себе небольшую микросервисную архитектуру в ASP.NET, где у меня есть несколько сервисов с простыми операциями CRUD, предоставляемыми REST api. В настоящее время я могу использовать их в одном клиенте MVC и отображать представления с данными из микросервисов через привязку модели.

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

Я пытался прочитать эту тему, но не нашел точки входа.

Есть ли где-нибудь пример реализации микрофронтенда в ASP.NET (не в ядре)?


person Bernd Schlowski    schedule 26.02.2020    source источник
comment
Ищу то же самое. Есть ли способ использовать микрофонный конец в моем частичном представлении.   -  person John Kuriakose    schedule 30.09.2020


Ответы (1)


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

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

Смотрите ссылки для более подробной информации:

Итак, вы захотите создать свой интерфейс с выбранным фреймворком / стахом, например Blazor / MVC 5 / Vue / Angular / React / и т. Д., И чтобы этот интерфейсный код вызывал службы, которые вы создаете с помощью HTTP-запросов.

редактировать на основе комментариев:

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

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

см. здесь для получения дополнительных сведений о микро-интерфейсе.

person CoderLee    schedule 26.02.2020
comment
Спасибо за ответ. Основываясь на этом рисунке от Microsoft, можно реализовать микросервисы, составляющие viewModel, хотя: docs.microsoft.com/de-de/dotnet/architecture/microservices / Ищу способ реализовать такой микросервис. - person Bernd Schlowski; 26.02.2020
comment
Эта модель представления будет жить в вашем внешнем проекте. Как и в Blazor или MVC, вам нужно создать модель представления для каждого представления. Вы должны заполнить эту модель классом Service, который обращается к вашему API / микросервису. - person CoderLee; 26.02.2020
comment
Если прояснить ситуацию лучше, микросервис вообще не создает и не использует модель представления. Это делается во внешнем приложении. В чем ваш интерфейс? Мы могли бы помочь вам создать для него модель представления, но ваш микросервис не будет этим заниматься. - person CoderLee; 26.02.2020
comment
Но это снова приведет к монолитному интерфейсу? В настоящее время у меня есть монолитный интерфейс в MVC. Однако я пытаюсь достичь микрофронтендов, где каждая служба предоставляет свой собственный интерфейс. - person Bernd Schlowski; 26.02.2020
comment
Фактически то, что вы просите, превратит вашу службу и интерфейс в монолитное приложение. Что вам нужно сделать, так это иметь несколько интерфейсных приложений, в вашем случае несколько приложений MVC, и несколько сервисов, которые их поддерживают. Ключ состоит в том, чтобы держать сервисы и интерфейсную часть отдельно друг от друга и создавать несколько приложений вместо одного монолита. - person CoderLee; 26.02.2020
comment
Основываясь на ваших изменениях, скажем, у меня есть календарь и приложение для встреч, но теперь я хотел бы отображать их на одной веб-странице или, по крайней мере, иметь общий фрейм вокруг них и иметь возможность переключаться между ними. Как я могу подойти к этому? Я предполагаю, как-то интегрировать их с javascript? - person Bernd Schlowski; 26.02.2020
comment
Поскольку у вас уже есть службы, вы можете сделать компоненты просмотра для просмотра собраний или календарей на одной странице или во вкладках и т. Д. В качестве альтернативы вы бы вообще не разделяли эти приложения, потому что имеет смысл иметь их в то же приложение. - person CoderLee; 26.02.2020
comment
Что вы хотите сделать, так это разделить ваше приложение на отдельные логические блоки, которые имеют смысл. Допустим, у вас есть приложение для обработки заказов, которое также создает контент для блога. Было бы разумно иметь их как отдельные приложения. Это поможет ответить на ваш вопрос? - person CoderLee; 26.02.2020
comment
Я понимаю. Я читал о компонентах просмотра, но, к сожалению, они доступны только в ASP.NET Core, а не в ASP.NET. У вас есть идея реализации в ASP.NET? - person Bernd Schlowski; 26.02.2020
comment
Позвольте нам продолжить это обсуждение в чате. - person CoderLee; 26.02.2020