Руслан Садовников
TRANSCRIPT
1
Apps4AllFORUM 2014
apps4all.ru
PARALLELS CONFIDENTIAL – DO NOT DISTRIBUTE
Руслан СадовниковВедущий программист-разработчик
Parallels Access Добавляем кроссплатформенности iOS приложению
3
APPLIFY YOUR UNIVERSE!
PARALLELS ACCESSПозволяет использовать компьютерные приложения на
iPad так, как будто они были для него разработаны
4
История возникновения Parallels Access
2008 – Первая версия Parallels Mobile
• «Реактивный» продукт — реакция на
происходящее на рынке
• Дополнение к Parallels Desktop 4 for Mac
• Базовая функциональность для работы с
виртуальными машинами
• Поддержка iPhone
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
5
История возникновения Parallels Access
2010 – Большой апгрейд Parallels Mobile
• Эволюция текущего продукта
• Компонент Parallels Desktop 6 for Mac
• Удаленное управление виртуальными
машинами
• Поддержка iPhone и iPad
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
6
История возникновения Parallels Access
2011 – Обновление Parallels Mobile
• Эволюция текущего продукта
• Компонент Parallels Desktop 7 for Mac
• Удаленное управление виртуальными
машинами
• Поддержка iPhone и iPad
• Удаленное управление удаленным
хостом (Mac-only)
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
7
История возникновения Parallels Access
2012 – Начата разработка новой версии Parallels Mobile с учетом:
• Новых идей• Текущих проблем рынка• Пожеланий пользователей• Потребностей рынка• Позиций конкурентов
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
8
2013 - Релиз Parallels Access 1.0
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
9
Пресса
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
"In short, Access does a lot more than just blast your computer’s screen onto the iPad’s. It truly does “appify” your computer’s programs. It creates a smooth, logical hybrid of iPad and “real” computer, in away that the VNC apps do not. It works amazingly well." – David Pogue, New York Times (US)
“It isn't the only iPad app that can remotely control computers, but of the ones I've tested, it does the best job of treating the computer programs it accesses as if they were iPad apps, without sacrificingfunctionality.” – Walt Mossberg, The Wall Street Journal (US)
400+ статей о Parallels Access300+М потенциальных просмотров89% позитивная реакция (10% нейтральная)
10
Промо в App Store
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
11 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Все начинается с идеи и осознания проблемы...
12
Что же мы имеем
• Клиент только под iOS
• Клиент – разработчик аутсорсинговая кампания
• Server + SDK(C++) – разработчик Parallels
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
13 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
14
Пишем с «нуля»?
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Берем готовое решение?
15
iOS - причешем? Android - напишем рядом?
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
16
Волевое решение
• Выделяем бизнес-логику – RemoteClientCore
• RemoteClientCore пишем на С++
• Добавляем SDK по вкусу
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
17
Protocol Buffers — язык описания данных. Google
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Описываешь структуру данных в .proto-файле
http://ru.wikipedia.org/wiki/Protocol_Buffers
message Car { required string model = 1; enum BodyType { sedan = 0; hatchback = 1; SUV = 2; } required BodyType type = 2 [default = sedan]; optional string color = 3; required int32 year = 4; message Owner { required string name = 1; required string lastName = 2; required int64 driverLicense = 3; } repeated Owner previousOwner = 5;}
18
Protocol Buffers — язык описания данных. Google
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Компилируешь под свою платформу
http://ru.wikipedia.org/wiki/Protocol_Buffers
Большое кличество компиляторов: C++, Java, Python, С#, Action Script, Clojure, Common Lisp, D, Erlang, Go, Haskell, JavaScript, Lua, Matlab, Mercury, Objective-C, OCaml, Perl, PHP, Python, Ruby, Scala, Visual Basic, Delphi и т.д.
Результатом будет класс, который содержит простейшие методы доступа ко всем полям типа get/set, а также методы для сериализации и десериализации вашей структуры данных в/из массива байтов.
19
Protocol Buffers — язык описания данных. Google
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
http://ru.wikipedia.org/wiki/Protocol_Buffers
• Простота использования
• Хорошая документация
• Поддержка большого количества языков
• Обратная совместимость
20
ZeroMQ — библиотека обмена сообщениями. iMatix
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
http://zguide.zeromq.org/
ZeroMQ обеспечивает взаимодействие между потоками выполнения. Это взаимодействие максимально унифицировано для нитей, процессов, локальных и глобальных сетей. Ключевой метод — передача информации с помощью сообщений, вместо обеспечения прямого доступа в ней. Для этого внутри библиотеки ZeroMQ используются неблокирующие алгоритмы и структуры данных en.wikipedia.org/wiki/Non-blocking_algorithm, а прикладной программист всего лишь использует ее элегантный API.
21
ZeroMQ — библиотека обмена сообщениями. iMatix
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
http://zguide.zeromq.org/
• Проста в использовании
• Хорошо написана
• Отлично документирована
• Великолепная производительность
• Поддержка большого количества языков
• Отзывчивое комьюнити
22
Результат
• Бизнес-логика отделена от платформенного кода
• Простота тестирования этой логики
• Скорость и простота реализации
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
23
Подводные камни
• Все API должно быть описано в Protocol Buffers
• Все API асинхронно
• Количество генеримого кода(методов) из *.proto
• Сериализация/десериализация Protocol Buffers
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
24
Q&A
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE