Microsoft Lumia
Компания
85,67
рейтинг
7 марта 2014 в 16:44

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

Пятница, Хабр!
Как вам уже известно в рамках барселонской выставки 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 в ваши приложения.

Автор: @nokiaman
Microsoft Lumia
рейтинг 85,67
Компания прекратила активность на сайте

Комментарии (8)

  • +9
    Потрясающе. В посте про приложение для Андроид ни слова про Андроид.
    • 0
      В тегах есть.
      • –1
        Просто я пытаюсь понять, до какой степени надо было извернуться, чтобы написать в блог «разработка под Windows Phone», про «нокию», и при этом как-нибудь кое-как сделать вид, что это не Андроид. Впрочем, нокии это уже всё равно не поможет, Элоп предпродажную подготовку выполнил на 5+.
        • +2
          Nokia, вероятно, просто по юридическим причинам не имеет права использовать торговую марку Android, которая по условиям Google может использоваться только при прохождении тестов CTS, которые проверяются самой Google.
          То есть, либо Nokia тесты не проходила вообще, либо не прошла по цензу Google, но использовать торговую марку нельзя, это может стать основанием для иска. То есть, заявить, что Nokia X построена на Android, или, что серьёзнее, совместима с Android, просто так нельзя.
          • 0
            Nokia прямо на анонсе громко сказала, что Nokia X построена на Android OSP, да и в шапке этого блога крупными буквами написано «для Android-приложений».
            • 0
              Да, вы правы.
    • 0
      Пост вроде бы про кроссплатформенную разработку. Ну, так задумывался.
  • +3
    А расскажите подробнее про MixRadio. Как там обстоят дела с персонализацией радио потока? Интересно было бы узнать об алгоритмах в основе радио.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка