Разработка кроссплатформенных приложений на .Net / C#

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

description

Доклад Станислава Сидристого на конференции Application Developer Days-4. г.Минск 13 декабря 2013

Transcript of Разработка кроссплатформенных приложений на .Net / C#

Page 1: Разработка кроссплатформенных приложений на .Net / C#

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

СТАНИСЛАВ СИДРИСТЫЙ[email protected]@sidristij

Page 2: Разработка кроссплатформенных приложений на .Net / C#

3ГОДА

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

45ЧЕЛОВЕК

Page 3: Разработка кроссплатформенных приложений на .Net / C#

Streamдочерняя

МТС

Мегалабсдочерняя

Мегафона

Coinkeeper,I-FREE

Page 4: Разработка кроссплатформенных приложений на .Net / C#
Page 5: Разработка кроссплатформенных приложений на .Net / C#

КАКИЕ ПРОБЛЕМЫ РЕШАЕТ КРОССПЛАТФОРМЕННОСТЬ?

Page 6: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 7: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 8: Разработка кроссплатформенных приложений на .Net / C#

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

ДЕШЕВО

КАЧЕСТВЕННО

БЫСТРО

ДЕШЕВО

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

КАЧЕСТВЕННО

БЫСТРО

bit.ly/xamarin-add4

Page 9: Разработка кроссплатформенных приложений на .Net / C#

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

Page 10: Разработка кроссплатформенных приложений на .Net / C#

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

— Applications Factories

— Web App Toolkits

— Cross-Platform IDEs

bit.ly/xamarin-add4

Page 11: Разработка кроссплатформенных приложений на .Net / C#

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

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

Page 12: Разработка кроссплатформенных приложений на .Net / C#

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

•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 13: Разработка кроссплатформенных приложений на .Net / C#

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

“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 14: Разработка кроссплатформенных приложений на .Net / C#

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

“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 15: Разработка кроссплатформенных приложений на .Net / C#

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

Page 16: Разработка кроссплатформенных приложений на .Net / C#

XAMARIN

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

Windows и Android приложения на C#, используя

почти всю мощь .Net Framework

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

bit.ly/xamarin-add4

Page 17: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 18: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 19: Разработка кроссплатформенных приложений на .Net / C#
Page 20: Разработка кроссплатформенных приложений на .Net / C#

MONOTOUCH

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

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

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

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

bit.ly/xamarin-add4

Page 21: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 22: Разработка кроссплатформенных приложений на .Net / C#

КОМПИЛЯЦИЯ

bit.ly/xamarin-add4

Page 23: Разработка кроссплатформенных приложений на .Net / C#

ЛИНКОВКА

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

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

можно пометить атрибутом

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

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

bit.ly/xamarin-add4

Page 24: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 25: Разработка кроссплатформенных приложений на .Net / C#

ОТЛАДКА

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

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

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

bit.ly/xamarin-add4

Page 26: Разработка кроссплатформенных приложений на .Net / C#

GARBAGE COLLECTOR

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

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

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

bit.ly/xamarin-add4

Page 27: Разработка кроссплатформенных приложений на .Net / C#

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

Page 28: Разработка кроссплатформенных приложений на .Net / C#

iOS UI

Page 29: Разработка кроссплатформенных приложений на .Net / C#

Android UI

Page 30: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 31: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

телефонов

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

bit.ly/xamarin-add4

Page 32: Разработка кроссплатформенных приложений на .Net / C#

ВОПРОСЫ!

Fb: @touchinstinct

Twitter: @sidristij, @touchin_ru

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

Email: [email protected]

touchin.ru

Page 33: Разработка кроссплатформенных приложений на .Net / C#

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

СТАНИСЛАВ СИДРИСТЫЙ[email protected]@sidristij

Page 34: Разработка кроссплатформенных приложений на .Net / C#

КРАТКОЕ СОДЕРЖАНИЕ ПРЕДЫДУЩЕЙ ЧАСТИ

Page 35: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

• Изучив тонны материала, выбрали подходящую технологиюИз всей статистики нам подходят: Unity 3D для игр и Xamarin для всего остального

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

bit.ly/xamarin-add4

Page 36: Разработка кроссплатформенных приложений на .Net / C#

КРОСС-ПЛАТФОРМЕННАЯ МОБИЛЬНАЯ РАЗРАБОТКА

Page 37: Разработка кроссплатформенных приложений на .Net / C#

It's Demo TimeCode Samples: bit.ly/xamarin-add4

Page 38: Разработка кроссплатформенных приложений на .Net / C#

КРОСС-ПЛАТФОРМЕННАЯ РАЗРАБОТКА ПОД DESKTOP

Page 39: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

XWT = MVC + Gtk box model + Cairo drawing API

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

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

bit.ly/xamarin-add4

Page 40: Разработка кроссплатформенных приложений на .Net / C#

It's Demo TimeCode Samples: bit.ly/xamarin-add4

Page 41: Разработка кроссплатформенных приложений на .Net / C#

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

Page 42: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 43: Разработка кроссплатформенных приложений на .Net / C#

ПЛЮСЫ

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

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

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

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

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

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

сообщество Xamarin

bit.ly/xamarin-add4

Page 44: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 45: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

не-Microsoft PCL

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

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

bit.ly/xamarin-add4

Page 46: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

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

bit.ly/xamarin-add4

Page 47: Разработка кроссплатформенных приложений на .Net / C#

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

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

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

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

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

bit.ly/xamarin-add4

Page 48: Разработка кроссплатформенных приложений на .Net / C#

ВОПРОСЫ!

Fb: @touchinstinct

Twitter: @sidristij, @touchin_ru

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

Email: [email protected]

touchin.ru