Не так давно в сети появился пост 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
Поделиться с друзьями
-->

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


  1. kamushken
    11.10.2016 11:16
    +4

    мне ту, что слева!


    1. AzureSeraphim
      11.10.2016 11:53
      +4

      Мне ту что справа, не люблю кости.


      1. midday
        11.10.2016 12:46
        +6

        Все норм, но главное чтобы функциональна была, а не как бесполезное бревно.


        1. Kenya-West
          11.10.2016 12:53

          Причем это же требование подходит и к разработке! ( ?° ?? ?°)


    1. MAXHO
      11.10.2016 12:52
      +15

      Вы не заметили главного… Какой бы .NET Вы бы не выбрали, Frontend одинаково страшен


      1. sidristij
        11.10.2016 16:53
        +1

        Ну как же, мы же видим душу, как они и хотят


  1. oxygenh
    11.10.2016 11:54
    +1

    начать, чтоль,.нет изучать?.. :)


  1. pogorzhelskiy
    11.10.2016 11:58
    +22

    Голосую за .net core, та что в красном. Статью не читал, вероятно она полезная.


  1. Mamboking
    11.10.2016 12:11

    Core еще толком изучить не успел, а грядут новые изменения.


  1. auine
    11.10.2016 12:25
    +7

    .net завлекает как может


  1. Redwan
    11.10.2016 12:31
    +2

    «на лицо ужасные, добрые внутри...»


  1. BubaVV
    11.10.2016 12:48
    -2

    Ассемблер
    image


    1. Free_ze
      11.10.2016 13:31
      +1

      Нет ни мышц, ни жил — без своей целевой платформы бесполезен. Наверняка давно мертвый. Это бейсик.


      1. Pakos
        12.10.2016 10:12

        С мышцами будет макроассемблер с библиотеками.


    1. llvp
      11.10.2016 17:27

      thank mr skeltal


  1. qrck13
    11.10.2016 13:19
    +5

    Вот так хабр превратился в NSFW ресурс


    1. BubaVV
      11.10.2016 13:39
      +1

      Так давно уже. Горжусь своим скромным вкаладом: предложил использовать базу моделей Плейбоя для туториалов по статистике и всякому таком


  1. compilator
    11.10.2016 13:22
    +8

    А мне средненькая нравится.


  1. an24
    11.10.2016 22:24
    -5

    Посмотрел я на это и тихо возрадовался, что в свое время остановился на java


    1. NIKOSV
      12.10.2016 06:47
      +6

      фотка есть?


  1. geekmetwice
    12.10.2016 01:14
    -8

    Правильно ли я понял, что только спустя 14 лет в MS схватились за голову и поняли всю суть Жавы? Она ж и есть «ядро»+«стандартные либы». Часы, смарт, ПК — везде работает простая VM. А уже в зависимости от устройства, к программе цепляют нужные либы и всё работает.
    Ох, как же непросто будет теперь MS перелопачивать свой 14-летний навоз! А главное — одна из важнейших сфер, GUI, до сих пор не имеет портируемой версии. Без неё все их потуги — пшик.


    1. Ateist602
      12.10.2016 12:21

      Кому нужен кросс-платформенный GUI, если есть web?


      1. Free_ze
        12.10.2016 15:32
        +2

        Кому нужен веб, если будет кроссплатформенный GUI?)


  1. JustTry
    12.10.2016 10:22
    +2

    А будет ли более подробное рассмотрение .NET Core? (Желательно побольше графики)