.NET Standard — це формальна множинаСпецифікація .NET API, очікується, що буде доступна у всіх реалізаціях .NET. Мотивацією впровадження .NET Standard було покращення послідовності в екосистемі .NET. ECMA 335 продовжує встановлювати уніфікацію поведінки реалізації .NET, але подібної специфікації для бібліотек базових класів .NET (BCL) для реалізацій .NET бібліотек немає.
.NET Standard дозволяє виконувати такі ключові сценарії:
- Визначте єдиний, незалежний від навантаження набір BCL API для всіх реалізацій .NET, які ви хочете реалізувати.
- Дозволяє розробникам створювати портативні бібліотеки, які можна використовувати в різних реалізаціях .NET через один і той самий набір API.
- Зменшує або навіть усуває умовну компіляцію спільного вихідного коду для аспектів .NET API (лише API ОС).
Різні реалізації .NET орієнтовані на конкретну версію .NET Standard. Кожна реалізація .NET оголошує найвищу версію стандарту .NET, яку вона підтримує, що означає, що вона також підтримує попередні версії. Наприклад, .NET Framework 4.6 реалізує .NET Standard 1.3. Тобто він відкриває всі API, визначені у версіях .NET Standard 1.0–1.3. Аналогічно, .NET Framework 4.6.1 реалізує .NET Standard 1.4, тоді як .NET Core 1.0 реалізує .NET Standard 1.6.
Взаємозв'язок між реалізаціями .NET Standard і .NET такий самий, як і між HTML-специфікаціями та браузерами. Останнє — це реалізація першого.
Отже, .NET Framework, Xamarin, і .NET Core, кожен із керованих фреймворків, реалізує . NET Standard. Оскільки комп'ютерна індустрія продовжує впроваджувати нове апаратне забезпечення та операційні системи, нові з'являться в майбутньому. Фреймворк хостингу .NET. Стандарт дає розробникам додатків знати, що вони можуть покладатися на послідовний набір API.
Кожен. Версії .NET відповідають версії .NET Standard.
API є послідовним, і портування додатків у різні керовані реалізації та надання інструментів буде простішим.
.NET Standard визначається як окремий пакет NuGet, оскільки всі . Мають бути підтримувані реалізації .NET
.NET Standard проти портативних бібліотек
Хіба портативна бібліотека не робить те саме?
Портативні класи використовують поширені API, які підтримуються кількома платформами. Відповідно, чим більше платформ підтримується, тим менше доступних API, і для певної комбінації платформ буває складно точно визначити, які API підтримуються. Для нової платформи існуючий PCL має бути перекомпільований. PCL також вимагає від Microsoft створити новий форк реалізації фреймворку для кожної платформи. Через це. NET Standard ідентифікує API, а не реалізацію, тому немає потреби перекомпілювати застосунок. Будь-який щойно звільнений. Реалізації .NET реалізують необхідні бібліотеки. Додатки не потребують перекомпілювання для роботи на нових апаратних платформах або операційних системах. Теоретично, виключення NotSupportedException може бути виявлене при виклику API, але це має бути рідкістю.
Підтримка реалізації .NET
У наступній таблиці наведено мінімальні версії платформи, які підтримують кожен реліз .NET Standard. Це означає, що пізніші версії перелічених платформ також підтримують відповідні версії .NET Standard. Наприклад, .NET Core 2.2 підтримує .NET Standard 2.0 і раніше версії.
|