2014-11-13 9 views
216

Недавно в официальном .NET Framework Blog было объявлено, что .NET Core is going open source. По иронии судьбы автор упоминает, что , что.NET Core будет объяснено в следующем посте. Более подробная информация приведена в another announce post.Что такое ".NET Core"?

От поставляемой схемы: сама

.NET Core diagram

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


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

+4

Здесь есть новое сообщение в блоге http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx, но его еще трудно понять эту диаграмму. Означает ли это, что WPF и WinForms не могут использовать .NET Core, например? –

+0

@dodgy_coder Я думаю, что они, в конечном счете, это то, что Store Apps и ASP.NET 5 первыми используют новую архитектуру фреймворка. –

+0

@dodgy_coder, его право. На данный момент приложения WPF и WinForms не переносятся в ядро ​​.net. Они могут быть переработаны в универсальные приложения Windows. Смотрите это: https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/ – VivekDev

ответ

88

С .NET блога Announcing .NET 2015 Preview: A New Era for .NET:

.NET Ядро состоит из двух основных компонентов. Он включает небольшую рабочую среду, которая построена из той же базы кода, что и 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, который состоит из выполнения, который выполняет приложения и библиотеки кода, и nearly fully documentedstandard class library.

Время работы Common Language Runtime, которое реализует Common Language Infrastructure, работает с The JIT compiler для запуска CIL (formerly MSIL) bytecode.

Спецификация и реализация Microsoft .NET, учитывая ее историю и цель, очень ориентированы на Windows и IIS и «жирны». Есть variations with fewer libraries, namespaces and types, но некоторые из них были полезны для разработки веб-сайтов или настольных компьютеров или являются troublesome to port from a legal standpoint.

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

Mono является одним из немногих, если не единственная альтернативная реализация runtime, которая работает на различных операционных системах, кроме Windows, almost all namespaces from the Framework Class Library as of .NET 4.5 и VB и C# compiler.

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

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

+4

О, вот как я пропустил это! Это было на самом деле ниже по времени в блоге! Такой позор .. –

+12

Это все довольно новый материал и едва описал, я думаю, вы задали хороший вопрос. :) – CodeCaster

+3

На второй мысли кажется, что это не «следующая запись», так как описание все еще довольно кратки. –

56

Это подмножество .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, он добавляет еще 20 000 писем.

+3

Из сообщения в блоге Я бы не сказал, что это похоже на другую «компактную» версию рамки. Объявленный «.NET Core» - это версия 5.0, которая выше, чем последняя полная структура. Я предполагаю, что они означают, что это что-то другое. –

+5

Я только что описал историю версии .NETCore. Ничего нового под солнцем, это было уже давно. Изменения в 5.0 являются инкрементальными, новый дрожание RyuJIT x64 - единственное, о чем я могу думать прямо сейчас. Только изменение лицензии действительно новое :) –

+3

Я получил ваше мнение. Хотя я все еще думаю, что объявление подмножества подсистемы в качестве следующей эры .NET немного смело. –

34

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

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


Итак, основываясь на последних official entry на эту тему, вот некоторые ключевые моменты, как я их вижу:

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

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

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

enter image description here

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

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

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

развертывания NuGet:

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

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

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

Резюме:

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

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

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

4

из Microsoft's Website:

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

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

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

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

8

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

См docs.microsoft.com

9

Microsoft признала будущую парадигму веб с открытым исходным кодом и решил открыть .NET для другого ядра операционной systems..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 vs. .NET Core Mono был разработан как .NET Framework для Linux, который теперь приобретается Microsoft (компания под названием Xamarin) и используется в Mobile Development. В конце концов, Microsoft может объединить/перенести Mono в .NET. Я бы не стал беспокоиться о Моно прямо сейчас.

1

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

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

11

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

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

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

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

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

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

При поддержке Microsoft: .NET ядро ​​поддерживается Microsoft, за поддержку .NET ядра

А вот что .NET ядро ​​включает в себя:

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

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

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

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

4

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

enter image description here

Наткнулся this docs link и нашел, что это очень полезно, так что совместное использование. Подробные сведения о пулях приведены в статье. Просто размещения пуль здесь:

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

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 doesn’t support .NET Core.