Блог Сергея Байдачного

Мой блог о технологиях

Posts Tagged ‘Build 2013

Build 2013: Анонсы для разработчиков (часть 2)

7 комментариев

Кажется, мы дошли до самого интересного, а именно, до анонсов, относительно новых API для разработчиков Windows 8.1 Store приложений. Давайте бегло посмотрим, что тут есть, а уже потом я начну писать отдельные статьи.

Улучшение в развертывании приложений

Очередной раз в Microsoft подумали о пользователях, а именно, о скорости загрузки приложения. Все дело в том, что пакет с приложением может содержать множество ресурсов, которые могут быть вовсе не нужны пользователю. Например, многие приложения содержат возможности локализации для десятков языков, игры могут содержать ресурсы для различных версий DirectX и т. д. Поэтому, чтобы избежать загрузки ненужных ресурсов, их можно выносить теперь за рамки основного пакета. Основное требование к основному пакету, это необходимость нормальной работы приложения без ресурсных пакетов. Естественно, что в связи с этими изменениями был переработан и контейнер для загрузки в магазин. Поскольку пакетов теперь может быть много, то основной контейнер содержит свой манифест файл, описывающий все пакеты для загрузки в магазин.

Новые и улучшенные элементы управления

Вот уже полгода, как я ощущаю неудобство при вопросе о наличие в Windows 8 таких элементов, как DatePicker и TimePicker. Почему-то в Windows 8 эти элементы отсутствовали. Но в первом же обновлении ситуацию исправили и теперь разработчик может использовать как новые элементы по выбору даты и времени, так и многие другие:

· AppBarButton, AppBarSeparator, AppBarToggleButton – эти три элемента управления позволяют определить кнопки в панели приложения. Нетрудно догадаться, что первый класс определяет обычную кнопку, второй – разделитель групп кнопок, а третий – кнопку-переключатель. Все элементы имеют свойства Icon и Label, позволяющие задать надпись и изображение (будь то картинка или символ из шрифта), а также переключатель в компактный режим, при переходе в который надпись на кнопке скрывается. В целом ничего особенного, просто небольшое упрощение для разработчика, позволяющее не дублировать одинаковый код и не создавать собственные элементы;

· CommandBar – этот элемент является наследником от AppBar и позволяет избежать явной установки разметки внутри панели приложения. Вместо этого тут есть две коллекции, это PrimaryCommands и SecondaryCommands, которые содержат ссылки на кнопки, и автоматически их располагают в левой и правой частях панели соответственно;

· DatePicker, TimePicker – почему этих элементов не было раньше, остается загадкой, ведь выбор даты и времени, это одна из распространенных задач. Но теперь эти элементы есть и разработчики могут вздохнуть спокойно;

· Flyout – с помощью этого элемента можно отображать всплывающие окна, связанные с элементами управления. Формально, Flyout элемент можно вставить в дерево XAML, только привязав его к соответствующему свойству элемента, порожденного от FrameworkElement, но наиболее оптимально он работает для элемента Button. Именно Button обеспечивает автоматическое появление Flyout. Сам по себе элемент является контейнером и может содержать любой элемент компоновки, обеспечивающий разметку;

· Hub – еще один элемент управления для ленивых. Очень подходит для создания дизайна основной страницы приложения, так как позволяет разбивать контент внутри себя на секции, привязанные к одному источнику данных. Это позволяет задавать в каждой секции свой дизайн, в отличие от того же GridView. Раньше подобные интерфейсы создавались за счет размещения нескольких GridView внутри контейнера типа StackPanel, но там возникало много нюансов с динамическим изменением ширины интерфейса и прокруткой;

· Hyperlink – я много раз хотел поймать и убить разработчиков RichTextBlock, которые не сообразили добавить элемент, позволяющий отображать гиперссылки. Чего только не выдумывали разработчики в связи с этим. Но теперь проблема решена;

· MenuFlyout – аналог элемента Flyout, но больше адаптированного для создания контекстных меню;

· SettingsFlyout – и еще один элемент для ленивых, это окно настроек приложения, которое имело рекомендуемый дизайн. Если раньше разработчики просто копировали код элемента, то теперь достаточно просто создать окно настроек по шаблону Visual Studio, не вдаваясь в детали того, как создавать пользовательские элементы управления.

В Windows 8.1 также произошли обновления нескольких элементов управления. Например, в FlipView появилось свойство UseTouchAnimationsForAllNavigation, позволяющее включать красивую анимацию FlipView при работе с ним мышкой или с помощью клавиатуры.

Internet Explorer 11 и WebView

Элемент управления WebView имел одну из самых идиотских реализаций среди всех элементов Windows 8. Именно он вызывал у меня всплеск расизма и расширение запаса слов русского языка. Я даже сейчас спокойно не могу писать.

Во-первых WebView не терпел пересечение с любым другим элементом XAML, даже если это был выпадающий список или окно Settings в Вашем интерфейсе. Во-вторых, он позволял работать только с данными из Web. Если у Вас были локальные данные, то это мог быть только HTML в виде единого файла, так как WebView не работал с локальными каталогами. Иными словами, если Вы хотели выполнить кэширование контента, разбитого на несколько файлов или содержащего бинарные файлы (картинки, видео), то WebView помочь не мог.

Но теперь весь этот ужас позади. Новый WebView лишен проблем, описанных выше, плюс, снабжен рядом других преимуществ и достоин отдельной статьи (которая сразу же и последует).

А, еще WebView базируется на двигателе Internet Explorer 11, то есть поддерживает все последние стандарты HTML 5 (хотя есть отдельные моменты, например WebGL).

Преобразование дерева XAML элементов в изображение

Еще одна странность Windows 8, это отсутствие всякого API по снятию скриншота с интерфейса приложения. Хотя такая возможность была даже в Silverlight и успешно перешла в Windows Phone. Поэтому, после жалоб многих разработчиков, в Windows 8.1 появился класс RenderTargetBitmap, позволяющие преобразовать в изображение любую часть дерева XAML.

Работа с устройствами

В Windows 8.1 разработчик получил большой набор классов, позволяющих взаимодействовать с устройствами по различным протоколам:

· Human Interface Device (HID) – взаимодействие с устройствами, поддерживающими HID и включающими драйвера в состав Windows 8.1, например, какой-нибудь джойстик;

· Point Of Service (POS) – специальный набор классов для взаимодействия со сканнерами штрих кодов и магнитных лент;

· USB – поддержка USB устройств сделана на достаточно высоком уровне. Тут могут быть и какие-то устройства, разработанные Вами, следовательно не имеющие стандартных драйверов в инсталляции Windows;

· Bluetooth – всестороння поддержка передачи данных через соединение по Bluetooth.

Улучшенная поддержка DirectX

В DirectX произошло несколько небольших изменений, которые блекнут на фоне динамической компиляции шейдеров. Ведь именно отсутствие последней в Windows 8 остановило выход множества платформ для создания игр, а выход некоторых существенно отодвинуло. Теперь это все позади, хотя осадок остался, как и непонимание того, «почему это не было раньше?» Разработчики игр и графических приложений меня поймут.

Улучшенная работа с файлами

Тут произошло несколько небольших изменений. Самыми значимыми из них я выделяю следующие:

· Новый класс StorageLibrary позволяет управлять папками в библиотеках пользователя. Это возможно с помощью специального элемента управления, который способен инициировать вызов методов StorageLibrary;

· Новые два типа стандартных каталогов, таких как CameraRoll и Playlists добавлены в перечислимый тип KnownFolders и могут быть использованы в Ваших приложениях;

· Стандартный диалог, позволяющий работать с файлами, теперь способен связываться со SkyDrive и делать это по умолчанию. Это избавляет разработчика от использования сложных API в своем приложении для загрузки файлов в сеть;

· В случае, если Ваше приложение работает с большим количеством файлов, то Вы можете использовать стандартную службу Windows для их индексирования и реализовать поиск на базе этой службы. В Windows 8.1 поиск можно реализовывать не только на основе имен файлов, но и на основе их содержимого или любой другой информации. Для этого разработчику нужно явно добавить желаемую информацию в хранилище, а служба выполнить индексацию самостоятельно;

Улучшенная работа с медиа

Наконец-то в Windows 8.1 появился класс MediaStreamSource, который был еще в Silverlight, но почему-то не перекочевал в Windows 8. Именно с помощью этой штуки, Вы можете реализовать приложение, которое будет читать из потока свой собственный формат, преобразовывать его и отправлять для отображения. Подобные задачи возникают очень часто, особенно у компаний, который транслируют защищенный контент по своему собственному протоколу.

При съемке фотографий разработчик получил также ряд нововведений. Во-первых, появилась возможность получать сразу несколько фотографий с камеры. Это может быть полезно в приложениях, которые обрабатывают последовательность фото для получения наилучшего результата. Во-вторых, появилось значительное количество классов, позволяющих настраивать камеру на профессиональном уровне, начиная от баланса белого, заканчивая режимом вспышки.

Не обошли изменения и MediaElement, который получил возможность отображать видео в полноэкранном режиме. Кроме того, появилась возможность отображать стандартные элементы управления для аудио и видео, не создавая свой собственный интерфейс.

Новые режимы отображения

Если раньше приложение должно было поддерживать минимальный размер 1024 на 768 и специальный snapped режим, устанавливающий ширину в 320 пикселей, то сегодня от последнего отказались. Вместо этого установили минимальную ширину для приложения в 500 пикселей, предполагая, что разработчик будет масштабировать экран приложения всякий раз, когда пользователь меняет его ширину. Это связано с тем, что в Windows 8.1 на экране может находиться несколько приложений, а ширину каждого из них пользователь может выбирать сам. При этом, приложение может установить и минимальную ширину 320 пикселей, если это имеет смысл.

Если честно, то я пока не знаю, что с этим делать. Ведь раньше в Snapped режиме можно было честно написать о том, что приложение его не поддерживает и попросить пользователя вернуться в полноэкранный режим. Будет ли проходить такой номер при попытке изменить ширину приложения пользователем по новым правилам, пока не ясно. Не исключено, что специально обученные индусы могут потребовать реализацию Вашего приложения для любых размеров, включая и ширину 500 пикселей.

Новые типы тайлов

В Windows 8.1 появилось два новых размера тайлов, это 70 на 70 и 310 на 310 пикселей. Иными словами, маленький и просто огромный тайлыJ Для меня это означает необходимость рисовать больше иконокJ

Улучшения при поиске

Был улучшен стандартный элемент управления, реализующий поиск. Теперь он поддерживает стилизацию. Для этого данных элемент можно разместить в разметки приложения и настроить его по своему усмотрению. Интеграция, как и раньше, происходит со стандартной панелью Windows.

Интеграция с календарем и контактами

Новые API позволяют разработчикам выполнить запрос на поиск контакта и получить информацию о нем в случае успешного нахождения. Кроме того, разработчик может получить доступ к активному календарю пользователя, выбрав информацию о планируемых встречах, а, при необходимости, назначить новую встречу или отменить существующую.

Не уверен, что функциональность найдет широкое применение, так как в Windows 8 я могу использовать любые приложения для хранения контактов, отличные от стандартных. А поскольку речь не идет о телефонах, а о планшетах и десктопах, то мне нет никакого интереса использовать возможности интеграции и импортировать список контактов из одного приложения в другое.

Синтез голоса

Windows 8.1 все еще догоняет некоторую функциональность, которая давно есть в телефоне. Вот так и произошло с синтезом голоса. Теперь и в Windows 8.1 разработчики могут использовать этот функционал.

Реклама

Written by Sergiy Baydachnyy

15.07.2013 at 10:58

Опубликовано в Microsoft, Windows 8

Tagged with

Build 2013: Анонсы для разработчиков (часть 1)

with one comment

 

Попробуем посмотреть, что же было анонсировано на Build 2013 для разработчиков. Не будем заострять наше внимание на рюшечках типа кнопки Start, а перейдем сразу к конкретным вещам, предполагая, что об анонсах Visual Studio 2013, Windows 8.1 и .NET Framework 4.5.1 нам уже известно.

Помощь в улучшении продуктов

Перед окончанием статьи, пришлось вернуться в начало и вставить вот этот раздел. Ведь знаю многих разработчиков, которые ждут релиза, а затем второго и третьего обновления продукта, а только потом устанавливают его на свою машину. И тут же начинается поток вопросов о том, как и что нужно сделать и почему какой-то функциональности нет. Отвечаю всегда одно и то же: Мы внимательно слушаем разработчиков и стараемся внести в продукт все здравые предложения, но у нас ведь должен быть шанс их успеть реализовать, а для этого нужно предложения высказывать вовремя. Одним из хорошо известных ресурсов, где можно пообщаться с Microsoft по предварительным версиям, является сайт http://connect.microsoft.com. Вот и сейчас тут открыта страница, где можно внести информацию о найденных по Visual Studio 2013 http://connect.microsoft.com/VisualStudio. А свои предложения о новых возможностях можно высказать тут http://visualstudio.uservoice.com/forums/121579-visual-studio. Пользуйтесь.

Нагрузочное тестирование из облака

Уже год, как я пользуюсь облачной службой TFS для хранения исходных кодов своих проектов и управления задачами. Служба доступна по ссылке http://tfs.visualstudio.com для всех желающих и совершенно бесплатна для команд до 5-ти человек. Поэтому, если Вы впервые слышите о такой возможности, то я очень рекомендую попробовать, тем более на Build 2013 анонсировали, что служба начала поддерживать и возможность нагрузочного тестирования. Да, Вам придется выставить в Web тестируемый сайт или службу (порт может быть любым), но именно так можно смоделировать поток пользователей в реальном окружении. Поскольку нагрузочное тестирование из облака находится в режиме бета тестирования, то сейчас доступно только 15 000 виртуальных пользовательских минут на учетную запись в TFS. Иными словами, если Вам нужно смоделировать 15 000 пользователей, то работать это будет лишь минуту. Но, это для всех, чтобы можно было попробовать. Если Вы действительно заинтересованы в данной функциональности и Вам необходимо больше времени, то на сайте Connect можно подписаться на специальную программу https://connect.microsoft.com/VisualStudio/Survey/Survey.aspx?SurveyID=15425.

Еще пару ссылок на ресурсы:

http://tfs.visualstudio.com/en-us/learn/load-testing — описание того, как сделать первый нагрузочный тест

http://social.msdn.microsoft.com/Forums/vstudio/en-US/01f9d28a-cfea-400f-923a-19e339237688/troubleshooting-guide-for-load-testing-with-team-foundation-service – Описание проблем, которые могут возникнуть при пробном запуске

Интеграция Visual Studio 2013 и Team Foundation Server 2013 с Git

Всякий раз, когда я рассказываю о TFS мне задают одни и те же вопросы о том, почему работа с изменениями файлов не поддерживается при отсутствии соединения с сетью. Например, можно было бы выполнить несколько операций check-in/check-out локально, а потом загрузить всю эту информацию в репозиторий на сервере. Дело в том, что TFS построен на основе единого, центрального репозитория, поэтому любая работа в offline режиме будет выглядеть как третья нога, создавая множество коллизий или потребует переработки всей службы. Но, на рынке присутствуют и системы контроля версий файлов, основанные на распределенных хранилищах. В подобные системы работа в offline режиме вписывается очень органично. Одной из таких распределенных систем является Git (Гит). Это проект с открытым кодом, поэтому пользуется популярностью у многих разработчиков. Именно поэтому, Visual Studio 2013 и Team Foundation Server поддерживает интеграцию с Git. Причем, все необходимые компоненты уже встроены в продукты и разработчику не нужно что-либо устанавливать. Естественно, что эта связка может быть и нарушена. Например, Вы можете легко использовать Visual Studio 2013, а в качестве системы контроля версий, любую из служб, поддерживающую Git.

Естественно, что поддержка Git не ограничивается только способом синхронизации изменений. Visual Studio 2013 позволяет создавать ветки проекта в понимании Git и выполнять слияние изменений, а TFS позволяет запускать построение проектов, исходный код которых находится в Git.

Нужно сказать, что на Visual Studio 2012 интеграция с Git также работает, но нужно установить дополнительное расширение.

Большая гибкость при построении проекта в TFS

В Visual Studio 2013 и Team Foundation Server 2013 произошли улучшения в функциональности по автоматическому построению проекта и запуску его на тестирование. Так, одним из улучшение стало появление компонента для построение Windows 8.1 приложений в автоматическом режиме.

Абсолютно все проекты теперь можно настраивать таким образом, чтобы перед запуском построения, а также перед запуском тестов выполнялся PowerShell скрипт или скрипт командной строки.

Наконец, для тех, кому скриптов будет недостаточно, Visual Studio 2013 предлагает специальный дизайнер для постройки процесса построения проекта. Тут предлагается достаточно большое количество предопределенных блоков.

Развитие С++

Я уже некоторое время рассказываю о возможностях C++ 11, которые стали доступны в Visual Studio 2012. Но это далеко не все возможности стандарта. Правда еще в ноябре 2012 года, в Microsoft анонсировали предварительную версию изменений в компиляторе, которая затрагивает большинство недостающих возможностей C++ 11. Расширения можно было скачать тут http://www.microsoft.com/en-us/download/details.aspx?id=35515 и установить для Visual Studio 2012.

Сейчас же было анонсировано, что компилятор С++ в Visual Studio 2013 содержит все анонсированные возможности С++ 11 по умолчанию. Таким образом компилятор развивается и дальше. Пока не ясно, будет ли обновление компилятора для VS 2012, но в Update 3 ничего такого замечено не было.

Регистрация в Windows Phone Store за $19

Еще на MS SWIT 2013 мы анонсировали возможность разработчикам Украины зарабатывать деньги в Windows Phone магазине. Для тех, кто еще решается на регистрацию, Microsoft анонсировала летнюю скидку. Так, до 28 августа, стоимость годовой регистрации в Windows Phone магазине составит $19.99. Спешите успеть.

Напоминаю, что регистрация для студентов бесплатная, а владельцы MSDN (и BizSpark партнеры) могут получить специальные промо-ключи для бесплатной регистрации. Ключи можно загрузить на своей странице MSDN.

Edit и Continue в 64-х проектах

Функциональность Edit и Continue была внедрена еще в прошлой версии Visual Studio, но работала только для 32х битных .NET проектов. Visual Studio 2013 поддерживает эту замечательную функциональность теперь и для 64x битных проектов. Кроме того, в настройках проекта поддержка функциональности включена по умолчанию.

Напоминаю, что Edit и Continue позволяет редактировать код во время отладки и продолжать отладку без перезапуска проекта.

Поддержка Windows Azure Active Directory в ASP.NET

Visual Studio 2013 позволяет использовать Windows Azure Active Directory в ASP.NET приложениях. Последняя может интегрироваться с Вашим активным каталогом в организации и все это можно использовать для аутентификации пользователей. Правда для этого нужно скачать и установить поверх Visual Studio 2013 обновления для ASP.NET утилит http://go.microsoft.com/fwlink/?LinkId=309552.

Улучшенная отладка при асинхронном программировании

Во-первых, окно отладки при запуске метода через await/async в .NET выдает меньше «мусора» (свернув всю информацию о вызове методов из внешних сборок). Во-вторых, появилось специальное окно Task, которое заменяет Parallel Task и доступно для всех языков, где поддерживается Parallel Task библиотека. Окно Task позволяет увидеть текущие задачи по отношению к точке останова и состояние этих задач на данным момент.

clip_image002

$ReturnValue

$ReturnValue можно использовать в окне Watch или Immediate, чтобы получить возвращаемое значение. Очень актуально для тех случаев, когда возвращаемое значение описано сложным выражением, а вводить временную переменную и выполнять дополнительную операцию присваивания не хочется.

Written by Sergiy Baydachnyy

27.06.2013 at 13:09

Опубликовано в Microsoft

Tagged with