Руслан Садовников

Preview:

Citation preview

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

Recommended