Что такое ".NET Core"?

Недавно в официальном .NET Framework Blog было объявлено, что .NET Core работает с открытым исходным кодом. По иронии судьбы автор упоминает, что то, что .NET Core будет объяснено в следующем посте. Более подробная информация приведена в другом объявлении.

Из представленной диаграммы:

.NET Core diagram

и текст статей, я бы предположил, что .NET Core (помимо очевидных вещей, таких как open-sourced) - это модульная повторная реализация полной .NET. т.е. компоненты инфраструктуры загружаются по мере необходимости, так же как и сейчас загружаются пакеты NuGet. И теперь ASP.NET 5 является одним из модулей, которые уже реализованы. Является ли мое понимание .NET Core правильным? Может, я что-то упустил?


Я нашел недавнюю статью, которую я нашел как короткий, так и очень хороший. Он охватывает .NET Standard,.NET Core и .NET Framework и их отношения. Очень рекомендую.

Ответ 1

Из блога .NET Объявление .NET 2015 Preview: новая эра для .NET:

.NET Core имеет два основных компонента. Он включает небольшую рабочую среду, которая построена из той же базы кода, что и CLR.NET Framework. Среда выполнения .NET Core включает в себя те же GC и JIT (RyuJIT), но не включает такие функции, как домены приложений или безопасность доступа к коду. Среда выполнения поставляется через NuGet, как часть пакета [ASP.NET Core].

.NET Core также включает библиотеки базового класса. Эти библиотеки в основном имеют тот же код, что и библиотеки классов .NET Framework, но были учтены (удаление зависимостей), чтобы позволить нам отправлять меньший набор библиотек. Эти библиотеки отправляются как System. * Пакеты NuGet на NuGet.org.

и

[ASP.NET Core] - первая рабочая нагрузка, которая приняла .NET Core. [ASP.NET Core] работает как на .NET Framework, так и на .NET Core. Ключевое значение [ASP.NET Core] заключается в том, что он может работать на нескольких версиях [.NET Core] на одном компьютере. Веб-сайт A и веб-сайт B могут работать на двух разных версиях .NET Core на одной машине или использовать одну и ту же версию.

Вкратце: во-первых, была Microsoft.NET Framework, которая состоит из среды выполнения, выполняющей код приложения и библиотеки, и почти полностью документировано стандартная библиотека классов.

Время выполнения Common Language Runtime, которое реализует Common Language Инфраструктура, работает с JIT-компилятором для запуска байт-код CIL (ранее MSIL).

Спецификация и реализация Microsoft.NET были, учитывая ее историю и цель, очень ориентированы на Windows и IIS и "жирны". Существуют варианты с меньшим количеством библиотек, пространств имен и типов, но некоторые из них были полезны для разработки в Интернете или на рабочем столе или неприятный для порта с юридической точки зрения.

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

Mono - одна из немногих, если не единственная альтернативная реализация runtime, который работает на разных ОС, помимо Windows,  почти все пространства имен из библиотеки классов Framework с .NET 4.5 и VB и С# компилятор.

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

ASP.NET Core - это новая версия MVC и WebAPI, объединенная с тонкой абстракцией HTTP-сервера, которая работает в среде выполнения .NET Core, но также и в .NET Framework.

Ответ 2

Это подмножество .NET Framework, начатое с версии Compact Framework. Прогресс в Silverlight, Windows Store и Windows Phone. Ориентирован на то, чтобы поддерживать небольшое развертывание, подходящее для быстрой загрузки и устройств с ограниченными возможностями хранения. И проще поднять на не-Windows-платформах, безусловно, причина, по которой это было выбрано как издание с открытым исходным кодом. "Простые" и "дорогие" части CLR и библиотеки базового класса опущены.

В противном случае всегда легко распознать, когда вы нацелитесь на такую ​​версию фреймворка, много недостатков будет отсутствовать. Вы будете использовать отдельный набор эталонных сборок, которые будут показывать только то, что поддерживается средой выполнения. Сохраняется на вашем компьютере в каталоге C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore.


Обновление: после выпуска .NETCore 2.0 я видел некоторые репрезентативные номера, которые дают достойное представление. За последние два года они работали над back-porting framework apis для .NETCore. Первоначально .NETCore 1.0 поддерживал 13 000 apis. В .NETCore 2.0 добавлено 20 000 apis, в результате чего общее количество данных достигло 32 000 и позволило загрузить примерно 70% существующих пакетов Nuget. Есть набор apis, которые слишком сильно привязаны к Windows, чтобы их можно было легко переносить в Linux и MacOS. В дополнение к недавно выпущенному пакету совместимости Windows он добавляет еще 20000 apis.

Ответ 3

Я нашел недавнюю статью, которую я нашел короткой и очень хорошей. Он охватывает .NET Standard,.NET Core и .NET Framework и их взаимосвязь. Очень рекомендую это. К сожалению, нет времени адаптироваться и поставить его здесь.

Оригинальное содержание ответа ниже:


Итак, основываясь на последней официальной записи на эту тему, вот некоторые ключевые моменты, которые я вижу:

.NET Core по сути является форком NET Framework, реализация которого также оптимизирована с учетом факторинга.

Мы считаем, что .NET Core не является специфичным ни для .NET Native, ни для ASP.NET 5 - BCL и среды выполнения являются универсальными и предназначены для модульности. Таким образом, он формирует основу для всех будущих .NET вертикалей.

Так что .NET Native и ASP.NET 5 - это просто "субъекты" тестирования для новой конфигурации фреймворка, отчасти это может быть потому, что они совершенно разные:

enter image description here

видите, они даже нуждаются в отдельном низком уровне, но большая часть BCL все еще распространена:

Мы считаем, что .NET Core не является специфичным ни для .NET Native, ни для ASP.NET 5 - BCL и среды выполнения являются универсальными и предназначены для модульности. Таким образом, он формирует основу для всех будущих .NET вертикалей.

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

Развертывание Nuget:

В отличие от .NET Framework, платформа .NET Core будет поставляться в виде набора пакетов NuGet. Мы остановились на NuGet, потому что именно там уже находится большая часть библиотечной экосистемы.

Отношения с существующими структурами:

Для Visual Studio 2015 наша цель - убедиться, что .NET Core является чистым подмножеством .NET Framework. Другими словами, не было бы никаких пробелов в особенностях. Мы ожидаем, что после выхода Visual Studio 2015 версия .NET Core будет работать быстрее, чем .NET Framework. Это означает, что будут моменты, когда функция будет доступна только на платформах .NET Core.

Резюме:

Платформа .NET Core - это новый стек .NET, оптимизированный для разработки с открытым исходным кодом и быстрой доставки в NuGet. Мы работали с сообществом Mono, чтобы сделать его великолепным на Windows, Linux и Mac, и Microsoft поддержит его на всех трех платформах.

Сохраняли значения, которые .NET Framework привносит в разработку корпоративного класса. Предлагаем дистрибутивы .NET Core, которые представляют собой набор пакетов NuGet, которые мы вместе протестировали и поддерживаем. Visual Studio остается вашей one- остановкой для разработки. Для использования пакетов NuGet, являющихся частью дистрибутива, не требуется подключение к Интернету.

По сути, это можно представить как .NET 4.6 с измененной моделью распространения, которая одновременно находится в процессе становления открытым исходным кодом.

Ответ 4

Текущая документация содержит хорошее объяснение того, что такое .NET Core, области использования и т.д. Следующие характеристики лучше всего определяют .NET Core:

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

Кросс-платформенный: работает в Windows, macOS и Linux; могут быть перенесены в другие ОС. Поддерживаемая операционная система Системы (ОС), процессоры и сценарии приложений со временем будут расти, предоставляемые Microsoft, другими компаниями и отдельными лицами.

Инструменты командной строки. Все сценарии продукта могут выполняться в командной строке.

Совместимый:.NET Core совместим с .NET Framework, Xamarin и Моно, через стандартную библиотеку .NET.

Открытый исходный код:.NET Core платформа является открытым исходным кодом, используя лицензии MIT и Apache 2. Документация лицензируется по CC-BY..NET Core - это .NET Foundation проект.

Поддерживается Microsoft:.NET Core поддерживается Microsoft, для поддержки .NET Core

И вот что такое .NET Core:

.NET runtime, которая предоставляет систему типов, сборку сборок, сборщик мусора, собственный интерфейс и другие основные сервисы.

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

Набор инструментов SDK и компиляторов языка, которые позволяют базовому опыту разработчиков, доступным в .NET Core SDK.

Хост приложения "dotnet", который используется для запуска приложений .NET Core. Он выбирает среду выполнения и размещает среду выполнения, предоставляет политику загрузки сборки и запускает приложение. Тот же хост также используется для запуска инструментов SDK почти таким же образом.

Ответ 5

.NET Core - это новая кросс-платформенная реализация стандартов .NET(ECMA 335), аналогичная Mono, но сделанная самой Microsoft.

См. docs.microsoft.com

Ответ 6

Microsoft признала будущую парадигму открытого веб-сайта и решила открыть .NET для других операционных систем. Ядро .NET - это .NET Framework для Mac и Linux. Это "облегченная".NET Framework, поэтому некоторые функции/библиотеки отсутствуют. В Windows я все равно буду запускать .NET Framework/VS2015..NET Core более дружелюбен к миру с открытым исходным кодом, например nodejs, npm, yeoman, docker и т.д. Вы можете создавать полноценные веб-сайты и RESTful API на Mac или Linux с помощью Visual Studio Code +.NET, что было невозможно раньше. Поэтому, если вы любите Mac или Ubuntu, и вы являетесь разработчиком .NET, тогда идите и настройте его. Для Mono и .NET Core Mono была разработана как .NET Framework для Linux, которая теперь приобретается Microsoft (компания под названием Xamarin) и используется в Mobile Development. В конце концов, Microsoft может объединить/перенести Mono в .NET. Я бы не стал беспокоиться о Моно прямо сейчас.

Ответ 7

Пытался создать новый проект в VS2017 сегодня (недавно обновленный с 2015 года) и заметил новый набор вариантов для типа проекта. Либо они новые, либо прошло много времени с тех пор, как я начал новый проект !! :)

enter image description here

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

Вы должны использовать .NET Core для своего серверного приложения, когда:

You have cross-platform needs.
You are targeting microservices.
You are using Docker containers.
You need high performance and scalable systems.
You need side by side of .NET versions by application.

Вы должны использовать .NET Framework для своего серверного приложения, когда:

Your application currently uses .NET Framework (recommendation is to extend instead of migrating)
You need to use third-party .NET libraries or NuGet packages not available for .NET Core.
You need to use .NET technologies that are not available for .NET Core.
You need to use a platform that doesnt support .NET Core.

Ответ 8

с веб-сайта Microsoft:

.NET Core относится к нескольким технологиям, включая .NET Core, ASP.NET Core и Entity Framework Core.

Эти технологии отличаются от собственных .NET тем, что они работают с использованием среды выполнения CoreCLR (используется в универсальной платформе Windows).

Как вы упомянули в своем вопросе,.NET Core не только с открытым исходным кодом, но и переносимым [работает на MacOS, Windows и Linux]

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

Ответ 9

.NET Core - платформа разработки общего назначения, поддерживаемая Microsoft и сообществом .NET на GitHub. Он кросс-платформенный, поддерживающий Windows, macOS и Linux и может использоваться в сценариях устройств, облачных вычислений и встроенных /IoT.

для более подробной информации: https://docs.microsoft.com/en-us/aspnet/core/

Ответ 10

.NET Core - это универсальная платформа разработки, поддерживаемая Microsoft и сообществом .NET на GitHub. Он кроссплатформенный, поддерживает Windows, macOS и Linux и может использоваться в сценариях устройств, облачных вычислений и встроенных /IoT.

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

Ответ 11

Microsoft только что анонсировала .NET Core v 3.0, который является значительно улучшенной версией .NET Core.

Для получения дополнительной информации посетите эту замечательную статью: https://www.c-sharpcorner.com/article/difference-between-net-framework-and-net-core/ месяц назад

Ответ 12

.Net Core является кроссплатформенной версией .net framework с открытым исходным кодом. Продукты Microsoft, помимо огромных возможностей, всегда были дороги для обычных пользователей, особенно для конечных пользователей продуктов, созданных с помощью технологий .net. Большинство пользователей низкого уровня предпочитают использовать linux в качестве своей ОС, и до .net core они не хотели бы использовать технологии Microsoft, несмотря на их большие возможности. Но после выпуска .Net Core эта проблема полностью решена, и мы можем удовлетворить наших клиентов. без учета их ОС и т.д.