Микрослужбы .NET: Архитектура контейнерных приложений .NET

Book cover

Выпуск 6.0 — обновлен для соответствия ASP.NET Core 6.0

Обновления книги и вклад сообщества см. в журнале изменений.

В этом руководстве приводятся общие сведения о разработке приложений на основе микрослужб и управлении ими с помощью контейнеров. В нем рассматриваются подходы к проектированию и реализации архитектуры с использованием .NET и контейнеров Docker.

Чтобы вам было проще приступить к работе, в руководстве подробно изучается пример контейнерного приложения на основе микрослужб. Образец приложения доступен в репозитории GitHub eShopOnContainers.

Вступление

Предприятия все шире применяют контейнеры с целью сэкономить средства, решить проблемы, возникающие при разработке решений, и оптимизировать процессы разработки и рабочие операции. Корпорация Майкрософт развивает технологии в области контейнеров для Windows и Linux, создавая такие продукты, как Служба Azure Kubernetes и Azure Service Fabric, и сотрудничая с ведущими в отрасли компаниями, такими как Docker, Mesosphere и Kubernetes. С помощью этих решений для работы с контейнерами организации могут создавать и развертывать приложения с той же скоростью и масштабируемостью, что и в облачной среде, на основе любых платформ и средств.

Docker становится стандартом де-факто в области контейнеризации приложений. Это решение поддерживается большинством поставщиков в экосистеме Windows и Linux. (Корпорация Майкрософт — один из основных поставщиков облачных решений, поддерживающих Docker.) В будущем Docker, вероятно, можно будет встретить в любом центре обработки данных как в облаке, так и в локальной среде.

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

Об этом руководстве

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

В этом руководстве приведены базовые принципы разработки и архитектуры, в первую очередь — на уровне среды разработки. Основное внимание уделяется двум технологиям: Docker и .NET. Мы ставили себе целью, чтобы при чтении этого руководства вы могли сосредоточиться на проектировании приложения, не задумываясь об инфраструктуре рабочей среды (облачной или локальной). Принимать решения, связанные с инфраструктурой, вы будете позднее при создании приложений, готовых к использованию в рабочей среде. Таким образом, это руководство ориентировано на среду разработки без учета особенностей инфраструктуры.

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

Version

В новую редакцию руководства включены сведения о версии .NET 6 и множество дополнений, связанных с тем же "поколением" технологий (предоставленных платформой Azure и сторонними поставщиками), к которому относится выпуск .NET 6. По этой причине версия книги также была изменена на 6.0.

Темы, которые выходят за рамки этого руководства

В этом руководстве не рассматриваются такие вопросы, как жизненный цикл приложения, DevOps, конвейеры непрерывной интеграции и непрерывного развертывания, а также совместная работа. Эти темы обсуждаются в дополнительном руководстве Жизненный цикл контейнерного приложения Docker на основе платформы и средств Майкрософт. В настоящем руководстве также не приводятся сведения о реализации инфраструктуры Azure, например информация о конкретных оркестраторах.

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

  • Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Жизненный цикл контейнерного приложения Docker на основе платформы и средств Майкрософт) (электронная книга, доступная для скачивания)
    https://aka.ms/dockerlifecycleebook

Кому необходимо это руководство

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

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

Как пользоваться руководством

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

Вторая часть руководства начинается с раздела Процесс разработки для приложений на основе Docker. Он посвящен разработке и шаблонам микрослужб для реализации приложений с помощью .NET и Docker. Этот раздел будет особенно интересен разработчикам и архитекторам, которым нужны подробные сведения о реализации на уровне кода и шаблона.

Приложение eShopOnContainers — это образец приложения с открытым кодом для .NET и микрослужб, который предназначен для развертывания с помощью контейнеров Docker. Это приложение состоит из нескольких подсистем, включая ряд пользовательских интерфейсов для электронного магазина (веб-приложение MVC, SPA и собственное мобильное приложение). В его состав также входят внутренние микрослужбы и контейнеры для всех необходимых операций на стороне сервера.

Это приложение предназначено для демонстрации архитектурных шаблонов. ЭТОТ ШАБЛОН НЕЛЬЗЯ РАССМАТРИВАТЬ КАК ГОТОВУЮ К ЗАПУСКУ ОСНОВУ для реальных приложений. По сути это приложение постоянно находится в состоянии бета-версии и используется для тестирования новых интересных технологий по мере их появления.

Отправьте нам свой отзыв.

Мы создали это руководство, чтобы помочь вам разобраться в архитектуре контейнерных приложений и микрослужб в .NET. Руководство и связанный с ним пример приложения будут развиваться, поэтому мы будем рады вашим отзывам! Если у вас есть замечания касательно того, как можно улучшить это руководство, направляйте ваши отзывы по адресу https://aka.ms/ebookfeedback.

Благодарности

Соавторы:

Сезар де ла Торре (Cesar de la Torre) , старший руководитель проекта, команда разработки .NET, корпорация Майкрософт.

Билл Вэгнер (Bill Wagner) , старший разработчик содержимого, отдел C+E, корпорация Майкрософт.

Майк Роусос (Mike Rousos), главный специалист по разработке программного обеспечения, команда DevDiv CAT, корпорация Майкрософт

Редакторы:

Майк Поуп (Mike Pope)

Стив Хоуг (Steve Hoag)

Участники и рецензенты:

Джеффри Рихтер (Jeffrey Richter), партнер по разработке программного обеспечения, команда Azure, корпорация Майкрософт

Джимми Богард (Jimmy Bogard), главный архитектор Headspring

Уди Дахан( Udi Dahan), генеральный директор, & особое программное обеспечение

Джимми Нилссон (Jimmy Nilsson), сооснователь и генеральный директор компании Factor10

Гленн Кондрон (Glenn Condron) , старший менеджер программ, команда ASP.NET.

Марк Фасселл (Mark Fussell), ведущий руководитель проектов, команда Azure Service Fabric, корпорация Майкрософт

Диего Вега (Diego Vega), руководитель проектов, команда Entity Framework, корпорация Майкрософт

Барри Дорранс (Barry Dorrans) , старший менеджер программ безопасности.

Роуэн Миллер (Rowan Miller) , старший менеджер программ, Майкрософт.

Анкит Астана (Ankit Asthana), ведущий руководитель проектов, команда .NET, корпорация Майкрософт

Скотт Хантер (Scott Hunter), помощник главного руководителя проектов, команда .NET, корпорация Майкрософт

Ниш Анил (Nish Anil) , старший менеджер программ, команда .NET, корпорация Майкрософт

Дилан Райзенбергер (Dylan Reisenberger), архитектор и руководитель разработки, компания Polly

Стив Смит (Steve Smith) , преподаватель и разработчик программного обеспечения, Ardalis.com

Ян Купер (Ian Cooper), архитектор кода, компания Brighter

Унаи Зоррилла (Unai Zorrilla), архитектор и руководитель разработки, компания Plain Concepts

Эдуард Томас (Eduard Tomas), руководитель разработки, компания Plain Concepts

Рамон Томас (Ramon Tomas), разработчик, компания Plain Concepts

Дэвид Санс (David Sanz), разработчик, компания Plain Concepts

Хавьер Валеро (Javier Valero) , исполнительный директор Grupo Solutio

Пьер Милле (Pierre Millet) , старший консультант, Майкрософт.

Михаэль Фриис (Michael Friis), менеджер по продукции, компания Docker Inc

Чарльз Лоуэлл (Charles Lowell), специалист по разработке программного обеспечения, команда VS CAT, корпорация Майкрософт

Мигель Велосо (Miguel Veloso), инженер по разработке программного обеспечения в Plain Concepts

Самит Гош (Sumit Ghosh) , главный консультант в Neudesic

ИЗДАТЕЛЬ

Подразделение Microsoft Developer Division, команды разработки .NET и Visual Studio

Подразделение корпорации Майкрософт

One Microsoft Way

Redmond, Washington 98052-6399

© Корпорация Майкрософт (Microsoft Corporation), 2022 г.

Все права защищены. Запрещается полное или частичное воспроизведение или передача настоящей книги в любом виде или любыми средствами без письменного разрешения издателя.

Эта книга предоставляется на условиях "как есть" и выражает взгляды и мнения автора. Взгляды, мнения и сведения, содержащиеся в этой книге, включая URL-адреса и другие ссылки на веб-сайты, могут изменяться без уведомления.

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

Microsoft и товарные знаки, перечисленные на странице "Товарные знаки" на сайте https://www.microsoft.com, являются товарными знаками группы компаний Майкрософт.

Mac и macOS являются товарными знаками Apple Inc.

Логотип Docker с изображением кита является зарегистрированным товарным знаком Docker, Inc. Используется с разрешения.

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