[Add 4] crossplatform .net

56
РАЗРАБОТКА КРОССПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ НА .NET/C# СТАНИСЛАВ СИДРИСТЫЙ [email protected] touchin.ru @sidristij

description

Мое выступление на ADD-4. Все материалы, ровно как и текст выступления доступны по ссылке: bit.ly/xamarin-add4

Transcript of [Add 4] crossplatform .net

Page 1: [Add 4] crossplatform .net

РАЗРАБОТКАКРОССПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ НА .NET/C#

СТАНИСЛАВ СИДРИСТЫЙ

[email protected]

touchin.ru

@sidristij

Page 2: [Add 4] crossplatform .net

3ГОДА

20+ПРИЛОЖЕНИЙ

45ЧЕЛОВЕК

Page 3: [Add 4] crossplatform .net

Stream

дочерняя

МТС

Мегалабс

дочерняя

Мегафона

Coinkeeper,

I-FREE

Page 4: [Add 4] crossplatform .net
Page 5: [Add 4] crossplatform .net

КАКИЕ ПРОБЛЕМЫ РЕШАЕТ

КРОССПЛАТФОРМЕННОСТЬ?

Page 6: [Add 4] crossplatform .net

ПРОБЛЕМЫ РАЗРАБОТЧИКА

― Точно ли весь код под каждую платформу имеет единый flow?

― Нигде ли не разошлись по API?

― Синхронизировались ли по схеме БД

― Юнит-тесты на каждую платформу. Не разошлись ли тесты?

― Пришел RFC на БД? Изменился API?? Переписывать тесты???

bit.ly/xamarin-add4

Page 7: [Add 4] crossplatform .net

ПРОБЛЕМЫ МЕНЕДЖМЕНТА

― Необходимо координировать венегрет из Java/Objective-C/...

― Вылетел разработчик? Необходимо найти под ту же платформу

― Заказчик платит за один и тот же код много раз

― Изменили внешнее API? Все переписываем N раз. Fix-price?

― Сделали готовый продукт под X. Заказчик просит “то же

самое, только под Y”. Не возможно просто взять наработки и

использовать

bit.ly/xamarin-add4

Page 8: [Add 4] crossplatform .net

ВАЖНОСТЬ ВЫБОРА ПРАВИЛЬНОГО ИНСТРУМЕНТА.

Page 9: [Add 4] crossplatform .net

КОГДА РАЗРАБОТЧИК СЧАСТЛИВ?

― На работе интересно, коллектив гордится

― Дети первые в рейтингах WOT, вышел Half Life 3

― Жена понимает, когда говоришь «отрефакторил»

― ???

bit.ly/xamarin-add4

Page 10: [Add 4] crossplatform .net

КОГДА РАЗРАБОТЧИК СЧАСТЛИВ?

― На работе интересно, коллектив гордится

― Дети первые в рейтингах WOT, вышел Half Life 3

― Жена понимает, когда говоришь «отрефакторил»

― Правильные инструменты разработки!

bit.ly/xamarin-add4

Page 11: [Add 4] crossplatform .net

ВЛИЯНИЕ НА РАЗРАБОТКУ

ДЕШЕВО

КАЧЕСТВЕННО

БЫСТРО

ДЕШЕВО

Плохие – мешают жить Хорошие – улучшают продукт

КАЧЕСТВЕННО

БЫСТРО

bit.ly/xamarin-add4

Page 12: [Add 4] crossplatform .net

РАЗЛИЧИЯ МЕЖДУ ПЛАТФОРМАМИ.

Page 13: [Add 4] crossplatform .net

ДЕСКТОПНЫЕ ПРИЛОЖЕНИЯ

― Работа с клавиатуры и “мышью”

― Устойчивый интернет

― Безграничные возможности железа

― Приложения рассчитаны на физически большие экраны

― Однако на разных ОС можно создать единый интерфейс

bit.ly/xamarin-add4

Page 14: [Add 4] crossplatform .net

МОБИЛЬНЫЕ ПРИЛОЖЕНИЯ

― Контент “на кончиках пальцев”

― Плохое интернет-соединение

― Медленное железо (неизвестные характеристики на Android)

― Короткие сессии

bit.ly/xamarin-add4

Page 15: [Add 4] crossplatform .net

НАТИВНЫЙ UI

― Привычен пользователю платформы

― Работает быстро

― Дает богатые возможности

― Везде различен :(

bit.ly/xamarin-add4

Page 16: [Add 4] crossplatform .net

КРОССПЛАТФОРМЕННЫЙ UI

― Везде выглядит одинаково

― Одинаково непривычен для всех пользователей

― Зачастую работает медленно

― Не используются уникальные особенности

платформы

bit.ly/xamarin-add4

Page 17: [Add 4] crossplatform .net

ВЫБИРАЕМ ИНСТРУМЕНТ ДЛЯ КРОССПЛАТФОРМЕННОЙ РАЗРАБОТКИ.

Page 18: [Add 4] crossplatform .net

КАТЕГОРИИ CROSS-PLATROM TOOLS

— Applications Factories

— Web App Toolkits

— Cross-Platform IDEs

bit.ly/xamarin-add4

Page 19: [Add 4] crossplatform .net

УЗНАВАЕМОСТЬ СРЕДИ СРЕДСТВ РАЗРАБОТКИ

bit.ly/xamarin-add4(c) by research2guidance

Page 20: [Add 4] crossplatform .net

ИСПОЛЬЗУЮТ В РАЗРАБОТКЕ

•PhoneGap – 2005

•Adobe Air – 2008

•Unity 3D – 2008 (iPhone/iPad)

•Titanium – 2008

•jQuery Mobile – 2010

•Sencha – 2010

•Marmelade – 2011

•Xamarin - 2011

•Qt Creator – 2012 (не mobile)

bit.ly/xamarin-add4(c) by research2guidance

Page 21: [Add 4] crossplatform .net

ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ

“The tools with the highest user satisfaction for the access to pre-installed apps are Xamarin, AIR and Corona SDK.”

“The tools with the highest usage of pre-installed apps are Titanium, PhoneGap and Xamarin.”, - research2guidance

(c) by research2guidance bit.ly/xamarin-add4

Page 22: [Add 4] crossplatform .net

ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ

“In the benchmarking, users of Unity 3D and Xamarin could realize the highest time-savings.

In contrast, the lowest time savings have been realized by Marmalade and Titanium users.” - research2guidance

bit.ly/xamarin-add4(c) by research2guidance

Page 23: [Add 4] crossplatform .net

ЕДИНЫЙ КОД — ВЕЗДЕ.

XAMARIN.

Page 24: [Add 4] crossplatform .net

XAMARIN

―Позволяет разработывать iOS, Mac

OS, Linux, Windows и Android приложения на

C#, используя почти всю мощь .Net Framework

―Имеет множество тулов для удобства разработки

bit.ly/xamarin-add4

Page 25: [Add 4] crossplatform .net

XAMARIN – НЕ НОВАЯ ПЛАТФОРМА

― Основана на mono runtime

― Которая развивается с 2001 года

― Свободная реализация ECMA-334 (C#) и ECMA-335 (CLI)

― Основатель – Miguel de Icaza (GNOME, mc)

― Исходники, комьюнити, свой стор, партнеры,…

bit.ly/xamarin-add4

Page 26: [Add 4] crossplatform .net

XAMARIN. НЕМНОГО О КОМПАНИИ

―Продает и осуществляет поддержку MonoTouch / MonoDroid

―Цены от $299 для Indie (раньше было $399, приятно)

―На сайте компании есть все для старта и работы

―Огромное количество примеров на github.com/xamarin

―Выпущено несколько книг

bit.ly/xamarin-add4

Page 27: [Add 4] crossplatform .net
Page 28: [Add 4] crossplatform .net

MONOTOUCH

―Mono для iOS c AOT компиляцией и bindings к API

―Код – на C#, UI – родной, через удобные обѐртки

―Обертки делают API iOS понятным на C#

―Среда разработки – Xamarin Studio (MAC, Windows) + XCode

bit.ly/xamarin-add4

Page 29: [Add 4] crossplatform .net

КОМПИЛЯЦИЯ В MONOTOUCH

―Все как в настоящем .NET, компилируется в сборки

―Поэтому теоретически можно заюзать любой язык .NET (сейчас можно

F#, но есть Nemerle, Ruby, Python, JS)

―IL превращается в машинный код при помощи AOT копиляции

―Программа воссоединяется с Mono Runtime, GC, BCL, …

bit.ly/xamarin-add4

Page 30: [Add 4] crossplatform .net

КОМПИЛЯЦИЯ

bit.ly/xamarin-add4

Page 31: [Add 4] crossplatform .net

ЛИНКОВКА

―Когда все линкуется, берется только то, что используется

―Если Вам все-таки что-то необходимо, но напрямую не

используется, можно пометить атрибутом

―Сильно уменьшает размер приложения

―Чем больше используем, тем больше приложение

bit.ly/xamarin-add4

Page 32: [Add 4] crossplatform .net

ЧТО ОБЩЕГО С НАТИВНЫМ API

―Абсолютно идентичная работа с UI

―AppDelegate, UIWindow, ViewControllers, ... на iOS

―Activities, Fragments, … на Андроиде

―Платформенное API с железом такое же как родное

―Отличается только то, что можно C#-изировать

bit.ly/xamarin-add4

Page 33: [Add 4] crossplatform .net

ОТЛАДКА

―Честная отладка, с breakpoints

―Можно просматривать в Watches, Immediate Window

―Наводить курсор на переменные

bit.ly/xamarin-add4

Page 34: [Add 4] crossplatform .net

GARBAGE COLLECTOR

―Агрессивно настроен

―В Андроиде имеем GREFs

―В играх, говорят, когда много объектов и начинает притормаживать

bit.ly/xamarin-add4

Page 35: [Add 4] crossplatform .net

Среда разработки – Xamarin Studio

Page 36: [Add 4] crossplatform .net

iOS UI

Page 37: [Add 4] crossplatform .net

Android UI

Page 38: [Add 4] crossplatform .net

ПРОМЕЖУТОЧНЫЕ ИТОГИ

―Увеличили скорость разработки в 2 раза

―Получили общий код между платформами – до 60-80%%

―Расшарили код между приложениями – пишем еще быстрее

―Общий код = общие баги и меньшее время на стабилизацию

―Если у вас есть библиотка с общим кодом (PCL), достаточно ее отдать

нам: мы просто ее подтянем и будем использовать

bit.ly/xamarin-add4

Page 39: [Add 4] crossplatform .net

БУДУЩЕЕ ПЛАТФОРМЫ

―Подключение AOP средств разработки ускорит внедрение сквозной

функциональности в разы (например Google Analytics за 5 минут)

―TestCloud – автоматизированное тестирование на всех моделях

телефонов

―Улучшение поддержки IntelliSense

bit.ly/xamarin-add4

Page 40: [Add 4] crossplatform .net

ВОПРОСЫ!

Fb: @touchinstinct

Twitter: @sidristij, @touchin_ru

Все материалы доклада: bit.ly/xamarin-add4

Email: [email protected]

touchin.ru

Page 41: [Add 4] crossplatform .net

РАЗРАБОТКАКРОССПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ НА .NET/C#

СТАНИСЛАВ СИДРИСТЫЙ

[email protected]

touchin.ru

@sidristij

Page 42: [Add 4] crossplatform .net

КРАТКОЕ СОДЕРЖАНИЕ

ПРЕДЫДУЩЕЙ ЧАСТИ

Page 43: [Add 4] crossplatform .net

О ЧЕМ УСПЕЛИ ПОГОВОРИТЬ• Определили проблемы разработчиков и менеджмента

Основная проблема в множественном дублировании кода ведет к множетсвенным затратам средств и времени и

ухудшению качества

• Выявили требуемый функционал, чтобы писать быстро и мало

Все пишут на одном языке, общий функционал=один проект, хорошая IDE, UI пишется под каждую ось

• Изучив тонны материала, выбрали подходящую технологию

Из всей статистики нам подходят: Unity 3D для игр и Xamarin для всего остального

• Изучили, как она работает и что она дает

Есть практически все что требуется разработчику и дает все что хочет менеджмент

bit.ly/xamarin-add4

Page 44: [Add 4] crossplatform .net

КРОСС-ПЛАТФОРМЕННАЯ

МОБИЛЬНАЯ РАЗРАБОТКА

Page 45: [Add 4] crossplatform .net

It's Demo Time

Code Samples: bit.ly/xamarin-add4

Page 46: [Add 4] crossplatform .net

КРОСС-ПЛАТФОРМЕННАЯ

РАЗРАБОТКА ПОД DESKTOP

Page 47: [Add 4] crossplatform .net

X-PLATFORM WIDGET TOOLKIT

• Кросс-платформенный UI для Windows, Linux, Mac

WPF на Windows, GTK+ на Linux и Mac, Cairo на Mac

• Является сильным конкурентом wxWidgets, Qt

wxWidgets = общий набор контролов с платформ, Qt = эмуляция вида через темы,

XWT = MVC + Gtk box model + Cairo drawing API

• Поддерживается и разрабатывается Xamarin

• Xamarin Studio основана на XWT

проект постоянно поддерживается, баги исправляются, добавляется новый функционал

bit.ly/xamarin-add4

Page 48: [Add 4] crossplatform .net

It's Demo Time

Code Samples: bit.ly/xamarin-add4

Page 49: [Add 4] crossplatform .net

ДЕЛАЕМ ВЫВОДЫ

Page 50: [Add 4] crossplatform .net

МИНУСЫПотираем ручки

―Xamarin Studio прекрасна, но имеет проблемы с отладчиком

―Bindings не всегда строятся правильно

―Runtime неплохо нагружает приложение (+2-3 метра)

―Немного страдает производительность

―Нельзя Emit'тить

―Нет Generic Virtual Methods и p/invokes в Generic Types

―Встречаются баги

bit.ly/xamarin-add4

Page 51: [Add 4] crossplatform .net

ПЛЮСЫ

―Шарится много кода между всеми .NET платформами

―Не обязательно знать Objective-C и Java

―Проще и быстрее разработывать (особенно общие части)

―Тонны библиотек для .NET на github, codeplex, …

―Тонны нативных библиотек, которые можно юзать

―Огромное сообщество .NET, и быстро растущее (пол-миллиона)

сообщество Xamarin

bit.ly/xamarin-add4

Page 52: [Add 4] crossplatform .net

ПЛЮСЫ ДЛЯ КОМПАНИИ

―Меньше программистов для тех же задач

―Можно хантить как с iOS/Android так и .NET разработчиков, уставших

от корпоративного сектора

―Сокращение стоимости разработки конечного продукта и как

следствие – довольные заказчики

―Огромноый процент переиспользования в последующих проектах

ведет к еще большему снижению стоимости

bit.ly/xamarin-add4

Page 53: [Add 4] crossplatform .net

ЧТО СО СТАБИЛЬНОСТЬЮ?

―Компания растет с каждым днем

―Microsoft пишет для Xamarin код поддержки в Visual Studio/Azure

―Блог Microsoft CLR впервые написал про другую компанию: поддержка

не-Microsoft PCL

―Множество MSDN плюшек для владельцев лицензий Xamarin

―Запустили University, где по прохождении курса выдают MVP

bit.ly/xamarin-add4

Page 54: [Add 4] crossplatform .net

ЧТО СО СТАБИЛЬНОСТЬЮ?

―Под (iOS+Android) PCL переводятся крупные open-source проекты

―Components Store постоянно пополняется новичками

―Google среди них также присутствует

―Как компания с самым богатым опытом на территории ex-USSR мы

рады что работаем именно в этом стеке

bit.ly/xamarin-add4

Page 55: [Add 4] crossplatform .net

ЛИЧНЫЙ ОПЫТ И ВПЕЧАТЛЕНИЯ

―Опыт прекрасен, отказываться не собираемся никогда

―CoinKeeper… Да везде: быстрее кодим, меньше багов

―Общая логика: не пишем все заново. 30-60%% шарим

―Когда вышла iOS 7, API с Ксамарина был готов практически сразу

bit.ly/xamarin-add4

Page 56: [Add 4] crossplatform .net

ВОПРОСЫ!

Fb: @touchinstinct

Twitter: @sidristij, @touchin_ru

Все материалы доклада: bit.ly/xamarin-add4

Email: [email protected]

touchin.ru