Анонс .NET Standard 2.0


Не так давно в мережі з'явився пост Immo Landwerth, який розповідає про .NET Standard 2.0
Якщо коротко, то це уніфікація .NET для наступних гілок .NET Framework .NET Core і Xamarin. Висловлюючись зрозумілими словами це набір API, який буде реалізований всіма платформами.

І відразу значна зміна: .NET Standard замінить бібліотеки PCL. Хоча для розробників суть і залишиться колишня, реалізація буде інший. Їздити машина буде, як і раніше, але зміниться назва і вміст під капотом (мабуть, в кращу сторону).

В .NET Standard будуть API, які обов'язково необхідно реалізувати всім платформ, і будуть API, реалізація яких не обов'язкова – опціональні. Не обов'язкові будуть доступні у вигляді окремих пакетів NuGet.

Що не може бути реалізовано усіма платформами можна розділити на дві групи: API специфічні для кожного runtime і API специфічні для кожної OS. Як можна вступити з нереалізованими API:

  • Зробити API недоступним
  • Зробити API доступним, але викидати PlatformNotSupportedException на тих платформах, на яких немає реалізації
  • Імітувати API (як це робить Mono, частково імітуючи реєстру у вигляді .ini файлів)
.NET Standard використовує всі ці варіанти та їх комбінації, в залежності від ситуації. Технології, які будуть доступні тільки на певних платформах, будуть реалізовані у вигляді пакетів NuGet. Якщо неможливо зробити автономний пакет, то виникають варіанти: викинути виключення або імітувати API.

Є безліч версій .NET Standard, які сумісні з різними платформами:



Як ви можете помітити, версія фреймворку 4.6.1 зустрічається двічі (це не помилка). Саме з нею буде сумісний .NET Standard 2.0, а також наступні версії Xamarin і .NET Core. Стався відкат змін, які були зроблені у версії 1.5 і 1.6. Чому це було зроблено? Для підтримки зворотної сумісності. Більш нові версії .NET Standard повинні містити в собі попередні, плюс нові можливості. В ході аналізу NuGet.org було знайдено лише 6 пакетів з цільовою платформою .NET Standard 1.5 і вище, автором яких є не Microsoft, тому вирішили взяти за основу 4.6.1, а авторам цих 6-ти пакетів запропонувати їх оновити.

.NET Standard хоч і замінює PCL, але все ще підтримує роботу з ними. З бібліотеки .NET Standard ви зможете робити посилання на іншу бібліотеку .NET Standard або ж на бібліотеку PCL



Крім того, є можливість зробити посилання на звичайну бібліотеку .NET за допомогою прокладки сумісності (compatibility shim).



Але не поспішайте особливо радіти. Працювати буде тільки у випадку, якщо в цій .NET бібліотеки усі API підтримуються .NET Standard. Зате так буде набагато простіше підключити посилання на вже існуючі бібліотеки.

На рисунку показані основні API .NET Standard 2.0



Можна побачити які можливості, швидше за все, з'являться у .NET Core (зараз у цієї гілки найменше можливостей). Що стосується Xamarin, то багато хто з цих API вже були включені в стабільний реліз Cycle 8/Mono 4.6.0

Якщо хочете подивитися на набір специфічних API, то можете поглянути на репозиторій .NET Standard на GitHub.

Детальніше читайте в оригінальній статті: Introducing .NET Standard
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.