2. О себе 5 лет опыта работы и руководства с .Netи C# Руководил созданием читалки журналов для readoz.comна Objective C Делаем текущий проект на monotouch И просто много читаю ;)
3. Что расскажу Что такое monotouchи как он работает Инструменты Преимущества и недостатки Производительность Перспективы
4. Для понимания нужно Уметь программировать Иметь опыт работы с managed средами (.Net, Java) Что-то слышать про разработку под iPhone
7. Лицензирование monotouch Ага, не бесплатно Есть бесплатная версия у которой единственное ограничение – нельзя запускать приложение не устройстве Студенческая лицензия – 99$ (нельзя отправить в AppStore) Персональная лицензия – 399$ Enterprise – 999$ за 1 место, 3999$ за 5 (разрешает Enterprise distribution)
8. Студенческий вариант Использовать виртуальную машину с Mac OS Xcode, iPhone SDK – бесплатно Использовать Monotouch trial Просить собирать приложение доброго дядю
10. Разработка в monodevelop Привычный интерфейс для .Net-щиков Любимый Intellisense Интегрированный debug, запуск симулятора Загрузка приложения на устройство Интеграция с SVN Запуск внешнего редактора xibфайлов
11. Xibфайлы Описывают содержимое View’х Похожи на xamlфайлы Silverlight, WPF Для редактирования используется Interface Builder из Xcode
12. Xibcodebehind Аналог codebehindклассов в обычном.Net и Silverlight На один ViewController 3 файла: HomeViewController.xib(Сам интерфейс) HomeViewController.xib.cs (Ваш код и обработчики событий) HomeViewController.xib.designer.cs (Генерируется monotouchи предоставляет обертку для объектов view controller’a) Переменные для контроллов (кнопки, лейблы) нужно делать самому
15. Mono http://www.mono-project.com/Main_Page Open source реализация .Net Framework Поддерживается Linux, Mac OS, Windows, а также Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone Реализована большая часть .Net Framework 4 (кроме EF, WPF, WF, урезанный WCF)
16. Monotouch Построен на основе Mono Компилируется в нативный код (Ahead of time compilation) На лету компилировать код нельзя (no System.Emit) В связи с этим есть ряд ограничений - http://monotouch.net/Documentation/Limitations
17. Monotouch linker Компилирует только тот код, который реально используется приложением Использует статический анализ, поэтому Reflection не заметит (!) В итоге уменьшается вес приложения
18. Debug Работает отлично, как на девайсе так и в симуляторе Используется soft debugger, поэтому debug код весит намного больше (не сабмититьдебаг код в аппстор!) Инструменты для дебага в monodevelopидентичны тем, которые есть в Visual Studio
19. Profiling Реализован с помощью использования Apple Shark и Apple Instruments Профилировать можно только работу девайса Профилирование памяти практически не имеет смысла, т.к. инструменты apple не знают про garbage collector
20. Интеграция с C и Objective C btouchутилита генерирующая сборку-обертку для нативной библиотеки Вызов селекторов Objective C напрямую из кода Monotouch Стандартный P/Invoke для вызова C методов
21. Существующие binding’и Для популярных iOSбиблиотек уже сделаны обертки для monotouch Facebook SDK - https://github.com/kevinmcmahon/monotouch-facebook Google Analytics - http://wiki.monotouch.net/HowTo/Google/Using_Analytics
22. Производительность В целом хуже чем у нативного решения Где много вызовов методов (не дай бог рекурсия ) Monotouchбыстрее В чистой арифметике Monotouchмедленее В среднем на обычных приложениях это не заметно 3D шутеры писать на Monotouchне лучшая идея
23. Преимущества .Net framework и C# Garbage collector Использование существующего C# кода, правда при соблюдении некоторых условий Удобство в случае одновременного использования Monotouchи .Netна сервере Относительная кроссплатформенность (iPhone, Android, WP7) Более быстрый переход к программированию на iPhone, т.к. на одну неизвестную меньше (Objective C) Использование сгенерированных прокси для работы с ASP.Net Web services или WCF
24. Пример генерации прокси В Visual Studio проект с Web Reference В Monodevelopпроект использующий Reference.csиз предыдущего проекта Достаточно сделать Update web reference в Visual Studio и на клиенте у вас обновленные классы и методы для работы с сервисом
25. Недостатки Стоит денег Все равно нужно использовать CocoaTouch Размер приложения увеличивается на 3-4 Mb Некоторые риски в случае странного поведения Apple
26. История с запретом сторонних фреймворков 8 апреля 2010 Apple обновила пункт 3.3.1, запретив использовать все кроме C, C++, Objective C, Javascript 9 сентября 2010 разрешили и сказали, что впредьбудут слушать разработчиков Под запрет попадали Monotouch, Unity, Flash for iPhone Сейчас около 140 приложения опубликовано на сайте Monotouch.net, количество реальных приложений не известно
29. Выводы Monotouchне панацея Подходит в определенных ситуациях Старый код на C# Кроссплатформенное решение и экономия на ресурсах разработчиков Быстрая разработка Не нравится C, С++, Objective C Мы используем и нам нравится
30. Будущее Monotouch 4 с использованием LLVM – быстрее, а код меньше Monodroid – тоже самое для Android’a WP7 + Nokia а значит в будущем на всех трех платформах можно будет писать на C#
31. Ресурсы Оффициальный сайт –http://monotouch.net http://monotouch.info Книга «Professional iPhone Programming with MonoTouch and .NET/C#» Примеры разных приложений с исходниками - https://github.com/conceptdev Miguel de Icaza
32. Спасибо за внимание! Андрей Басков andrei.baskov@gmail.com @AndreyBaskov http://ru.linkedin.com/in/andreybaskov Geopoly (Мы ищем monotouchразработчиков!) http://geopo.ly @GeopolyGame