Pull to refresh
0

За кулисами MixRadio: от начала разработки до платформы Nokia X

Reading time 5 min
Views 5.9K
Пятница, Хабр!
Как вам уже известно в рамках барселонской выставки MWC 2014 мы представили новую линейку смартфонов Nokia X с целой экосистемой приложений от Microsoft и Nokia.



Одним из плеяды приложений на платформе Nokia X стал хорошо зарекомендовавший себя на смартфонах Lumia сервис потокового воспроизведения музыки MixRadio. И сегодня мы хотим поделиться с вами историей разработчиков о том, как они привели этот сервис на платформу Nokia X и других деталях, скрытых от глаз простого пользователя.

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

Создание общего кода для приложений MixRadio под различные платформы было нашей основной и долгосрочной задачей в течение всего прошлого года. Когда мы только начинали работать над расширением сервиса, перед нами встал вопрос о том, как максимально рационально и эффективно распределить усилия. Мы придумали план действий, за основу которого была взята архитектура, созданная в результате работы над приложением MixRadio для Windows 8. Данную архитектуру мы представили на конференции Build 2013.

Зачем был нужен общий код?


Так почему же мы так стремимся к тому, чтобы все наши приложения использовали один и тот же код? В первую очередь потому, что MixRadio должен располагать идентичной функциональностью и удобством использования на всех устройствах, а именно на устройствах линейки Lumia, смартфонах Asha, компьютерах и планшетах на Windows 8.1, веб-версии Mixrad.io, а теперь ещё и на гаджетах линейки Nokia X.

Сам сервис Nokia MixRadio — это своего рода ваша личная радиостанция, доступ к которой можно получить с любого устройства. Это означает, что создавая приложение MixRadio для новой платформы, мы наделяем его той базовой функциональностью, которая присутствует в ранее созданных приложениях для других платформ. Именно эта основа приложения и может быть реализована благодаря общему коду.

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

Каждый раз, когда мы создавали новое приложение и понимали, что у приложения есть потенциал для развития общего кода, нам приходилось вставать перед выбором. Что правильней: извлечь уроки прошлых разработок и создать «правильный» новый код с нуля или попытаться повторно использовать код, который у нас уже имеется и продолжать вносить постепенные улучшения путем тщательного рефакторинга?



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

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

Использование общего кода также позволяет упростить процесс последующей поддержки приложений. Хотите изменить работу той или иной функции приложения? Вместо того, чтобы привлекать несколько отдельных команд разработчиков, было бы легче изменить код в одном месте. Все приложения, основанные на общем коде будут получать обновления одновременно. То же самое относится и к исправлению ошибок.

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

Общая архитектура MixRadio



Существующая архитектура MixRadio


Целевая архитектура MixRadio

Целевая архитектура приложений MixRadio основана на шаблоне проектирования MVVM. Она была выбрана нами, поскольку позволяет использовать столько общего кода, сколько это вообще возможно между всеми нашими приложениями. MVVM облегчает разделение пользовательского интерфейса (UI) от бизнес-логики. Это означает, что мы можем адаптироваться под различные платформы сохраняя основу приложений единой для всех приложений.

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

Портативные библиотеки классов (PCLS) позволяют делиться ключевыми бизнес-логикой на разных платформах. Именно поэтому весь наш общий код создается в PCLS.

История разработок


Windows Phone

Началом отсчета в истории MixRadio можно назвать разработку приложения Nokia Music для Windows Phone 7. Правда, сначала мы не задумывались ни о каком общем коде — он появился только тогда, когда мы создавали приложение Nokia Music на Windows Phone 8. Мы использовали некоторые общие представления (views) и модели представления (ViewModels) при помощи основных связанных файлов в Visual Studio.

Windows 8

Когда мы начали разработку приложения для Windows 8, общая архитектура уже была определена. В качестве первого шага на пути к общей архитектуре был создан единый программный уровень. Уже тогда он отличался множеством преимуществ общей архитектуры.

Общий слой представлял собой портативную библиотеку классов, одновременно поддерживающую платформы Windows Phone 7/8 и Windows 8.

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

Nokia X

Появление семейства смартфонов Nokia X позволило нам сделать шаг вперед и выйти за рамки Windows-платформ. И в этом нам помог Xamarin www.xamarin.com, фреймворк для кроссплатформенной разработки мобильных приложений с использованием языка C#. Подробнее о нем вы можете прочитать в этом посте.

Xamarin обеспечивает фантастическую поддержку среды выполнения и сопутствующих инструментариев .NET на альтернативных (не-Microsoft) платформах. Это означает, что наши команды разработчиков могут создавать новые приложения для новых платформ используя привычные нам инструменты разработки и общий код, который уже задействован в других приложениях. Кроме того, благодаря недавно анонсированному партнерству с Microsoft, Xamarin добавила в свой фреймворк поддержку PCLS. Это позволило добиться ещё более удобной работы с нашей целевой архитектурой и общими библиотеками.

Проведя небольшое исследование, мы выбрали MvvmCross в качестве основного фреймворка для MVVM. MvvmCross стал для нас заключительной частью головоломки при перенесении MixRadio на новую платформу. Он помог абстрагироваться от специфики платформы, тем самым решив одну из основных проблем в кросс-платформенной разработке. MvvmCross позволил в полной мере реализовать функциональность MixRadio в приложении для Nokia X, сохранив при этом все преимущества новой платформы.

Следующие шаги


Последним шагом на нашем пути к общей архитектуры станет замена унаследованного кода в приложениях для Windows Phone и Windows 8 путем удаления его из существующих общих PCL-библиотек и интеграции с общей базой кода. После выпуска приложения для Nokia X, это является следующей нашей главной задачей и мы уже приступили к работе.

API


Для разработчиков, планирующих использовать Xamarin для создания приложений для платформы Nokia X, сообщаем хорошую новость — вы можете использовать наш инструментарий C # SDK или интерфейс REST API для интеграции MixRadio в ваши приложения.

Tags:
Hubs:
+9
Comments 8
Comments Comments 8

Articles

Information

Website
www.microsoft.com
Registered
Founded
Employees
1,001–5,000 employees
Location
Финляндия