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

5,446
-1

Published on

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

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,446
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×