.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. Стандарт сообщает разработчикам приложений, что они могут полагаться на единый набор API.
Каждому. Версии .NET соответствуют стандартной версии .NET.
API работает последовательно, и портирование приложений в разные управляемые реализации и предоставление инструментов будет проще.
.NET Standard определяется как отдельный пакет NuGet, поскольку все . Должны поддерживаться реализации .NET
.NET Standard против портативных библиотек
Разве портативная библиотека не делает то же самое?
Портативные классы используют общие API, поддерживаемые несколькими платформами. В результате чем больше платформ поддерживается, тем меньше доступных API, и для конкретной комбинации платформ бывает сложно точно определить, какие API поддерживаются. Для новой платформы существующая PCL должна быть перекомпилирована. PCL также требует от Microsoft создать новый форк реализации фреймворка для каждой платформы. Из-за этого. NET Standard определяет API, а не реализацию, поэтому нет необходимости перекомпилировать приложение. Любой недавно освобождённый. Реализации .NET реализуют необходимые библиотеки. Приложения не требуют перекомпилирования для работы на новых аппаратных платформах или операционных системах. Теоретически исключение NotSupportedException может быть обнаружено при вызове API, но это должно быть редко.
Поддержка реализации .NET
В следующей таблице приведены минимальные версии платформ, поддерживающие каждый релиз .NET Standard. Это означает, что поздние версии перечисленных платформ также поддерживают соответствующие версии стандарта .NET. Например, .NET Core 2.2 поддерживает .NET Standard 2.0 и более ранние версии.
|