.NET и .NET Framework для серверных приложений

Для создания серверных приложений доступны две поддерживаемые реализации .NET.

Реализация Включенные версии
.NET .NET Core 1.0–3.1, .NET 5 и более поздние версии .NET.
.NET Framework .NET Framework 1.0–4.8

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

Используйте среду .NET для создания серверных приложений в следующих случаях:

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

Используйте среду .NET Framework для создания серверных приложений в следующих случаях:

  • приложение в настоящий момент использует среду .NET Framework (мы рекомендуем расширять приложения, а не переносить их в другую среду);
  • приложение использует сторонние библиотеки или пакеты NuGet, недоступные для .NET;
  • приложение использует технологии .NET Framework, недоступные для .NET;
  • приложение использует платформу, не поддерживающую .NET.

Случаи использования .NET

В следующих разделах более подробно описаны ранее перечисленные причины для выбора платформы .NET вместо .NET Framework.

Создание кроссплатформенных приложений

Если веб-приложение или служба будут работать на нескольких платформах (Windows, Linux и macOS), используйте платформу .NET.

В среде .NET также можно использовать упомянутые ранее операционные системы в качестве рабочих станций для разработки. Visual Studio предоставляет интегрированную среду разработки (IDE) для Windows и macOS. Можно также использовать редактор Visual Studio Code, который выполняется на платформах macOS, Linux и Windows. Visual Studio Code поддерживает .NET, включая технологию IntelliSense и отладку. С .NET работает большинство сторонних редакторов, например Sublime, Emacs и VI. Эти сторонние редакторы получают доступ к функциям в редакторе IntelliSense с помощью Omnisharp. Вы также можете использовать вместо редакторов кода непосредственно .NET CLI, доступный для всех поддерживаемых платформ.

Архитектура микрослужб

Архитектура микрослужб позволяет использовать сочетание технологий за пределами службы. Такое сочетание технологий позволяет постепенно добавлять новые микрослужбы в .NET для параллельного использования с другими службами и микрослужбами. Например, можно комбинировать микрослужбы или службы, созданные на основе .NET Framework, Java, Ruby или других монолитные технологий.

Пользователям на выбор предоставляется множество инфраструктурных платформ. Для больших и сложных систем микрослужб можно использовать Azure Service Fabric. Служба приложений Azure лучше всего подойдет для микрослужб без сохранения состояния. Альтернативы микрослужб на основе Docker поддерживают любые подходы, как описано в разделе Контейнеры. Все эти платформы поддерживают .NET и идеально подходят для размещения микрослужб.

Дополнительные сведения об архитектуре микрослужб см. в статье Микрослужбы .NET: архитектура контейнерных приложений .NET.

Контейнеры

Контейнеры обычно используются вместе с архитектурой микрослужб. Их также можно использовать, чтобы поместить в контейнер веб-приложения или службы на базе любого архитектурного шаблона. Среду .NET Framework можно использовать для контейнеров Windows, но упрощенные возможности и модульный принцип среды .NET делают ее оптимальной для контейнеров. При создании и развертывании контейнера размер его образа гораздо меньше в среде .NET. Так как эта среда поддерживает разные платформы, серверные приложения можно развертывать, например, в контейнеры Docker в Linux.

Затем эти контейнеры можно размещать в собственной инфраструктуре Linux или Windows или в облачной службе,такой как Служба Azure Kubernetes. Служба Azure Kubernetes может выполнять оркестрацию и масштабировать приложения на основе контейнеров, а также управлять ими в облаке.

Масштабируемые системы с высокой производительностью

Если для вашей системы требуется максимальная производительность и возможности масштабирования, мы рекомендуем использовать среды .NET и ASP.NET Core. Высокопроизводительная серверная среда выполнения для Windows Server и Linux делает ASP.NET Core самой эффективной веб-платформой в тестах TechEmpower.

Производительность и масштабируемость особенно важны для архитектур микрослужб, где могут выполняться сотни микрослужб. Среда ASP.NET Core позволяет уменьшить количество серверов и виртуальных машин, необходимых для системы. В конечном счете это способствует сокращению расходов на архитектуру и размещение.

Создание приложений с поддержкой разных версий .NET

Если требуется установить приложения с зависимостями в разных версиях платформ .NET, рекомендуется использовать среду .NET. Такая реализация .NET поддерживает параллельную установку разных версий среды выполнения .NET на одном компьютере. За счет простой параллельной установки на одном сервере можно размещать несколько служб, каждая из которых устанавливается в собственной версии .NET. Это позволяет устранить риски и сократить расходы на обновление приложений и ИТ-операции.

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

Случаи использования .NET Framework

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

Готовые приложения .NET Framework

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

Сторонние библиотеки .NET и пакеты NuGet, недоступные для .NET

.NET Standard позволяет совместно использовать код во всех реализациях .NET, включая .NET Core/5+. В .NET Standard 2.0 этот режим совместимости позволяет проектам .NET Standard и .NET ссылаться на библиотеки .NET Framework. Дополнительные сведения см. в статье Поддержка библиотек платформы .NET Framework.

Платформу .NET Framework следует применять только в случаях, где библиотеки или пакеты NuGet используют технологии, которые недоступны в .NET Standard и .NET.

Технологии .NET Framework, недоступные в .NET

Некоторые технологии .NET Framework недоступны в среде .NET. Ниже приведен список самых распространенных технологий, которые недоступны в .NET:

  • Приложения веб-форм ASP.NET. Веб-формы ASP.NET доступны только в среде .NET Framework. ASP.NET Core не может использоваться для веб-форм ASP.NET.

  • Приложения веб-страниц ASP.NET. Веб-страницы ASP.NET не добавлены в среду ASP.NET Core.

  • Реализация служб WCF. Хотя в среду .NET и добавлена библиотека клиента WCF, позволяющая использовать службы WCF, сервер WCF можно реализовать только в среде .NET Framework.

  • Службы, связанные с рабочими процессами. Службы Windows Workflow Foundation (WF), Workflow Services (WCF и WF в одной службе) и WCF Data Services (известные как "Службы данных ADO.NET") доступны только в среде .NET Framework.

  • Поддержка языков. Сейчас в среде .NET поддерживаются Visual Basic и F#, но не для всех типов проектов. Список поддерживаемых шаблонов проектов см. в статье о параметрах шаблона для dotnet new.

Дополнительные сведения см. в статье Технологии .NET Framework, недоступные в .NET Core и .NET 5 и более поздних версий.

Платформа не поддерживает .NET

Некоторые платформы Майкрософт и платформы сторонних поставщиков не поддерживают среду .NET. Некоторые службы Azure предоставляют пакеты SDK, недоступные в среде .NET. В таких случаях в качестве альтернативы клиентскому пакету SDK можно использовать REST API.

См. также