29 ферваля, все прогрессивное Microsoft сообщество радостно встретило Windows 8 Customers Preview.
Тут на хабре родилось целых 2 обсуждения win8- Первое и Второе.
Как и с CTP версией выход Visual Studio 11 beta и .Net 4.5 beta остался куда менее заметен.
Считаю это не справедливым, и хочу поделиться своим наблюдениями за новой версией лучшей IDE.
Прежде чем читать эту статью, рекомендую прочесть предыдущие 2 статьи, написанные по VS11 CTP
HTML5+ JS приложения для Windows 8. Что внутри + холиварные мысли
Что нового в Visual Studio11 CTP уже сейчас
Так же, хочу рассказать о личном опыте разработки под Windows8 Metro приложения во время Хакатона, который был сделан 3 числа в офисе MS в Крылатском. Там собралось 50 человек, почти все из которых писали ранее Windows Phone приложения и были активными деятелями WP сообщества.
Я думаю, что все заметили, что изменился интерфейс студии, причем очень координально.
Я бы не хотел устраивать холивар на эту тему, новый интерфейс- это реальность данная нам в ощущения.
Мне удалось быстро под этот дизайн перестроиться, хотя переключение из vs2010 в vs11 конечно было очень тяжело, когда работаешь на 2 ноутах одновременно. Все недовольства лучше наверное на msdn форуме высказывать и на connect.microsoft.com там хоть услышат разработчики, и ответсвенные, а крики тут- пустая трата времени.
Размеры экрана ноутбуков и планшетов отличаются. Windows8 планирует быть более массовой чем другие ос для планшетов, и у нее может быть множество разрешений.
Тк Вы не знаете, под каким разрешением будет запущено Metro приложение, то тестировать его нужно под разными разрешениями.
в качестве настроек доступны темы по умолчанию. Раньше в Windows Phone мы всегда видели черную тему по умолчанию. честно говоря очень долго и не знал, что есть еще белая тема как минимум. Установив тему, можно понять как будет выглядеть приложение в другой теме. Это очень интересная информация. Мне очень понравилось не в черной, а в белой теме.
Architecture
Со времени 2010 был очень серьезно переписан движек работы с диаграммы.
Его можно редактировать, перемещать, вносить дополнения, что сильно упрощает анализ приложения. Я считаю это очень интересным, тк из-за различного визуального представления одних и тех же элементов, можно либо посчитать архитектуру совершенно не понятной, или абсолютно простой.
Из личного опыта, что просто перемещение блоков и распутывания клубка связей упрощает структуру диаграммы.
можно на прямую редактировать xml код диаграммы — если кто-то считает себя достаточно суровым и образованным.
В качестве нового типа диаграмм был добавлен тип- Граф… Я не очень понимаю пока, какой в нес смысла, но просто как редактор очень даже не плохо смотрится.
Тестирование
Много любят разговаривать про тестирование и unit тесты, но не часто это делают. Одна из причин, что тесты надо либо запускать самому, либо они должны быть настроены в Континиус Интегрешион. MS решило помочь тем, кто все таки пишет тесты. Можно установить галку, запускать тесты после билда. Я лично редко запускал свои тесты, но теперь можно принудительно заставить себя это делать. Понятно, что тесты могут явно тормозить работу, если гоняются более 5 минут, это издержки производства. Я так решил шутки ради собрать NHibernate из исходников с этой галкой. В общем на обед сходить можно было, если каждый билд гонять тесты локально.
DirectX и графика
в visual studio 11 beta была заявлена расширенная поддержка графики, Directx и так далее. Я не являюсь специалистом, по графике, так что оставлю это на растерзание специалистам.
ARM
Появилась возможность установить настройку- тип процессора ARM, что приближает нас к тому, времени когда windows будет работать на arm, а мы сможем писать под нее Metro приложений
Store
Я не смог зарегистрироваться в Market Place пока, что… Но поддержка в Студии уже давно есть.
На старте Win8 в Москве 2 марта, Михаил Черномордиков сказал, что сейчас в Маркете можно зарегиться по спец промокоду, и маркет доступен для 5 стран, у которых разные языки. Штат, Германия, Франция и кто-то еще. К моменту выхода Win8 будут доступны почти все страны мира. Но это к выходу, сейчас посмотреть на магазин приложений можно в Win8, но использовать его как разработчику, пока без спец промокода пока нельзя, хотя и очень хочется
Эмулятор-Симулятор
Приложения для windows8 могут использовать в своих целях геолокацию, а на эмуляторе мы можем задавать координаты пространства, чтобы тестировать этот функционал.
Ну и само расширение экрана на эмуляторе.
Трололо
Цвет некоторых иконок они не перевели в серый интерфейс. Если кто-нибудь захочет вернуть цвет кнопкам, то есть шанс этот плагин может быть легко написан.
Хотя если честно, за время хакатона по Windows8 в офисе МС в Крылатском, я 5 часов сидел в VS11 beta и очень быстро привык к новой студии. Ну действительно я по верхней панельке только на закомметировать код тыкал. Выучил Хоткей и вообще в нее по моему не лазил. Так, что те кто ломает клавиатуру, печатая что такая цветовая гамма- отстой я могу предложить устроить самому себе хакатор по Windows8 Metro Applications и через 5 часов понять для себя лично- плохо или нормально или хорошо ему в таком интерфейсе. После хакатона, я поработал дома на vs2010 и как-то проблем не испытал с возвращением. Значит все хорошо лично для меня оказалось.
MVC4
В Visual Studio 11beta уже встроен MVC4. Ранее mvc4 был доступен в качестве бета версии для VS2010, но в VS11 не встраивался. Я проверял.
Как и ранее есть 2 движка представлений, НО для создания WEB Api мы не можем выбрать движек представлений, отличный от RAZOR.
Это уже скорее к MVC4, но в любом случаи. Лично мне очень понравилась идея APi котроллера, который возвращает просто нужный тип данных или просто дергает действие,
без каких либо Action Result. Действительно просто Api
Хакатон по разработке Windows8 Metro Application в Москве 3 марта
Я решил потратить свою субботу, чтобы встретиться с людьми, которые уже сейчас горят желанием научиться разрабатывать приложения под Windows8, сам по программировать.
В этой части я и расскажу о том, что получилось.
1- На старте VS11 Beta было сказано, что те кто умеет кодить на C# и знает XAML- уже умеют разрабатывать под Win8Metro. Воодушевленные этим все ринулись в бой. Ха-ха-ха. WinRt- совсем не тот .net к которому мы привыкли! Можно было бы сослаться, что это я не умею программировать, но со мной согласятся те человек 50, которые были на хакатоне и пытались кодить- просто знание .net, которое у них было раньше, за 3-5 лет разработки- не является достаточным, чтобы за день сесть и написать приложение с нуля.
Почему- а вы представте, что у Вас по сути забрали .net framework, а оставили только C# как язык программирования. Кто-нибудь пробовал писать на monodroid- monotouch, с использованием возможности системы? Да, .net есть, C#- есть. Но все что предоставляет Система- это совершенно новое, не известное API.
У Вас как основ- другой framework, который дает многое, но вы с ним работаете первый раз.
1.1 Асинхронность
Почти все методы в Api WinRt асинхронные и возвращают объекты WinRt, которых ранее в .net не было просто.
В итоге какое-то время тратится на понимание async, await. Где их можно ставить, где нет, как они работают и так далее. Все не так сложно, но 90% из нас раньше не использовал асинхронность выше уровня делегатов, которые просто подписывали на события.
1.2 Разные версии framework у нас и у некоторых сотрудников MS.
Было забавно, но у одного из сотрудников ms, была студия, которая была выпущена немного раньше, которая визуально не отличалась от нашей, но отличалась внутри. В итоге мы познали вкус, разрабатываемого framework сильнее. Когда у человека метод в названии Асинхронный, а по сути- нет. Ну нет в его версии модификатора async. А у нас есть.
2- документая.
Проблема в том, что framework дорабатывается. Документация вся на английском и достаточно краткая. В ней есть описание классов, методов, но ни одного примера использования. Любимым методом пользоваться не получится- написать задачку в гугле и поискать ответ на stackoverflow — не получится, ничего нет в выдачи гугла. Пусто!
3 примеры.
У нас были довольно обширные sample кода, точнее довольно много папок с проектами. Нас же интересовали примеры на C# и как можно проще.
У нас были примеры, которые в sdk. Не плохо, но в них большая часть- это уже продвинутый уровень- DirectX, работа с winrt из html-js. В итоге мы находили нужные примеры, но загуглить было бы куда быстрее.
В итоге те, кто в начале начал переписывать шаблон из стандартных в VS11beta потратили первые час-два, только на то, чтобы разобраться что и от куда, да куда. Я тоже допустил эту ошибку. Начал искать где DataTemplate лежат, как они внутри себя связаны, где стили каждого элемента и так далее. Я не хочу сказать, что sample плохие- они хорошие, просто ковалерийским наскоком с ними разбираться тяжело, а хакатон- это именно наскок.
4- ощущение от VS11
У меня остались крайне позитивные впечатления. То, что изменилась цветовая тема- это все ерунда. Я одаптировался к ней минут за 30 и дальше проблем не было. По поводу скорости работы- она летает. Я не знаю, что они с ней сделали, но скорость работы и отзывчивость- это супер. У меня система вылетела 1 раз на этой студии, что за 5 часов работы- не так много, тем более для beta версии.
5- написанные за 5 часов приложения.
В итоге на конкурс было предложено 10 приложений.
Ни одно из которых нельзя опубликовать в MarketPlace потому, что оно не дописано. У кого-то было GUI, у когото программа уровня hello word. Был клиент, для фликера написанный за 5 часов, который в общем-то и выиграл конкурс в конце дня, но по сути- это было разпарсить rss. Я не хочу сказать, что автор не умеет кодить- умеет, и он это показал выиграв конкурс написав лучшее приложение, но за 5 часов, если бы мы уже раньше, что-то делали, все сделали бы куда больше.
Resharper 7 for VS11
Спасибо ребятам из JetBrains, за то, что они очень быстро сделали версию Resharper для VS11. Он корретко работает с всеми проектами, КРОМЕ Win8 Metro. Если Вы скачали его ради Metro, значит Вы плохо читали блог с анонсом. В нем написано, что пока не поддерживается. Я его отключил, когда сел писать под WIn8 Metro, потому что на данный момент resharper красит весь весь проект в красный цвет, тк ошибки типа, хотя проект компилируется. Не находит сборки WinRt практически, хотя они есть. Не видел классы, блокирует интеллесенс, хотя классы и методы такие существуют, но он их просто не видет.
Обо всех ошибках этих в решарпере знают, еще раз спасибо им за решарпер и быстрое портирование для VS11. Осталось дождаться поддержки Metro, а пока на metro проектах просто отключать ее.
Этот кусочек я написал, потому что многие как и я считают Resharper- тулзой, которая должна быть у всех и которая практически не разделима с VS.
Мои выводы:
VS11- классная штука.
Чтобы разрабатывать Metro приложения для WIndows надо очень внимательно прочесть документацию прежде чем садиться кодить даже Hello Word.
Нужно почитать новшества в C#5, прежде чем работать с WinRt, тк в WinRt очень много асинхронности как-минимум.
P.S. огромное спасибо нашему руководителю разработки Андрею Цветкову из Сравни.Ру , что он меня в пятницу отпустили на Windows8 boot camp!
Автор: SychevIgor