Одним из самых неприятных аспектов изучения .NET является навигация по запутанным соглашениям об именовании экосистемы .NET. В этой статье я объясню разницу между всеми этими инструментами .NET.
Несколько недель назад я взял в руки книгу C# & .NET, потому что хотел изучить .NET для бэкенд веб-разработки. В книге для изучения C# используются консольные и WPF-приложения.
После нескольких глав я понял, что эта книга не научит меня создавать веб-приложения. Поэтому я решил поискать, что мне нужно использовать для создания веб-приложений на .NET. Так я открыл для себя огромный (и запутанный) мир .NET.
Что такое .NET?
Чтобы понять разницу между всеми этими инструментами .NET, важно понять, что такое .NET. Microsoft называет его платформой разработки.
По сути, .NET состоит из среды выполнения общего языка (CLR) и коллекции библиотек классов, которые облегчают разработку всевозможных приложений.
CLR выполняет различные задачи в фоновом режиме. Например, он переводит скомпилированный вами код на C# в код, который может понять ваша машина. CLR выполняет и другие важные задачи в фоновом режиме, но это выходит за рамки данной статьи.
Библиотеки классов, входящие в состав .NET, созданы разработчиками Microsoft (а теперь и сообществом разработчиков открытого кода), чтобы сделать разработку приложений проще и быстрее. Опять же, это выходит за рамки данной статьи.
Важно понять, что .NET состоит из CLR и библиотек классов. Это не язык. Разработчики пишут код на C#, F# или Visual Basic, чтобы использовать инструменты и библиотеки .NET.
.NET Framework vs .NET Core vs .NET
Оригинальная реализация .NET была представлена в начале 2000-х годов. С годами ее инструментарий расширялся, но это была платформа для создания и запуска приложений только под Windows.
В 2016 году была выпущена новая реализация .NET. Она избавилась от раздутого кода оригинальной реализации .NET И представила кроссплатформенную реализацию для запуска приложений на Windows, Linux и MacOS.
Чтобы различать две реализации .NET, более новая кроссплатформенная реализация получила название .NET Core, а старая реализация, предназначенная только для Windows, была переименована в .NET Framework.
Разработчики по-прежнему могут использовать .NET Framework для создания приложений только для Windows. Однако .NET Core – это будущее платформы .NET. На самом деле, с момента выпуска .NET Core 5 компания Microsoft больше не использует слово “Core” для разграничения .NET Framework и .NET Core. Теперь .NET Core – это просто .NET.
Кроме того, начиная с .NET 5, Microsoft планирует выпускать новые версии .NET каждый год (на момент написания этого блога в настоящее время это .NET 6). Этот новый .NET унифицировал различные реализации .NET. Но что именно это значит? Давайте сначала немного поговорим о .NET Standard, а позже все станет более понятно.
Стандарт .NET
Когда .NET Core был впервые представлен, часть кода, но не весь, была совместима с .NET Framework. Чтобы решить проблемы совместимости, компания Microsoft внедрила стандарт .NET Standard.
Разработчики, создающие библиотеки классов для .NET, пишут код, ориентированный на конкретные версии .NET Standard, а не на конкретные версии .NET Framework или .NET Core.
Например, написание библиотеки для .NET Standard версии 1.4 гарантирует работу библиотеки в следующих версиях .NET Core, .NET Framework и различных других реализаций .NET:
.NET Standard 2.1 – это последний и окончательный выпуск .NET Standard. Как вы можете видеть ниже, он не поддерживает .NET Framework. Однако разработчики могут выпускать библиотеки, ориентированные на предыдущие версии .NET Standard, если они хотят поддерживать .NET Framework.
Версии .NET 5+ унифицируют различные из перечисленных выше реализаций .NET. Это облегчает разработчикам создание библиотек .NET без необходимости беспокоиться о том, какие версии каких реализаций поддерживаются.
Например, теперь разработчики могут создать библиотеку .NET 6 и знать, что ее можно использовать в различных типах приложений, создаваемых с помощью .NET 6. По сути, .NET 5+ вышла за рамки .NET Standard. Поэтому выпусков .NET Standard больше не будет.
Тем не менее, если разработчики захотят, они могут создавать библиотеки, ориентированные на любую из предыдущих версий .NET Standard, точно так же, как они могут продолжать использовать .NET Framework.
ASP.NET
Это инструмент .NET, используемый для создания веб-приложений.
Существует две версии этого инструмента. Более старая версия, используемая в .NET Framework, называется ASP.NET. Более новая версия, представленная в .NET Core, называется ASP.NET Core.
Хотя .NET Core теперь просто .NET, ASP.NET Core все еще использует слово “Core”, чтобы отличить его от старой версии ASP.NET.
Держите меня честным!
Если вы видите, что что-то не так или звучит запутанно/неправильно, пожалуйста, дайте мне знать в комментариях.