Upload
stanislav-sidristy
View
170
Download
0
Embed Size (px)
DESCRIPTION
Мое выступление на ADD-4. Все материалы, ровно как и текст выступления доступны по ссылке: bit.ly/xamarin-add4
Citation preview
РАЗРАБОТКАКРОССПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ НА .NET/C#
СТАНИСЛАВ СИДРИСТЫЙ
touchin.ru
@sidristij
3ГОДА
20+ПРИЛОЖЕНИЙ
45ЧЕЛОВЕК
Stream
дочерняя
МТС
Мегалабс
дочерняя
Мегафона
Coinkeeper,
I-FREE
КАКИЕ ПРОБЛЕМЫ РЕШАЕТ
КРОССПЛАТФОРМЕННОСТЬ?
ПРОБЛЕМЫ РАЗРАБОТЧИКА
― Точно ли весь код под каждую платформу имеет единый flow?
― Нигде ли не разошлись по API?
― Синхронизировались ли по схеме БД
― Юнит-тесты на каждую платформу. Не разошлись ли тесты?
― Пришел RFC на БД? Изменился API?? Переписывать тесты???
bit.ly/xamarin-add4
ПРОБЛЕМЫ МЕНЕДЖМЕНТА
― Необходимо координировать венегрет из Java/Objective-C/...
― Вылетел разработчик? Необходимо найти под ту же платформу
― Заказчик платит за один и тот же код много раз
― Изменили внешнее API? Все переписываем N раз. Fix-price?
― Сделали готовый продукт под X. Заказчик просит “то же
самое, только под Y”. Не возможно просто взять наработки и
использовать
bit.ly/xamarin-add4
ВАЖНОСТЬ ВЫБОРА ПРАВИЛЬНОГО ИНСТРУМЕНТА.
КОГДА РАЗРАБОТЧИК СЧАСТЛИВ?
― На работе интересно, коллектив гордится
― Дети первые в рейтингах WOT, вышел Half Life 3
― Жена понимает, когда говоришь «отрефакторил»
― ???
bit.ly/xamarin-add4
КОГДА РАЗРАБОТЧИК СЧАСТЛИВ?
― На работе интересно, коллектив гордится
― Дети первые в рейтингах WOT, вышел Half Life 3
― Жена понимает, когда говоришь «отрефакторил»
― Правильные инструменты разработки!
bit.ly/xamarin-add4
ВЛИЯНИЕ НА РАЗРАБОТКУ
ДЕШЕВО
КАЧЕСТВЕННО
БЫСТРО
ДЕШЕВО
Плохие – мешают жить Хорошие – улучшают продукт
КАЧЕСТВЕННО
БЫСТРО
bit.ly/xamarin-add4
РАЗЛИЧИЯ МЕЖДУ ПЛАТФОРМАМИ.
ДЕСКТОПНЫЕ ПРИЛОЖЕНИЯ
― Работа с клавиатуры и “мышью”
― Устойчивый интернет
― Безграничные возможности железа
― Приложения рассчитаны на физически большие экраны
― Однако на разных ОС можно создать единый интерфейс
bit.ly/xamarin-add4
МОБИЛЬНЫЕ ПРИЛОЖЕНИЯ
― Контент “на кончиках пальцев”
― Плохое интернет-соединение
― Медленное железо (неизвестные характеристики на Android)
― Короткие сессии
bit.ly/xamarin-add4
НАТИВНЫЙ UI
― Привычен пользователю платформы
― Работает быстро
― Дает богатые возможности
― Везде различен :(
bit.ly/xamarin-add4
КРОССПЛАТФОРМЕННЫЙ UI
― Везде выглядит одинаково
― Одинаково непривычен для всех пользователей
― Зачастую работает медленно
― Не используются уникальные особенности
платформы
bit.ly/xamarin-add4
ВЫБИРАЕМ ИНСТРУМЕНТ ДЛЯ КРОССПЛАТФОРМЕННОЙ РАЗРАБОТКИ.
КАТЕГОРИИ CROSS-PLATROM TOOLS
— Applications Factories
— Web App Toolkits
— Cross-Platform IDEs
bit.ly/xamarin-add4
УЗНАВАЕМОСТЬ СРЕДИ СРЕДСТВ РАЗРАБОТКИ
bit.ly/xamarin-add4(c) by research2guidance
ИСПОЛЬЗУЮТ В РАЗРАБОТКЕ
•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
ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ
“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
ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ
“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
ЕДИНЫЙ КОД — ВЕЗДЕ.
XAMARIN.
XAMARIN
―Позволяет разработывать iOS, Mac
OS, Linux, Windows и Android приложения на
C#, используя почти всю мощь .Net Framework
―Имеет множество тулов для удобства разработки
bit.ly/xamarin-add4
XAMARIN – НЕ НОВАЯ ПЛАТФОРМА
― Основана на mono runtime
― Которая развивается с 2001 года
― Свободная реализация ECMA-334 (C#) и ECMA-335 (CLI)
― Основатель – Miguel de Icaza (GNOME, mc)
― Исходники, комьюнити, свой стор, партнеры,…
bit.ly/xamarin-add4
XAMARIN. НЕМНОГО О КОМПАНИИ
―Продает и осуществляет поддержку MonoTouch / MonoDroid
―Цены от $299 для Indie (раньше было $399, приятно)
―На сайте компании есть все для старта и работы
―Огромное количество примеров на github.com/xamarin
―Выпущено несколько книг
bit.ly/xamarin-add4
MONOTOUCH
―Mono для iOS c AOT компиляцией и bindings к API
―Код – на C#, UI – родной, через удобные обѐртки
―Обертки делают API iOS понятным на C#
―Среда разработки – Xamarin Studio (MAC, Windows) + XCode
bit.ly/xamarin-add4
КОМПИЛЯЦИЯ В MONOTOUCH
―Все как в настоящем .NET, компилируется в сборки
―Поэтому теоретически можно заюзать любой язык .NET (сейчас можно
F#, но есть Nemerle, Ruby, Python, JS)
―IL превращается в машинный код при помощи AOT копиляции
―Программа воссоединяется с Mono Runtime, GC, BCL, …
bit.ly/xamarin-add4
КОМПИЛЯЦИЯ
bit.ly/xamarin-add4
ЛИНКОВКА
―Когда все линкуется, берется только то, что используется
―Если Вам все-таки что-то необходимо, но напрямую не
используется, можно пометить атрибутом
―Сильно уменьшает размер приложения
―Чем больше используем, тем больше приложение
bit.ly/xamarin-add4
ЧТО ОБЩЕГО С НАТИВНЫМ API
―Абсолютно идентичная работа с UI
―AppDelegate, UIWindow, ViewControllers, ... на iOS
―Activities, Fragments, … на Андроиде
―Платформенное API с железом такое же как родное
―Отличается только то, что можно C#-изировать
bit.ly/xamarin-add4
ОТЛАДКА
―Честная отладка, с breakpoints
―Можно просматривать в Watches, Immediate Window
―Наводить курсор на переменные
bit.ly/xamarin-add4
GARBAGE COLLECTOR
―Агрессивно настроен
―В Андроиде имеем GREFs
―В играх, говорят, когда много объектов и начинает притормаживать
bit.ly/xamarin-add4
Среда разработки – Xamarin Studio
iOS UI
Android UI
ПРОМЕЖУТОЧНЫЕ ИТОГИ
―Увеличили скорость разработки в 2 раза
―Получили общий код между платформами – до 60-80%%
―Расшарили код между приложениями – пишем еще быстрее
―Общий код = общие баги и меньшее время на стабилизацию
―Если у вас есть библиотка с общим кодом (PCL), достаточно ее отдать
нам: мы просто ее подтянем и будем использовать
bit.ly/xamarin-add4
БУДУЩЕЕ ПЛАТФОРМЫ
―Подключение AOP средств разработки ускорит внедрение сквозной
функциональности в разы (например Google Analytics за 5 минут)
―TestCloud – автоматизированное тестирование на всех моделях
телефонов
―Улучшение поддержки IntelliSense
bit.ly/xamarin-add4
ВОПРОСЫ!
Fb: @touchinstinct
Twitter: @sidristij, @touchin_ru
Все материалы доклада: bit.ly/xamarin-add4
Email: [email protected]
touchin.ru
РАЗРАБОТКАКРОССПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ НА .NET/C#
СТАНИСЛАВ СИДРИСТЫЙ
touchin.ru
@sidristij
КРАТКОЕ СОДЕРЖАНИЕ
ПРЕДЫДУЩЕЙ ЧАСТИ
О ЧЕМ УСПЕЛИ ПОГОВОРИТЬ• Определили проблемы разработчиков и менеджмента
Основная проблема в множественном дублировании кода ведет к множетсвенным затратам средств и времени и
ухудшению качества
• Выявили требуемый функционал, чтобы писать быстро и мало
Все пишут на одном языке, общий функционал=один проект, хорошая IDE, UI пишется под каждую ось
• Изучив тонны материала, выбрали подходящую технологию
Из всей статистики нам подходят: Unity 3D для игр и Xamarin для всего остального
• Изучили, как она работает и что она дает
Есть практически все что требуется разработчику и дает все что хочет менеджмент
bit.ly/xamarin-add4
КРОСС-ПЛАТФОРМЕННАЯ
МОБИЛЬНАЯ РАЗРАБОТКА
It's Demo Time
Code Samples: bit.ly/xamarin-add4
КРОСС-ПЛАТФОРМЕННАЯ
РАЗРАБОТКА ПОД DESKTOP
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
It's Demo Time
Code Samples: bit.ly/xamarin-add4
ДЕЛАЕМ ВЫВОДЫ
МИНУСЫПотираем ручки
―Xamarin Studio прекрасна, но имеет проблемы с отладчиком
―Bindings не всегда строятся правильно
―Runtime неплохо нагружает приложение (+2-3 метра)
―Немного страдает производительность
―Нельзя Emit'тить
―Нет Generic Virtual Methods и p/invokes в Generic Types
―Встречаются баги
bit.ly/xamarin-add4
ПЛЮСЫ
―Шарится много кода между всеми .NET платформами
―Не обязательно знать Objective-C и Java
―Проще и быстрее разработывать (особенно общие части)
―Тонны библиотек для .NET на github, codeplex, …
―Тонны нативных библиотек, которые можно юзать
―Огромное сообщество .NET, и быстро растущее (пол-миллиона)
сообщество Xamarin
bit.ly/xamarin-add4
ПЛЮСЫ ДЛЯ КОМПАНИИ
―Меньше программистов для тех же задач
―Можно хантить как с iOS/Android так и .NET разработчиков, уставших
от корпоративного сектора
―Сокращение стоимости разработки конечного продукта и как
следствие – довольные заказчики
―Огромноый процент переиспользования в последующих проектах
ведет к еще большему снижению стоимости
bit.ly/xamarin-add4
ЧТО СО СТАБИЛЬНОСТЬЮ?
―Компания растет с каждым днем
―Microsoft пишет для Xamarin код поддержки в Visual Studio/Azure
―Блог Microsoft CLR впервые написал про другую компанию: поддержка
не-Microsoft PCL
―Множество MSDN плюшек для владельцев лицензий Xamarin
―Запустили University, где по прохождении курса выдают MVP
bit.ly/xamarin-add4
ЧТО СО СТАБИЛЬНОСТЬЮ?
―Под (iOS+Android) PCL переводятся крупные open-source проекты
―Components Store постоянно пополняется новичками
―Google среди них также присутствует
―Как компания с самым богатым опытом на территории ex-USSR мы
рады что работаем именно в этом стеке
bit.ly/xamarin-add4
ЛИЧНЫЙ ОПЫТ И ВПЕЧАТЛЕНИЯ
―Опыт прекрасен, отказываться не собираемся никогда
―CoinKeeper… Да везде: быстрее кодим, меньше багов
―Общая логика: не пишем все заново. 30-60%% шарим
―Когда вышла iOS 7, API с Ксамарина был готов практически сразу
bit.ly/xamarin-add4
ВОПРОСЫ!
Fb: @touchinstinct
Twitter: @sidristij, @touchin_ru
Все материалы доклада: bit.ly/xamarin-add4
Email: [email protected]
touchin.ru