Windows/Phone 8.1–разработка для обоих. Часть 1

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

Для начала подчеркнем некоторые основные вещи:

  • Это обновление будет доступно всем существующим Windows Phone 8 пользователям и будет поставляться предварительно установленной на новых телефонах;
  • Она работает с существующими приложениями/играми, запущенные на 8.0 сегодня.
  • Там много новых функциональных возможностей конечного пользователя, которое нет смысла описывать здесь…;
  • Разработчик может продолжать работать на 8.0 приложениях/играх и публиковать новые версии в магазине в уверенности, что приложение будет продолжать работать на всех 8.0 и 8.1 устройствах.

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

 

Куда мы пришли?

Всю ситуацию на обеих платформах можно обрисовать рисунком ниже

clip_image002

Это данные с портала  “Microsoft by the Numbers” и я думаю некоторых из вас они точно удивили.

Учитывая, что у нас есть 2 платформы: «Windows» и «Windows Phone», то было бы разумно ожидать, что будет в значительной мере равное количество приложений на них. Но, есть 100 000 разрыв между двумя магазинами. Некоторые причины, из-за которых это могло случиться:

  • Магазин для Windows Phone существует дольше магазина для Windows 8.
  • Разработчики обычно подразумевают телефоны, когда думают о разработке под мобильные платформы, а не о планшетах/ноутбуках и т.п.. Если верить статистике, то только 12% разработчиков думают не только о телефонах, когда начинают разрабатывать свое приложение.

Я думаю что все сводиться к нескольким причинам:

clip_image004

Приложение в разных, хоть и похожих, платформах используются тоже по-разному. Так же приложения находятся в двух разных магазинах. Ну и конечно же, это два разных приложения, а соответственно больше работы и денег будет потрачено на них.

 

Телефоны “другие”

clip_image006

Лично мой телефон используется совершенно по-другому, чем планшет. Мой телефон в значительной степени всегда со мной, он всегда включен. Я не люблю его заряжать, но тем не менее приходиться это делать чуть ли не каждый день, в зависимости от интенсивности использования.

Планшеты очень разные, они довольно таки редко покидают ​​дом, включаются и выключаются часто.

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

Интересно взглянуть на пару приложений и посмотреть, как они проводят эту разницу между Windows/Windows Phone…

На примере рассмотрим официальное приложение Twitter:

clip_image008

OneNote:

clip_image010

Мы с вами видим совершенно разные приложения во втором случае (т.е. они действительно мало чем похожи) и практически  одинаковые в первом. И есть действительно очень много приложений в wp маркете, которые очень сильно отличаются от своих “собратьев” в windows store. И здесь очень сложно найти какой-либо правильный путь…в действительности все будет зависеть от потребностей пользователя и случаев, в которых он будет пользоваться тем или иным функционалом.

Но есть и еще одно существенное отличие между ними…

 

Разные платформы

Все кто работали с обеими платформами могут согласиться со мной, что между ними действительно большое отличие.

Windows Phone для разработчика можно отобразить как:

clip_image012

UI слой здесь я назвал «Silverlight XAML», потому что Silverlight рендеритсяг на Windows Phone 8.0. Это интерфейс может быть создан в XAML или он может быть создан в коде.

У приложения есть некоторый код, который так или иначе связывает этот слой пользовательского интерфейса с нижними. Основным API для Windows Phone 8.0 приложения я назвал «Silverlight. NET», который представляет собой подмножество .NET Framework’а, специально разработанного для “телефонных” приложений.

Когда вы смотрите на платформу Windows, 8.1, складывается совершенно другое впечатление:

clip_image014

Во-первых, здесь есть более широкий выбор — разработчик может создавать собственные приложения, используя HTML/CSS как слой пользовательского интерфейса или XAML. Они могут смешивать и сочетать UI слой с кодом, написанным на JavaScript/C++/.NET.

В основе этого кода, в большинстве случаев, WinRT, который в значительной степени обеспечивает всех разработчиков доступом к файловой системе, к камере или сети и т.п. Есть также небольшое количество Win32 API, доступны разработчику, но большинство не обязаны их использовать.

Что общего между ОС Windows 8.1/Phone 8.0, подчеркивает диаграмма ниже:

clip_image016

.NET разработчики могут создавать портативную библиотеку классов, которую можно использовать как на Windows 8.1/Phone 8.0, но разработчик несколько ограничен и код, который можно встроить в эту библиотеку, может содержать только ссылку на подмножества API, которые действительно являются общими для обеих платформ; а это подмножество небольшое .

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

Разработчики, работающие с шаблоном MVVM относительно хорошо себя чувствуют. Им необходимо сделать различные отображения (UI) для Windows/Phone и обеспечение связанными классами (ViewModels),  с помощью которых осуществляется привязки данных.

clip_image018

С помощью инверсии управления и зависимостей реализуются сервисы по отношению к разным платформам. В приведенной выше диаграмме, это услуги представлены в нижней части слева и справа от диаграммы

 

Пример

clip_image020

Как вы видите есть Windows 8.1 и Windows Phone 8.0 приложение и кроссплатформенная портативнаz библиотека классов, ссылка на которую есть в обоих приложениях. Большая часть кода в этом простом решении находится в кросс-платформенной библиотеки и разбита на модели, вьюмодели и сервисы.

clip_image022

Приложение использует 1 класса модели, 4 портативные вьюмодели. В свою очередь, они полагаться на 3 сервиса:

  • Служба для доступа к Flickr (IFlickrService)
  • Служба для загрузки фото и сохранения его в библиотеку фотографий на устройстве (IPhotoSavingService)
  • Служба для навигации (INavigationService).

Из этих 3 услуги, сервис Flickr можно сделать портативным, т.к. он просто использует портативный класс HttpClient и десериализацию данных JSON (с помощью портативной библиотеки JSON.NET).

Две других услуг будут переносимыми тоже, но нужна конкретная реализация для каждой платформы.

clip_image024

Каждый проект также определяет свой собственный код запуска в виде файла App.xaml и App.xaml.cs и каждый проект предоставляет свои собственные View используя XAML.

clip_image026

Если посмотреть какое-либо отображение (View) — оно состоит полностью их xaml и привязки данных.

clip_image028

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

 

В итоге

Главной целью этой статьи было показать как сейчас обстоят дела с данными платформами и разработками под них. В следующей части мы уже наконец-то доберемся до новых вещей, которые совсем недавно презентовали на конференции Build.

 

Ссылка на источник: Windows/Phone 8.1–Building for Both, Part 1

 

Реклама
Tagged with: , , , , , ,
Опубликовано в Development, Windows 8.1
One comment on “Windows/Phone 8.1–разработка для обоих. Часть 1
  1. […] Данный пост является продолжением первой части. […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: