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

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

on

  • 4,733 views

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

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

Statistics

Views

Total Views
4,733
Slideshare-icon Views on SlideShare
1,127
Embed Views
3,606

Actions

Likes
1
Downloads
8
Comments
0

7 Embeds 3,606

http://dev.by 3410
http://addconf.ru 182
http://www.addconf.ru 6
http://add4.addconf.ru 5
http://webcache.googleusercontent.com 1
https://www.google.kz 1
http://digg.by 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • РАЗРАБОТКА КРОССПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ НА .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