11 октября 2016 в 11:01

Анонс .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
Алексей Соммер @asommer
карма
49,2
рейтинг 25,6
разработка универсальных приложений Windows
Похожие публикации
Самое читаемое Разработка

Комментарии (24)

  • +4
    мне ту, что слева!
    • +4
      Мне ту что справа, не люблю кости.
      • +6
        Все норм, но главное чтобы функциональна была, а не как бесполезное бревно.
        • 0
          Причем это же требование подходит и к разработке! ( ͡° ͜ʖ ͡°)
    • +15
      Вы не заметили главного… Какой бы .NET Вы бы не выбрали, Frontend одинаково страшен
      • +1
        Ну как же, мы же видим душу, как они и хотят
  • +1
    начать, чтоль,.нет изучать?.. :)
  • +22
    Голосую за .net core, та что в красном. Статью не читал, вероятно она полезная.
  • 0
    Core еще толком изучить не успел, а грядут новые изменения.
  • +7
    .net завлекает как может
  • +2
    «на лицо ужасные, добрые внутри...»
  • –2
    Ассемблер
    image

    • +1
      Нет ни мышц, ни жил — без своей целевой платформы бесполезен. Наверняка давно мертвый. Это бейсик.
      • 0
        С мышцами будет макроассемблер с библиотеками.
    • 0
      thank mr skeltal
  • +5
    Вот так хабр превратился в NSFW ресурс
    • +1
      Так давно уже. Горжусь своим скромным вкаладом: предложил использовать базу моделей Плейбоя для туториалов по статистике и всякому таком
  • +8
    А мне средненькая нравится.
  • –5
    Посмотрел я на это и тихо возрадовался, что в свое время остановился на java
    • +6
      фотка есть?
  • –8
    Правильно ли я понял, что только спустя 14 лет в MS схватились за голову и поняли всю суть Жавы? Она ж и есть «ядро»+«стандартные либы». Часы, смарт, ПК — везде работает простая VM. А уже в зависимости от устройства, к программе цепляют нужные либы и всё работает.
    Ох, как же непросто будет теперь MS перелопачивать свой 14-летний навоз! А главное — одна из важнейших сфер, GUI, до сих пор не имеет портируемой версии. Без неё все их потуги — пшик.
    • 0
      Кому нужен кросс-платформенный GUI, если есть web?
      • +2
        Кому нужен веб, если будет кроссплатформенный GUI?)
  • +2
    А будет ли более подробное рассмотрение .NET Core? (Желательно побольше графики)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.