Эталонное Приложение На Основе Архитектуры Контейнеров И Микросервисов.

Хабр, здравствуйте.

Сегодня мы рассказываем вам о кроссплатформенном эталонном приложении .

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

И, конечно же, видео для лучшего понимания.

Присоединяйтесь к нам! Новости Хотите одним из первых получать новейшие рекомендации по архитектуре .

NET и справочные приложения, такие как eShopOnContainers? --> Нажмите «Подписаться (смотреть)» в этот новый репозиторий GitHub. Примечание .

Требуемая версия Visual Studio 2017: VS 2017 15.5 и выше.



Обновления для .

NET Core 2.0 Wave

Примечание Мы представили полное серверное решение для .

NET Core 2.0 Wave: не только компиляцию, но и новый рекомендуемый код в EF Core 2.0, ASP.NET Core 2.0 и других связанных новых версиях.

Файлы dockerfile в решении также были обновлены для поддержки Докер многоэтапный с середины декабря 2017 г.

Список реализованных функций, специфичных для .

NET Core 2.0, см.

здесь.

публикации .

Не забудьте заглянуть в наш управление по отраслям, выделяя принципы соответствующей политики.

Отказ от ответственности Это бета-версия примера приложения, так как мы постоянно совершенствуем технологии и готовим новые версии решений на их основе.

Мы можем значительно улучшить и изменить многие функции, проводя рефакторинг текущего кода и реализуя новые функции.

Мы с нетерпением ждем предложений и запросов на улучшения от сообщества.

Это эталонное приложение реализует архитектуру, ориентированную на микросервисы, в упрощенной форме.

Он предназначен для использования таких технологий, как .

NET Core, с контейнерами Docker в универсальном приложении.

Мы выбрали направление «электронные магазины/электронная коммерция» просто потому, что оно знакомо большинству пользователей и разработчиков.

Однако этот пример приложения не следует рассматривать как «эталонную модель электронной коммерции».

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

Основная цель — помочь разработчикам быстро и легко начать работу с контейнерами Docker, микросервисами и платформой .

NET Core. Например, как только разработчик запустил решение локально и знаком с использованием контейнеров Docker и микросервисов в .

NET Core, ему нужно будет выбрать кластер/оркестратор микросервисов, например Kubernetes в Azure или Azure Service Fabric (обе среды были протестированы и поддерживается этим решением).

Кроме того, вам может потребоваться перенести ваши базы данных в высокодоступные облачные службы (например, базу данных SQL Azure) или реализовать EventBus с помощью служебной шины Azure или любой другой, доступной на рынке.



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

Проверить с дорожной картой и основными этапами будущих выпусков eShopOnContainers на вики-страницах.

Здесь вы узнаете о запланированных релизах и сможете оставить отзыв в раздел ПРОБЛЕМЫ, если вам нужно реализовать или улучшить конкретный сценарий.

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



Обзор архитектуры

Это эталонное приложение является кроссплатформенным как на стороне сервера, так и на стороне клиента, поскольку оно запускает службы .

NET Core в контейнерах Linux или Windows (в зависимости от используемого хоста Docker) и использует Xamarin для мобильных приложений, работающих на платформах Android, iOS или Windows. /UWP (в последнем случае для запуска клиентских веб-приложений подойдет любой браузер).

Он реализует упрощенную версию архитектуры с несколькими автономными микросервисами, каждый из которых имеет свои собственные данные и базу данных и использует свой подход (простые шаблоны CRUD, шаблоны DDD/CQRS).

HTTP используется в качестве протокола связи между клиентскими приложениями и микросервисами.

Он также поддерживает асинхронную связь для отправки обновленных данных в несколько служб на основе событий интеграции и шины событий (облегченный брокер сообщений на основе RabbitMQ или Azure Service Bus) и других функций, определенных в план разработка продукта.



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

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

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



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

Пример кода в этом репозитории НЕ использует управление API Azure для обеспечения «принуждения F5» в Visual Studio (или CLI) для примера, который не имеет предварительно созданных зависимостей в Azure. Однако вам следует выбрать подходящий подход к работе со шлюзами API при подготовке решения к производственному развертыванию.

Микросервисы различаются по типу, то есть реализация внутренней архитектуры может осуществляться по-разному в зависимости от ее назначения, как показано на рисунке ниже.



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

Что касается текущей конфигурации этого решения среды разработки, базы данных SQL с примерами данных автоматически развертываются в один контейнер SQL Server для Linux (один общий контейнер Docker для баз данных SQL), поэтому все решение можно запускать независимо от облака или конкретный сервер.

Каждую базу данных также можно развернуть как отдельный контейнер Docker, но тогда вам потребуется более 8 ГБ оперативной памяти Docker на компьютере разработки для запуска трех контейнеров Docker для SQL Server на хосте Docker Linux в среде разработки Docker для Windows или Docker. для Мака».

То же самое относится к кэшу Redis, работающему в качестве контейнера для среды разработки, а также к базе данных NoSQL (MongoDB), работающей в режиме контейнера.

Однако в реальной производственной среде рекомендуется развертывать базы данных (в нашем случае SQL Server, Redis и NoSQL) в службах высокой доступности, таких как База данных SQL Azure, Redis как услуга и Azure CosmosDB, а не в контейнере MongoDB (поскольку обе системы используют один и тот же протокол доступа).

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



Сопутствующая документация и лучшие практики

Разрабатывая это эталонное приложение, мы готовим справочное руководство/электронную книгу по проектированию архитектуры и разработке приложений .

NET на основе контейнеров и микросервисов (см.

ссылку для скачивания ниже).

В нем подробно описаны подходы к использованию этого архитектурного стиля (микросервисы, контейнеры Docker, доменно-ориентированное проектирование для определенных микросервисов), а также других упрощенных архитектурных стилей, включая монолитные приложения, которые также можно развертывать как контейнеры Docker. Вы также можете ознакомиться с другими электронными книгами по жизненному циклу контейнера/Docker (DevOps, CI/CD и т. д.) и инструментам Microsoft, а также электронной книгой по шаблонам корпоративных приложений на основе Xamarin.Forms. Загрузите и просмотрите справочные руководства/электронные книги:

Архитектурное проектирование и разработка Жизненный цикл контейнеров и CI/CD Шаблоны приложений на основе Xamarin.Forms


Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

Скачать PDF (второе издание) Скачать Скачать
Эти книги в других форматах (например, MOBI и EPUB) и другие электронные публикации доступны в Центр архитектуры .

NET .

Электронная почта для обратной связи: [email protected] Рекомендуем скачать и прочитать электронную книгу «Проектирование архитектуры и разработка микросервисов» ( Архитектура и разработка микросервисов ).

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



Обзор кода приложения

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

NET ядро И Докер .

Пример бизнес-направления или сценария — интернет-магазин или сервис электронной коммерции — реализуется с помощью многоконтейнерного приложения.

Каждый контейнер представляет собой развернутую микрослужбу (например, микрослужбу корзины, микрослужбу каталога, микрослужбу оформления заказа и микрослужбу удостоверений), которая разработана с использованием ASP.NET Core поверх .

NET Core и поэтому может работать в контейнерных службах Linux или Windows. На снимке экрана ниже показана структура решения VS для этих микросервисов/контейнеров и клиентских приложений.

  • (рекомендуется для новичков) Откройте eShopOnContainers-ServicesAndWebApps.sln, если вам нужно решение, содержащее только серверные проекты для микросервисов и веб-приложений.

  • Откройте eShopOnContainers-MobileApps.sln, если вам нужно решение, содержащее только проекты клиентских мобильных приложений (только мобильные приложения Xamarin).

    Он также работает независимо на основе макетов.

  • Откройте eShopOnContainers.sln, если вам нужно решение, содержащее все проекты (все клиентские приложения и сервисы).



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

Наконец, эти микросервисы используются множеством клиентских веб-приложений и мобильных приложений, как описано ниже.

Приложение MVC (ASP.NET Core) : Содержит интересные варианты использования микросервисов на основе HTTP из C#, работающих на стороне сервера, поскольку это типичное приложение ASP.NET Core MVC. Он работает на стороне сервера, поэтому доступ к другим контейнерам/микросервисам осуществляется во внутренней сети узла Docker с помощью внутреннего разрешения имен.



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

SPA (одностраничное приложение) : тот же «функционал интернет-магазина», но разработанный на основе Angular, Typescript и немного ASP.NET Core MVC. Это еще один подход к разработке веб-клиентских приложений, который обеспечивает более современное поведение клиента, больше напоминающее одностраничное приложение для настольного компьютера, чем типичное браузерное решение.

Клиенты получают доступ к микросервисам на основе HTTP через TypeScript/JavaScript в клиентском браузере, поэтому вызовы к микросервисам поступают не из внутренней сети узла Docker, а, например, из вашей сети или даже из Интернета.



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>

Мобильное приложение Xamarin (iOS, Android и Windows/UWP) : это клиентское мобильное приложение поддерживает наиболее распространенные мобильные операционные системы (iOS, Android и Windows/UWP).

В данном случае для доступа к микросервисам используется C#, но на клиентских устройствах: запросы приходят не из внутренней сети хоста Docker, а, например, из вашей сети или даже из Интернета.



Эталонное приложение на основе архитектуры контейнеров и микросервисов.
</p><p>



Настройка среды разработки для eShopOnContainers



Для Visual Studio 2017 и Windows

Это с этот желательно начать.



Для CLI и Windows

Для тех, кто предпочитает CLI в Windows, dotnet CLI, Docker CLI и VS Code для Windows: тыкать .



Для CLI и Mac

Для тех, кто предпочитает CLI на Mac, dotnet CLI, Docker CLI и VS Code для Mac: тыкать .



Оркестраторы: Kubernetes и Service Fabric

Ознакомьтесь с публикациями в Вики , посвященный вопросам конфигурации, в котором представлены рекомендации по развертыванию в Kubernetes и Service Fabric в Azure (однако их можно использовать в любом другом облаке или локально).

Кстати, здесь Вы можете прочитать нашу недавнюю статью о контейнерах в Azure. Теги: #Windows Development #Microsoft Azure #docker #.

NET #Visual Studio #containers #azure #dotnet #core #wave

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.