НовостиСобытияКонференцииФорумыIT@Work
Идеи и практики автоматизации:

Блог

Плюсы и минусы WinRT для разработчика прикладного ПО

Андрей Колесов
03.03.2014 09:56:53

Еще в октябре прошлого года в одном из постов (Как дела с обновлением до Windows 8.1?) по ходу дискуссии вышли на вопрос разработки приложения для нынешней ОС Microsoft. Надо сказать, что, хотя Windows 8 уже почти как полтора года на рынке, а тема разработки ПО под нее, по моим представлениям, находится в каком глубоком забвении…

Вот что написал там тогда подключившийся к разговору разработчик, который пока (он на нашем сайте зарегистрировался, но пока не хочет, чтобы его имя было видно в явном виде). Вот фрагмент нашего тогдашнего разговора

Цитата
Он:
Я пишу приложение для врачей. Справочник лекарственных препаратов. Будет сделано две версии - для традиционной Win (desktop) и для WinRT.

Я:

Обе верии под x86 или WinRT под ARM? Т.е. вышите и для Surface Pro (x86) и для Surface RT (ARM)? : какова совместимость приложений WinRT для x86 и для ARM?

Я сейчас использую только x86, но должно, конечно же, работать и на ARM. Когда будет версия для тестирования, то я найду способ проверить на ARMе. Отпишу в этот тред. Desktop-версия будет раньше (конец ноября), а winrt в середине декабря. Кстати и посмотрим как оно

Я:
Т.е. вы делаете Windows-версию и Metro-версию для x86. И Metro-версия должна еще работать на ARM. Так?
Очень интересно - что и как у вас получится.
Когда будет, чем поделиться (результатами), напишите, пожалуйста, мне в копию (kolesov@pcweek.ru) Это тема интересная и важная, достойна отдельного поста. Я напишу, ссылаясь на вас, продолжим разговор на основе конкретной инфо.

Он:
Именно так.
Внёс себе в календарь. Не забуду и обязательно свяжусь, как только будет что показать.


И вот сейчас Вячеслав (так его зовут), прислал обещанный отчет о проделанной работе:

Цитата
Вовремя не получилось ответить, но суть дела я хочу все-таки изложить.
Итак. Идея написать два приложения (Desktop и WinRT) для Windows 8 оказалась не очень удачной. Дело в том, что часть новых возможностей Windows 8 не доступна для Desktop приложений. Например, API работы с календарём Windows 8 не доступно для Desktop приложения, а это важно для моего проекта. Имеет смысл создавать просто Desktop (Vista, Win7, Win8) приложение и отдельное метро-решение для WinRT. Таким образом, сейчас продолжается разработка только WinRT.

Из негатива WinRT:

Очень слабая поддержка таких ключевых технологий XML как XSL и XSD по сравнению с .NET. Что бы реализовать часть необходимого функционала, пришлось написать отдельный web-сервис и преобразовывать данные через этот сервис, вместо локального решения. А это удорожает приложение для пользователя.

Из позитива WinRT:
Очень подходящие для решения проблемы технологии и элементы управления: Hub; контракты Search, Settings, Share (Source и Target); фоновые задачи; Тайлы.
Чрезвычайно упрощены реализации процессов настройки программы (контракт Settings), возможности поиска препаратов в интернет-справочнике и локально (контракт Search), процессов интеграции с внешними системами (контракт Share). Новые элементы управления и поддержка жестов позволяет мне реализовать решение для неподготовленного пользователя (коими врачи и являются в большинстве своём). Реализация асинхронных операций делает UI реально отзывчивым без дополнительных усилий со стороны разработчика.

В итоге - позитива много больше. Программа будет доведена до релиза. Процесс разработки - чистое удовольствие. Масса примеров, демонстрирующих основные новшества платформы WinRT.

=====================

Еще высылаю дополнительную информацию (ниже). Сейчас программа переходит в стадию тестирования, но релиз будет только летом. Как любая медицинская задача, приложение должно пройти апробацию у медицинских работников, а это не быстро. Пока что вырисовывается всё довольно красиво. По-поводу проблем, описанных ниже я веду активные консультации с Microsoft и другими разработчиками. Может быть, что-то можно будет сделать элегантнее, чем сейчас. На ARM ещё не тестировали, но это дело ближайшего времени.


Вот тут я прилагаю фрагмент присланного описания программ


Что ж очень интересно. Мне кажется, что тема разработки ПО под Windows 8 очень интересная. Собственно, именно от появления прикладного ПО во многом зависит успех любой ОС.

Но вот на какой важный вопрос Слава все же не ответил:
1) Зачем понадобилость присать приложения и под Win86 и под WinRT (ARM)
2) Насколько разработка и приложение Win86 отличаются от такого же под WinRT? Это одно и тоже приложение (с разными интерсфейсами) или два разных приложения)
3) Если ли различия между WinRT для x86 и WinRT для ARM?

Будем ждать ответы и будем следить за темой.

Комментариев: 1

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии

05.03.2014 09:24:59

1) Зачем понадобилось писать приложения и под Win86 и под WinRT (ARM)


Первоначально планировалось написать не Win86, а просто Desktop - приложение (.NET, работающий и на x86 и на x64 платформах). Должно было работать на x86 и x64 версиях Windows (Vista, Win7, Win8). Просто для того, что бы охватить больше пользователей. Win8 ещё не очень распространена. Но такой красоты как в Windows Store-приложениях, на предыдущих платформах добиться трудно. Есть несколько сторонних фреймворков, но всё же это скорее подражание, чем полноценная замена. Кроме того, как я понимаю, в Windows Store можно полноценно (с возможностью продажи) разместить только WinRT приложение, а это значит, что обычное .net приложение будет трудно цивилизованно распространять и монетизировать.

2) Насколько разработка и приложение Win86 отличаются от такого же под WinRT? Это одно и тоже приложение (с разными интерфейсами) или два разных приложения)

Desktop и Windows Store - разные приложения. Можно написать общую часть в виде так называемой Portable Class Library, но пользовательский интерфейс и платформа-зависимые компоненты (для работы с файловой системой, например) всё-равно нужно писать отдельно для каждой платформы. Не смотря на то, что можно использовать язык разметки XAML на обеих платформах, набор элементов управления разный и есть отличия в реализации. Даже для одних и тех же элементов управления простым копирование кода можно воспользоваться не всегда.

3) Есть ли различия между WinRT для x86 и WinRT для ARM?


В теории, не должно быть никаких различий в разработке приложения Windows Store для всех поддерживаемых платформ. В среде разработки Visual Studio 2013 есть специальная настройка Platform Target. В моём проекте это - Any Cpu. Есть также варианты (x86, x64, ARM).

Если используются платформ-зависимые технологии (sql-lite, например), то нужно собрать несколько версий программы - для каждой платформы отдельно. Но именно собрать, а не написать заново. Просто будет не один, а несколько сборок, загружаемых в Windows Store. Вот здесь описано (http://stackoverflow.com/questions/11169315/how-can-i-deploy-sqlite-in-winrt-devices-with-an-arm-cpu):

"If you have a native component, you will submit multiple versions for the Store and the customer will download the correct version for their architecture."

Я не использую никаких таких компонентов и всё должно работать везде, но своими глазами я увидел, что нет различий на x86 и x64. Уверен, что и на ARM заработает без переделок, но проверить всё же нужно.