Чем отличается net core от net framework
Перейти к содержимому

Чем отличается net core от net framework

  • автор:

В чем разница между NetFramework и NetCore

1

При попытке подключить библиотеку к uwp приложению получил вот такое предупреждение: «Проект предназначен для «.NetCore», в то время как ссылка файла предназначена для «.NetFramework»» Вроде, и то платформа, и то платформа, так в чем разница, зачем их две и возможна ли связь между ними (подключать одно к другому и наоборот)?

Отслеживать
задан 18 апр 2016 в 17:17
Sanych Hoilo Sanych Hoilo
1,618 1 1 золотой знак 15 15 серебряных знаков 25 25 бронзовых знаков

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

18 ноя 2016 в 7:56
18 ноя 2016 в 7:59
@Grundy почему не пишете это всё в виде ответа?
18 ноя 2016 в 8:38
@Anatol, Павел уже дал хороший ответ 🙂
18 ноя 2016 в 8:41
@Grundy ну Вы раньше написали и тоже неплохо. Это был не вопрос, а побуждение)
18 ноя 2016 в 8:43

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

.NET Framework — это старая платформа, работающая только под Windows.

.NET Core — это новая платформа, которая может работать как под Windows, так и под Linux. Но она еще довольно «сырая» — множество инструментов еще не перенесены на нее.

Подключить одно к другому не получится, потому что у них разные системные библиотеки (а также разные системы сборки если вы используете Visual Studio версии 2015 или ниже).

Кроме них, есть еще платформы:

Mono — может работать как под Windows, так и под Linux. Пытается быть совместимой с .NET Framework.

UWP — платформа для написания Windows-приложений, использующих WinRT. Не знаю про совместимость с .NET Framework.

Silverlight — старая платформа (застряла примерно на уровне .NET 4.5), предназначенная для работы в браузере (вроде java-апплетов). Не так давно была серьезно ранена гуглом, который перестал поддерживать NPAPI в своем Хроме. Не совместима с .NET Framework.

.NET Compart Framework — несовместимая вариация .NET Framework для Windows CE. Сейчас находится на той же свалке, куда был выброшен Windows CE.

Unity — форк Mono, платформа для написания графических (в том числе 3D) приложений. Есть вариант встраивания в браузер (не работает в Хроме из-за отказа от NPAPI в Хроме работает благодаря технологии Web Assembly).

PCL (Portable Class Library) — общее подмножество разных версий .NET Framework, UWP и Silverlight. Совместима с ними в одну сторону (PCL-библиотеку можно использовать на перечисленных платформах).

.NET Standard — новая реинкарнация PCL. От PCL отличается подходом к версионированию: если для PCL разработчик библиотеки выбирает список поддерживаемых платформ, то для .NET Standard выбирается версия стандарта (а для платформ известно какие версии ими поддерживаются).

.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, доступный для всех поддерживаемых платформ.

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

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

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

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

Контейнеры

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

Контейнеры Docker можно размещать в собственной инфраструктуре 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 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 Web Forms приложения: ASP.NET Web Forms доступны только в платформа .NET Framework. ASP.NET Core нельзя использовать для ASP.NET Web Forms.
  • веб-страницы ASP.NET приложения: веб-страницы ASP.NET не включаются в ASP.NET Core.
  • Службы, связанные с рабочими процессами: Windows Workflow Foundation (WF), службы рабочих процессов (WCF + WF в одной службе) и WCF Data Services (ранее известные как «службы ADO.NET Data Services») доступны только в платформа .NET Framework.
  • Поддержка языков. Visual Basic и F# в настоящее время поддерживаются в .NET, но не для всех типов проектов. Список поддерживаемых шаблонов проектов см. в статье о параметрах шаблона для dotnet new.

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

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

См. также

  • Выбор между ASP.NET и ASP.NET Core
  • ASP.NET Core с целевой платформой .NET Framework
  • Целевые платформы
  • Общие сведения о платформе .NET
  • Перенос кода в .NET 5 из .NET Framework
  • Общие сведения о .NET и Docker
  • Реализации .NET
  • Микрослужбы .NET. Архитектура контейнерных приложений .NET

Совместная работа с нами на GitHub

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

Немного про .NET Framework и .NET Core [плюс полезные ссылки]

Привет, Хабр! Версия ASP.NET Core основана на проектной модели .NET Core, которая поддерживает создание кросс-платформенных приложений в ОС Windows, Mac и Linux. При реализации проекта .NET Core вы также можете выбрать вариант .NET для своего приложения: .NET Framework (CLR), .NET Core (CoreCLR) или Mono. Какой вариант .NET подойдет вам? Кратко рассмотрим плюсы и минусы каждого и поделимся классными курсами по платформам.

.NET Framework

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

.NET Framework работает только на Windows. Кроме того, это монолитный компонент с множеством API и длительным циклом выпуска. Хотя код .NET Framework доступен для просмотра, эта платформа не является проектом с открытым исходным кодом.

Полезные ссылки по .NET Framework

Курсы:

Advanced .NET Threading

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

A Guide to Object-Oriented Practices

Если вы разработчик, который начал изучать объектно-ориентированные методы, и вам нужно больше примеров их применения, этот курс для вас! Исследуйте encapsulation, inheritance, interfaces и многое другое.

Developing Intelligent Bots from Zero to Hero

В этом курсе вы узнаете, как создавать, разрабатывать, отлаживать и развертывать ботов, используя Bot Builder SDK (.NET), Azure Bot Service и Azure Cognitive Services.

Официальная документация по .NET Framework:
  • Руководство по .NET Framework
  • Документация по ASP.NET (Подборка)
  • Справочник по API .NET Framework

.NET Core

.NET Core — это модульная реализация библиотеки и среды выполнения, в состав которой входит поднабор .NET Framework. .NET Core работает на Windows, Mac и Linux. Версия состоит из коллекции библиотек СoreFX и небольшой оптимизированной среды выполнения CoreCLR. .NET Core — проект с открытым исходным кодом, поэтому вы можете наблюдать за его развитием и поддерживать его на GitHub.

Среда выполнения CoreCLR (Microsoft.CoreCLR) и библиотеки CoreFX распространяются через NuGet. Поскольку версия .NET Core представляет собой компонентизированный набор библиотек, вы можете ограничить количество API для своего приложения и использовать только нужные элементы. Кроме того, можно выполнять приложения на базе .NET Core в гораздо более ограниченных средах (например, в ASP.NET Core на Nano Server).

Чтобы улучшить компонентизацию, в .NET Core был обновлен факторинг API. Иными словами, существующие библиотеки для .NET Framework придется перекомпилировать для выполнения в .NET Core. Экосистема .NET Core является относительно новой, но она быстро развивается благодаря поддержке популярных пакетов .NET (JSON.NET, AutoFac, xUnit.net и многие другие).

Полезные ссылки по .NET Core

Курсы:

Если вы хотите больше узнать об ASP.NET Core: где его получить, как его установить, как его использовать и т. д., не пропустите этот курс, состоящий из трех частей.

ASP.NET Core — Beginner

ASP.NET Core — Intermediate

ASP.NET Core — Advanced

Общие сведения о NET

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

Чтобы узнать , как скачать .NET и начать написание первого приложения, см . статью «Начало работы».

Платформа .NET разработана для обеспечения производительности, производительности, безопасности и надежности. Она обеспечивает автоматическое управление памятью с помощью сборщика мусора (GC). Это типобезопасный и безопасный для памяти, из-за использования GC и строгих компиляторов языка. Он предлагает параллелизм через await async /и Task примитивы. Он включает в себя большой набор библиотек, имеющих широкие функциональные возможности и оптимизированный для производительности в нескольких операционных системах и архитектурах микросхем.

.NET имеет следующие точки проектирования:

  • Производительность — это полный стек со средой выполнения, библиотеками, языком и инструментами, которые способствуют пользовательскому интерфейсу разработчика.
  • Сейф код является основной вычислительной моделью, а небезопасный код обеспечивает дополнительную оптимизацию вручную.
  • Статический и динамический код поддерживаются, что позволяет использовать широкий набор различных сценариев.
  • Встроенное взаимодействие с кодом и встроенные аппаратные компоненты — это низкая стоимость и высокая точность (доступ к необработанным API и инструкциям).
  • Код переносим на разных платформах (ос и архитектуре микросхем), а целевая платформа обеспечивает специализацию и оптимизацию.
  • Адаптация между доменами программирования (облако, клиент, игры) включена с помощью специализированных реализаций модели программирования общего назначения.
  • Отраслевые стандарты , такие как OpenTelemetry и gRPC, являются поддержку по сравнению с решениями bespoke.

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

Компоненты

.NET включает следующие компоненты:

  • Среда выполнения — выполняет код приложения.
  • Библиотеки — предоставляют служебные функции, такие как синтаксический анализ JSON.
  • Компилятор — компилирует исходный код C# (и других языков) в исполняемый код (среда выполнения).
  • Пакет SDK и другие средства — включение создания и мониторинга приложений с помощью современных рабочих процессов.
  • Стеки приложений, такие как ASP.NET Core и Windows Forms, которые позволяют создавать приложения.

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

C# является объектно-ориентированным, и среда выполнения поддерживает ориентацию объектов. Для C# требуется сборка мусора и среда выполнения предоставляет сборщик мусора трассировки. Библиотеки (а также стеки приложений) формируют эти возможности в понятиях и объектных моделях, которые позволяют разработчикам эффективно писать алгоритмы в интуитивно понятных рабочих процессах.

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

Поддержка одновременного выполнения нескольких задач является базовой для практически всех рабочих нагрузок. Это могут быть клиентские приложения, выполняющие фоновую обработку, сохраняя скорость реагирования пользовательского интерфейса, службы, обрабатывающие много тысяч одновременных запросов, устройства, реагирующие на множество одновременных стимулов, или высокопроизводительные компьютеры, параллелизирующие обработку операций с интенсивным вычислением. Асинхронная поддержка программирования — это первоклассная функция языка программирования C#, которая предоставляет async и await ключевое слово, которые упрощают запись и создание асинхронных операций, но по-прежнему пользуются всеми преимуществами всех конструкций потока управления, которые могут предложить язык.

Система типов предлагает значительную широту, питание несколько равно безопасности, описательности, динамизма и собственного взаимодействия. В первую очередь система типов позволяет объектно-ориентированной модели программирования. Он включает типы, наследование (один базовый класс), интерфейсы (включая реализации методов по умолчанию) и виртуальный метод для обеспечения разумного поведения для всех уровней типов, которые позволяет ориентация объекта. Универсальные типы — это универсальная функция, которая позволяет специализировать классы к одному или нескольким типам.

Среда выполнения .NET обеспечивает автоматическое управление памятью с помощью сборщика мусора. Для любого языка модель управления памятью, скорее всего, является самой определяющей характеристикой. Это верно для языков .NET. .NET имеет самостоятельную настройку, трассировку GC. Она направлена на доставку операций «от руки» в общем случае при предложении вариантов конфигурации для более экстремальных рабочих нагрузок. Текущий GC является результатом многих лет инвестиций и обучения из множества рабочих нагрузок.

Типы значений и блоки памяти, выделенные стека, обеспечивают более прямой, низкоуровневый контроль над данными и взаимодействием с собственной платформой, в отличие от . Управляемые GC типы NET. Большинство примитивных типов в .NET, таких как целые типы, являются типами значений, а пользователи могут определять собственные типы с аналогичной семантикой. Типы значений полностью поддерживаются с помощью . Система универсальных шаблонов NET означает, что универсальные типы, например List , могут предоставлять неструктурированные, незакладные представления памяти коллекций типов значений.

Рефлексия ion — это парадигма «программы как данные», которая позволяет одной части программы динамически запрашивать и вызывать другую с точки зрения сборок, типов и членов. Это особенно полезно для поздних моделей программирования и инструментов.

Исключения — это основная модель обработки ошибок в .NET. Исключения имеют преимущество, что сведения об ошибке не должны быть представлены в сигнатурах метода или обрабатываются каждым методом. Правильная обработка исключений необходима для надежности приложений. Чтобы предотвратить сбой приложения, вы можете намеренно обрабатывать ожидаемые исключения в коде. Аварийное приложение является более надежным и диагностическим, чем приложение с неопределенным поведением.

Стеки приложений, такие как ASP.NET Core и Windows Forms, создаются и используются низкоуровневые библиотеки, язык и среда выполнения. Стеки приложений определяют способ создания приложений и их жизненного цикла выполнения.

Пакет SDK и другие средства позволяют использовать современный интерфейс разработчика как на рабочем столе разработчика, так и для непрерывной интеграции (CI). Современный интерфейс разработчика включает возможность создавать, анализировать и тестировать код. Проекты .NET часто можно создавать с помощью одной dotnet build команды, которая управляет восстановлением пакетов NuGet и сборкой зависимостей.

NuGet — это диспетчер пакетов для .NET. Он содержит сотни тысяч пакетов, реализующих функциональные возможности для многих сценариев. Большинство приложений используют пакеты NuGet для некоторых функций. Коллекция NuGet поддерживается корпорацией Майкрософт.

Бесплатный и с открытым исходным кодом

.NET является бесплатным, открытый код и является проектом .NET Foundation. .NET поддерживается корпорацией Майкрософт и сообществом на GitHub в нескольких репозиториях.

Поддержка

.NET поддерживается несколькими организациями , которые работают для обеспечения того, чтобы .NET могли работать в нескольких операционных системах и поддерживать актуальность. Его можно использовать в архитектурах Arm64, x64 и x86.

Новые версии .NET выпускаются ежегодно в ноябре на наши выпуски и политики поддержки. Он обновляется ежемесячно во вторник (второй вторник), как правило, в 10 УТРА Тихоокеанское время.

Экосистема .NET

Существует несколько вариантов .NET, каждый из которых поддерживает другой тип приложения. Причиной нескольких вариантов является часть историческая, техническая часть.

  • платформа .NET Framework — исходная .NET. Он предоставляет доступ к широким возможностям Windows и Windows Server. Она активно поддерживается в обслуживании.
  • Mono — исходное сообщество и открытый код .NET. Кроссплатформенная реализация платформа .NET Framework. Активно поддерживается для Android, iOS и WebAssembly.
  • .NET (Core) — современная .NET. Кроссплатформенная и открытый код реализация .NET, в то время как она остается значительно совместимой с платформа .NET Framework. Активно поддерживается для Linux, macOS и Windows.

Следующие шаги

  • Выбор учебника по .NET
  • Попробовать .NET в браузере
  • Обзор языка C#
  • Обзор языка F#

Совместная работа с нами на GitHub

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *