SlideShare a Scribd company logo
1 of 48
РАЗРАБОТКА
КРОССПЛАТФОРМЕННЫХ
ПРИЛОЖЕНИЙ НА .NET/C#
СТАНИСЛАВ СИДРИСТЫЙ
stanislav.sidristyi@touchin.ru
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
ВЛИЯНИЕ НА РАЗРАБОТКУ
ДЕШЕВО

ДЕШЕВО
БЫСТРО

БЫСТРО

КАЧЕСТВЕННО
КАЧЕСТВЕННО

Плохие – мешают жить

Хорошие – улучшают продукт
bit.ly/xamarin-add4
ВЫБИРАЕМ ИНСТРУМЕНТ ДЛЯ
КРОССПЛАТФОРМЕННОЙ
РАЗРАБОТКИ.
КАТЕГОРИИ CROSS-PLATROM TOOLS

— Applications Factories
— Web App Toolkits
— Cross-Platform IDEs

bit.ly/xamarin-add4
УЗНАВАЕМОСТЬ СРЕДИ СРЕДСТВ
РАЗРАБОТКИ

(c) by research2guidance

bit.ly/xamarin-add4
ИСПОЛЬЗУЮТ В РАЗРАБОТКЕ
•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)

(c) by research2guidance

bit.ly/xamarin-add4
ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ

“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
(c) by research2guidance

bit.ly/xamarin-add4
ЕДИНЫЙ КОД — ВЕЗДЕ.
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: hello@touchin.ru

touchin.ru
РАЗРАБОТКА
КРОССПЛАТФОРМЕННЫХ
ПРИЛОЖЕНИЙ НА .NET/C#
СТАНИСЛАВ СИДРИСТЫЙ
stanislav.sidristyi@touchin.ru
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: hello@touchin.ru

touchin.ru

More Related Content

Viewers also liked

Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...
Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...
Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...Hivlife Info
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2Technopark
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЯковенко Кирилл
 
Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)mujeeb memon
 
Интеллектуальная игра самый умный
Интеллектуальная игра самый умныйИнтеллектуальная игра самый умный
Интеллектуальная игра самый умныйskripash2009
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЯковенко Кирилл
 
Introduction to Programming Languages
Introduction to Programming LanguagesIntroduction to Programming Languages
Introduction to Programming Languageseducationfront
 
Programming languages
Programming languagesProgramming languages
Programming languagesAkash Varaiya
 
10 tips for learning Russian
10 tips for learning Russian10 tips for learning Russian
10 tips for learning RussianSteve Kaufmann
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languagesVarun Garg
 
8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”New Rainmaker
 

Viewers also liked (13)

Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...
Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...
Современный взгляд на АГ и ХСН. Спорные и нерешенные вопросы. Новые возможнос...
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
 
Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)
 
Интеллектуальная игра самый умный
Интеллектуальная игра самый умныйИнтеллектуальная игра самый умный
Интеллектуальная игра самый умный
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилей
 
Programming in c
Programming in cProgramming in c
Programming in c
 
Introduction to Programming Languages
Introduction to Programming LanguagesIntroduction to Programming Languages
Introduction to Programming Languages
 
Programming languages
Programming languagesProgramming languages
Programming languages
 
10 tips for learning Russian
10 tips for learning Russian10 tips for learning Russian
10 tips for learning Russian
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
Counters
CountersCounters
Counters
 
8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”8 Ways a Digital Media Platform is More Powerful than “Marketing”
8 Ways a Digital Media Platform is More Powerful than “Marketing”
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

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

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