В это теме я расскажу о
том, что на данный момент доступно в мире .NET и что для этого нам готовит в
ближайшем будущем компания Microsoft.
Анализ был сделан на основе докладов "The Next Generation of .NET for Building Applications" и "The Present and Future of .NET in a World of Devicesand Services" на конференции Build 2014. Если
у вас неплохая база английского и вы уже потратили два часа своего времени для того, чтобы посмотреть, какие "вкусности" приготовила нам Microsoft, но если вы не
смотрели это видео и хотите узнать, что же нового нас ждет в ближайшем будущем,
добро пожаловать под кат.
Очень много из того, что
предоставила сейчас Microsoft
разработчикам, можно посмотреть на картинке выше. Начнем разбор этой картинки слева
направо. Первое, что мы видим, – это надпись ".NET Foundation Openness", что обозначает, что
лучшей документацией своей работы компания Microsoft считает открытые исходные коды своих разработок.
Чтобы ознакомиться с этими проектами, мы можем посетить официальную страницу, на которой есть весь список open-source проектов: dotnetfoundation.org. На момент написания статьи было доступно 24
проекта с открытым исходным кодом.
Одними из самых
популярных проектов, исходные коды которых компания Microsoft выложила
на всеобщее обозрение, есть Entity
Framework,
ASP.NET MVC, ASP.NET Web API, MEF, и
недавно в этот список попал также .NET Compiler Platform ("Roslyn"). Компания Microsoft реализует
партнерские отношения с компанией Xamarin, так как считает своим приоритетом завоевание мира
разработки cross-device приложений.
Почти каждая
презентация, которая проходила на Build
2014, хоть мельком да упоминала о партнерских взаимоотношениях компании Microsoft и
Xamarin.
Так что разработчики приложений для Windows Store Apps и
приложений Windows
Phone
выйдут
на новый уровень. Хотелось бы в это верить, по крайней мере. А само ядро .NET получило
кардинальные изменения. Во-первых, с выходом проекта Roslyn, который, к тому же, сейчас является
open source и вышел из стадии CTP в
официальный релиз, компания Microsoft,
по сути, приоткрыла занавес тайны принципов работы компилятора. Теперь писать C# Scripts, написания плагинов и extensions для
студии стали проще простого. Значительным изменениям подвергся сам Roslyn с
момента выпуска TCP
версии
в сентябре 2012. Было исправлено много недоработок, а также добавлена работа
с лямбда-выражениями, task, async/await/ dynamic и
т.д., которая не была доступна в версии 2012 года. Я считаю, что Roslyn должен
упростить разработку приложений. И если вы хотите знать, как работает компилятор, – посмотрите в сторону Roslyn,
он приоткроет вам эти секреты.
Next gen JIT ("RyuJIT")
Это новый этап эволюции
JIT
компиляторов.
В чем именно заключается эта новинка, я сейчас постараюсь рассказать в двух
словах, так как для меня это стало новостью. Вам, наверное,
приходилось слышать о NGen.exe для
генерации образов в машинном коде, что позволяет ускорить работу управляемого
кода на конкретном железе. Так вот: RyuJIT позволяет взглянуть на этот процесс немного под
другим углом. Вам знакомо такое понятие, как SIMD (single instruction, multiple data – одиночный поток команд, множественный поток
данных, ОКМД)? Если вы с таким никогда
не сталкивались, ничего страшного. Я раньше тоже никогда об этом не слышал. Эта
технология позволяет распараллеливать обработку данных в рамках одного процессора
с помощью векторизации. Больше информации об этом содержит статья на habrahabr "Доступен новый JIT: теперь с поддержкой SIMD"
.
Я процитирую текст с habrahabr,
чтобы
показать всю суть нового компилятора.
Он настолько популярен, потому что, за
исключением некоторых видов приложений, SIMD существенно ускоряет работу кода.
Например, производительность рендеринга множества Мандельброта можно ощутимо улучшить с помощью SIMD: в
2-3 раза (если процессор поддерживает SSE2), и в 4-5 раз
(если процессор поддерживает AVX).
Как это работает, вы
можете посмотреть из презентации, которая была приведена на Build 2014, – "The Next Generation of.NET for Building Applications". Пример, который был продемонстрирован на
конференции, позволил значительно увеличить производительность кода.
На данный момент
доступна третья редакция CTP
RyuJI.
Если вы хотите поработать отдельно с SIMD, то можете отдельно
скачать библиотеку Microsoft.Bcl.Simd
через NuGet.
Native Compilation
Теперь появилась
возможность ускорить работу своих приложений для Windows Store Apps и
Windows
Phone
8.1 приложений. .NET
Native – это
технология предварительной компиляции для создания и развертывания Windows Store приложений. Она собирает
приложения, которые написаны на управляемом коде (C #) в машинный код. Как это выглядит, демонстрирует картинка с презентации.
В Visual Studio 2013 появилась отдельная галочка в
настройках сборки, а также меню, которое позволяет включать генерацию native code с
помощью С++ компилятора.
(Надеюсь, я не ослышался об этой возможности с видео доклада)
Windows Convergence
Это возможность писать
универсальные приложения для Windows
Store
Apps
и
Windows
Phone
8.1. Это означает, что вы можете использовать код, который писали раньше для Windows Store Apps в своих приложениях на Windows Phone 8.1. Прошу читателей обратить внимание
на версию 8.1,
так как, судя по докладу, с более ранними версиями этот подход работать не
будет. Здесь нет никакой мистики. Для того чтобы это заработало, добавлена новая
опция в Visual
Studio
2013, в которой мы указываем целевые платформы.
Сама возможность такой
разработки стала доступной благодаря Portable
Class Library (PCL). По приведенной выше ссылке мы можем
посмотреть, как это работает. Список, куда мы можем добавить свою
разработанную PCL, пока небольшой.
Но надеюсь что в
ближайшем будущем ситуация измениться к лучшему. Сейчас же это будет только
работать между последней версией приложений Windows Phone 8.1.
Cloud Services
Одним из новых
нововведений, презентованных Microsoft, – это работа с Azure Mobile Service. Работа с этими
сервисами осуществляется через привычный нам json. Вот какие сервисы доступны
разработчикам на данный момент.
Добавлю
картинку, как это сейчас работает:
Если у вас стоит задача
разобраться в том, как это работает, Microsoft
предоставляет
множество источников с готовыми примерами, часть из которых сейчас постараюсь
привести. Mobile
Services – введение в мобильные сервисы Azure. Windows Azure Mobile Services – краткое руководство по использованию.
Разработка,
построенная вокруг библиотеки Twilio.
В ваш проект будет добавлены ссылки на необходимые библиотеки.
Если вы хотите
посмотреть пример работы, рекомендую посмотреть пример с презентации на channel9.
В веб изменения у нас идут в сторону улучшения и открытости исходного кода. Также изменилась
программа Microsoft
для
MVP.
Но, думаю, об этом лучше расскажет легендарный Scott Hanselman в
своей презентации на Build
2014 "What's New forASP.NET and Web in Visual Studio 2013 Update 2 and Beyond". Рекомендую данную
презентацию к просмотру. Хансельман, как всегда , непревзойдённый в подаче материала,
а также в юморе, который присутствует в видео докладе.
Также был представлен
новый фреймворк "Orleans"для
Cloud
Service
in
Azure.
Представители Microsoft
об
этом фреймворке ничего внятно не сказали. Был только один доклад, который только
частично приоткрыл занавес тайны – "Using Orleans to Build Halo 4’s Distributed Cloud Services in Azure". Пока единственная информация
об использовании, которую мне удалось найти, звучит следующим образом:
Orleans has
been used to build multiple production services currently running on the
Microsoft Windows Azure cloud, including the back-end services for some popular
games. This enabled us to validate the scalability and reliability of
production applications written using Orleans, and adjust its model and
implementation based on this feedback. It also enabled us to verify, at least
anecdotally, that the Orleans programming model leads to significantly
increased programmer productivity.
Цитата взята с Microsoft Research – Orleans. Также по
приведенной ссылке вы сможете найти краткое описание данного проекта и увидеть
картинку концепции использования.
На этом мои знания об
этом проекте и о возможностях его использования заканчиваются. Пока
единственное применение этого проекта, которое я услышал, – это игра "Halo 4".
Подведем
краткие итоги нашего экскурса в мир, который диктует компания Microsoft своим
разработчикам. Если честно, то меня такая тенденция и коммуникация компании Microsoft с
разработчиками очень радует. Как сказали представители Microsoft, "вы хотели открытость (openness),
нативность (.NET
Compilation,
RyuJIT)
и Cross-platform (Xamarin) – получайте".
No comments:
Post a Comment