Благодаря модульной природе и простоте .NET 6 идеально подходит для использования с контейнерами. Когда вы развертываете и запускаете контейнер, его образ в .NET 6 намного меньше, чем в .NET Framework. Напротив, чтобы использовать .NET Framework для контейнера, ваш образ должен основываться на образе Windows Server Core, который намного больше, чем образы Windows Nano Server или Linux, которые вы используете для .NET 6.
Кроме того, .NET 6 является кроссплатформенным решением, поэтому вы можете разворачивать серверные приложения с использованием образов контейнеров Linux и Windows. Однако при использовании традиционной .NET Framework можно развернуть только образ, основанный на Windows Server Core.
Ниже подробно описаны преимущества .NET 6.
Разработка и развертывание на различных платформах
Очевидно, если ваша цель — получить приложение (веб-приложение или службу), которое может работать на нескольких платформах, поддерживаемых Docker (Linux и Windows), правильным выбором будет .NET 6, так как .NET Framework поддерживает только Windows.
.NET 6 также поддерживает macOS в качестве платформы разработки. Тем не менее при развертывании контейнеров на узле Docker этот узел должен (в настоящее время) базироваться на Windows или Linux. Например, в среде разработки можно использовать виртуальную машину с Linux, запущенную на компьютере с Mac.
Visual Studio предоставляет интегрированную среду разработки (IDE) для Windows и поддерживает разработку с использованием Docker.
Visual Studio для Mac — это интегрированная среда разработки, которая является эволюцией Xamarin Studio, выполняется в macOS и поддерживает разработку приложений на основе Docker. Этот инструмент должен быть предпочтительным вариантом для разработчиков, которые работают на компьютерах с Mac и хотят использовать мощную интегрированную среду разработки.
Редактор Visual Studio Code можно также использовать в macOS, Linux и Windows. Visual Studio Code полностью поддерживает .NET 6, включая технологию IntelliSense и возможность отладки. Так как VS Code является упрощенным редактором, для разработки контейнерных приложений на компьютере его можно использовать в сочетании с Docker CLI и .NET CLI. Для разработки с использованием .NET 6 также подходит большинство сторонних редакторов, включая Sublime, Emacs, vi и проект с открытым кодом OmniSharp, который также поддерживает технологию IntelliSense.
Наряду с интегрированными средами разработки и редакторами для всех поддерживаемых платформ вы можете использовать .NET CLI.
Использование контейнеров для новых ("с нуля") проектов
Контейнеры обычно используются в сочетании с архитектурой микрослужб, хотя их также можно использовать для упаковки веб-приложений или служб, созданных на базе любого архитектурного шаблона. .NET Framework можно использовать для контейнеров Windows, но модульная природа и простота .NET 6 делают это решение оптимальным для архитектур с использованием контейнеров и микрослужб. При создании и развертывании контейнера размер его образа гораздо меньше в .NET 6, чем в .NET Framework.
Создание и развертывание микрослужб в контейнерах
Традиционный .NET Framework можно использовать для создания приложений на основе микрослужб (без контейнеров) с помощью простых процессов. Платформа .NET Framework уже установлена и совместно используется процессами, поэтому в этом случае процессы небольшие по размеру и быстро выполняются. Но при использовании контейнеров образы для традиционного .NET Framework основаны на Windows Server Core, что делает их слишком большими для подхода "микрослужбы в контейнерах". При этом командам требуются возможности сделать .NET Framework удобнее для пользователей. Недавно размер образов контейнеров Windows Server Core сократился до >40 % меньше.
С другой стороны, благодаря своей простоте .NET 6 является лучшим выбором, если вы используете ориентированную на микрослужбы систему на основе контейнеров. Кроме того, связанные с NET Core образы, как для Linux, так и для Windows Nano Server, являются компактными и небольшими по размеру, что обеспечивает их быстрый запуск.
Термин "микрослужба" означает, что она должна быть настолько маленькой, насколько это возможно, чтобы обеспечивать быстрое развертывание, занимать мало места в памяти (см. статью о проблемно-ориентированном проектировании), решать небольшую часть задачи и быть способной к быстрому запуску и остановке. Для выполнения этих требований необходимо использовать небольшие и быстро создаваемые образ контейнеров, например образ контейнера .NET 6.
Архитектура микрослужб также позволяет использовать сочетание технологий за пределами службы. Этот подход обеспечивает постепенный перенос в .NET 6 новых микрослужб, которые работают вместе с другими микрослужбами или службами, разработанными с помощью Node.js, Python, Java, GoLang или других технологий.
Развертывание с высокой плотностью в масштабируемых системах
Если для вашей системы, основанной на контейнерах, требуется максимально возможная плотность, детализация и производительность, то мы рекомендуем использовать .NET и ASP.NET Core. ASP.NET Core в 10 раз быстрее, чем ASP.NET в традиционном решении .NET Framework, и поддерживает другие популярные отраслевые технологии микрослужб, такие как сервлеты Java, Go и Node.js.
Это особенно важно для архитектур микрослужб, где могут выполняться сотни микрослужб (контейнеров). Образы ASP.NET Core (основанные на среде выполнения .NET) на Windows Nano или Linux позволяют запустить систему с гораздо меньшим количеством серверов или виртуальных машин и, в конечном счете, снизить затраты на инфраструктуру и размещение.