Недавно мне представилась возможность поработать над своим первым проектом .NET, который познакомил меня с динамической экосистемой .NET. Я был потрясен, когда во время наших встреч услышал следующее заявление: «Мы можем ориентировать наш проект на .NET Standard вместо .NET Framework для поддержки среды выполнения .NET Core». Если вы новичок в мире .NET или просто интересуетесь множеством версий .NET, эта статья специально для вас.

Далекая эпоха

Еще в середине 1990-х годов Microsoft искала конкурентное преимущество перед все более популярной Java. Это привело к созданию .NET Framework — платформы для создания и выполнения приложений.

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

Мечта о кроссплатформенности

Хотя долгосрочной целью была кросс-платформенная совместимость, ранняя версия .NET Framework ограничивалась средой Windows. Однако Microsoft предприняла шаг и открыла исходный код спецификаций для среды выполнения .NET Framework и языка C#.

Обширный ландшафт .NET

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

Это привело к появлению проекта Mono, инициированного Мигелем де Икаса и Натом Фридманом. В 2004 году эти усилия в конечном итоге привели к созданию версии .NET Framework, которая могла бы работать в Linux.

В 2009 году появление MonoTouch и Mono для Android позволило разработчикам создавать мобильные приложения для iOS и Android с использованием Mono. Эти технологии позже превратились в набор продуктов Xamarin.

Одновременно появились другие сторонние реализации .NET, такие как Silverlight и DotGNU. Одновременно Microsoft выпускала последующие версии .NET Framework.

Введите .NET Core

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

Эта сложность усугублялась распространением вариаций платформы .NET.

Чтобы решить эту проблему, в 2016 году Microsoft представила .NET Core — действительно кроссплатформенную среду выполнения, поддерживающую Windows, Linux и macOS. По сравнению с .NET Framework .NET Core был быстрее и более модульным. Мечта о по-настоящему кросс-платформенной .NET наконец-то материализовалась.

.NET Standard: партнерство с .NET Core

Однако .NET Core лишь добавился к и без того обширному набору версий .NET Framework. Такое разнообразие реализаций было ключевой проблемой.

Эта дилемма была решена с появлением .NET Standard — набора спецификаций, применимых к любой среде выполнения .NET. Следовательно, как существующие реализации (такие как .NET Framework, Mono, Xamarin и т. д.), так и новые должны были соответствовать стандарту .NET Standard, чтобы квалифицироваться как допустимые среды выполнения .NET.

Какую пользу мне это принесет?

Предположим, вы сейчас разрабатываете новую библиотеку с использованием .NET. Вы можете создать проект, ориентированный на .NET Standard. Это позволит вашему проекту использовать все API, определенные в спецификации .NET Standard.

Следовательно, пользователи могут использовать вашу библиотеку в среде выполнения .NET Framework, среде выполнения .NET Core или среде выполнения Xamarin при условии, что эти среды выполнения соответствуют стандарту .NET. Таким образом, вы больше не обязаны поддерживать версии исходного кода для конкретной платформы. Разве это не примечательно?

То, что лежит впереди?

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

Рекомендации

  1. Описание версий .NET — .NET, .NET Core, .NET Standard, .NET Framework и другие
  2. История .NET Ричарда Кэмпбелла из .NET Rocks!
  3. .NET Core, .NET Framework и .NET Standard: экскурсия
  4. Что такое .NET? Платформа для разработчиков с открытым исходным кодом.

Понравилось то, что вы прочитали? От быстрого одобрения до оваций, хлопайте в ладоши, чтобы показать, насколько вам понравилась эта история. Подпишитесь, чтобы регулярно получать обновления.