SlideShare uma empresa Scribd logo
1 de 32
Monotouch Разработка для iPhone на .Netи C# Андрей Басков
О себе 5 лет опыта работы и руководства с .Netи C# Руководил созданием читалки журналов для readoz.comна Objective C Делаем текущий проект на monotouch И просто много читаю ;)
Что расскажу Что такое monotouchи как он работает Инструменты Преимущества и недостатки Производительность Перспективы
Для понимания нужно Уметь программировать Иметь опыт работы с managed средами (.Net, Java) Что-то слышать про разработку под iPhone
Monotouch in action
Инструменты Mac OS Xcodeи iPhone SDK Mono Monodevelop Monotouch
Лицензирование monotouch Ага, не бесплатно  Есть бесплатная версия у которой единственное ограничение – нельзя запускать приложение не устройстве Студенческая лицензия – 99$ (нельзя отправить в AppStore) Персональная лицензия – 399$ Enterprise – 999$ за 1 место, 3999$ за 5 (разрешает Enterprise distribution)
Студенческий вариант Использовать виртуальную машину с Mac OS Xcode, iPhone SDK – бесплатно Использовать Monotouch trial Просить собирать приложение доброго дядю 
Monodevelop
Разработка в monodevelop Привычный интерфейс для .Net-щиков Любимый Intellisense Интегрированный debug, запуск симулятора Загрузка приложения на устройство Интеграция с SVN Запуск внешнего редактора xibфайлов
Xibфайлы Описывают содержимое View’х Похожи на xamlфайлы Silverlight, WPF Для редактирования используется Interface Builder из Xcode
Xibcodebehind Аналог codebehindклассов в обычном.Net и Silverlight На один ViewController 3 файла: HomeViewController.xib(Сам интерфейс) HomeViewController.xib.cs (Ваш код и обработчики событий) HomeViewController.xib.designer.cs (Генерируется monotouchи предоставляет обертку для объектов view controller’a) Переменные для контроллов (кнопки, лейблы) нужно делать самому
Hello world!
Архитектура Monotouch
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)
Monotouch Построен на основе Mono Компилируется в нативный код (Ahead of time compilation) На лету компилировать код нельзя (no System.Emit) В связи с этим есть ряд ограничений - http://monotouch.net/Documentation/Limitations
Monotouch linker Компилирует только тот код, который реально используется приложением Использует статический анализ, поэтому Reflection не заметит (!) В итоге уменьшается вес приложения
Debug Работает отлично, как на девайсе так и в симуляторе Используется soft debugger, поэтому debug код весит намного больше (не сабмититьдебаг код в аппстор!) Инструменты для дебага в monodevelopидентичны тем, которые есть в Visual Studio
Profiling Реализован с помощью использования Apple Shark и Apple Instruments Профилировать можно только работу девайса Профилирование памяти практически не имеет смысла, т.к. инструменты apple не знают про garbage collector
Интеграция с C и Objective C btouchутилита генерирующая сборку-обертку для нативной библиотеки Вызов селекторов Objective C напрямую из кода Monotouch Стандартный P/Invoke для вызова C методов
Существующие binding’и Для популярных iOSбиблиотек уже сделаны обертки для monotouch Facebook SDK - https://github.com/kevinmcmahon/monotouch-facebook Google Analytics - http://wiki.monotouch.net/HowTo/Google/Using_Analytics
Производительность В целом хуже чем у нативного решения Где много вызовов методов (не дай бог рекурсия ) Monotouchбыстрее В чистой арифметике Monotouchмедленее В среднем на обычных приложениях это не заметно 3D шутеры писать на Monotouchне лучшая идея 
Преимущества .Net framework и C# Garbage collector Использование существующего C# кода, правда при соблюдении некоторых условий Удобство в случае одновременного использования Monotouchи .Netна сервере Относительная кроссплатформенность (iPhone, Android, WP7) Более быстрый переход к программированию на iPhone, т.к. на одну неизвестную меньше (Objective C) Использование сгенерированных прокси для работы с ASP.Net Web services или WCF
Пример генерации прокси	 В Visual Studio проект с Web Reference В Monodevelopпроект использующий Reference.csиз предыдущего проекта Достаточно сделать Update web reference в Visual Studio и на клиенте у вас обновленные классы и методы для работы с сервисом
Недостатки Стоит денег Все равно нужно использовать CocoaTouch Размер приложения увеличивается на 3-4 Mb Некоторые риски в случае странного поведения Apple
История с запретом сторонних фреймворков 8 апреля 2010 Apple обновила пункт 3.3.1, запретив использовать все кроме C, C++, Objective C, Javascript 9 сентября 2010 разрешили и сказали, что впредьбудут слушать разработчиков  Под запрет попадали Monotouch, Unity, Flash for iPhone Сейчас около 140 приложения опубликовано на сайте Monotouch.net, количество реальных приложений не известно
Примеры приложений Light Blocks Zombie Party (deltaengine.net)
Примеры приложений И конечно GeoPoly! (В разработке )
Выводы Monotouchне панацея Подходит в определенных ситуациях Старый код на C# Кроссплатформенное решение и экономия на ресурсах разработчиков Быстрая разработка Не нравится C, С++, Objective C Мы используем и нам нравится 
Будущее Monotouch 4 с использованием LLVM – быстрее, а код меньше Monodroid – тоже самое для Android’a WP7 + Nokia а значит в будущем на всех трех платформах можно будет писать на C#
Ресурсы Оффициальный сайт –http://monotouch.net http://monotouch.info Книга «Professional iPhone Programming with MonoTouch and .NET/C#» Примеры разных приложений с исходниками - https://github.com/conceptdev Miguel de Icaza
Спасибо за внимание! Андрей Басков andrei.baskov@gmail.com @AndreyBaskov http://ru.linkedin.com/in/andreybaskov Geopoly (Мы ищем monotouchразработчиков!) http://geopo.ly @GeopolyGame

Mais conteúdo relacionado

Mais procurados

Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовSergey Borisov
 
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...ScrumTrek
 
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»e-Legion
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityDefconRussia
 
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...ISsoft
 

Mais procurados (6)

Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
 
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
 
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
Степан Гончаров «Тестирование Android-приложений с помощью Robotium и Spoon»
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source security
 
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
 

Destaque

Destaque (8)

水墨畫水彩畫(The chinese inks-painting&the_water-color_painting
水墨畫水彩畫(The chinese inks-painting&the_water-color_painting水墨畫水彩畫(The chinese inks-painting&the_water-color_painting
水墨畫水彩畫(The chinese inks-painting&the_water-color_painting
 
A boat trip_through_germany
A boat trip_through_germanyA boat trip_through_germany
A boat trip_through_germany
 
ATSI Reports 2nd Quarter FY2010 Results
ATSI Reports 2nd Quarter FY2010 ResultsATSI Reports 2nd Quarter FY2010 Results
ATSI Reports 2nd Quarter FY2010 Results
 
Have faith, ....
Have faith, ....Have faith, ....
Have faith, ....
 
日本庭院與「禪」
日本庭院與「禪」日本庭院與「禪」
日本庭院與「禪」
 
Colors
ColorsColors
Colors
 
月到中秋分外明
月到中秋分外明月到中秋分外明
月到中秋分外明
 
Matt Savage "Welcome Home"
Matt Savage "Welcome Home"Matt Savage "Welcome Home"
Matt Savage "Welcome Home"
 

Semelhante a Monotouch

внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системахWhiteMbIXA
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшнеEugeni Feudorov
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...COMAQA.BY
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Pavel Chertorogov
 
Опыт Автоматизации тестирования
Опыт Автоматизации тестированияОпыт Автоматизации тестирования
Опыт Автоматизации тестированияAgile Ukraine
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applicationsscassau
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
Кроссплатформенная разработка на aspnet
Кроссплатформенная разработка на aspnet Кроссплатформенная разработка на aspnet
Кроссплатформенная разработка на aspnet Eugene Agafonov
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextGoSharp
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»DevGAMM Conference
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin
 
NetBeans 6.0 Desktop
NetBeans 6.0 DesktopNetBeans 6.0 Desktop
NetBeans 6.0 DesktopIljas
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)Andrey Gordienkov
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAndrey Gordienkov
 

Semelhante a Monotouch (20)

внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшне
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Опыт Автоматизации тестирования
Опыт Автоматизации тестированияОпыт Автоматизации тестирования
Опыт Автоматизации тестирования
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applications
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Кроссплатформенная разработка на aspnet
Кроссплатформенная разработка на aspnet Кроссплатформенная разработка на aspnet
Кроссплатформенная разработка на aspnet
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNext
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)
 
Invisible
InvisibleInvisible
Invisible
 
Cog tool
Cog toolCog tool
Cog tool
 
NetBeans 6.0 Desktop
NetBeans 6.0 DesktopNetBeans 6.0 Desktop
NetBeans 6.0 Desktop
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design Patterns
 

Monotouch

  • 1. Monotouch Разработка для iPhone на .Netи C# Андрей Басков
  • 2. О себе 5 лет опыта работы и руководства с .Netи C# Руководил созданием читалки журналов для readoz.comна Objective C Делаем текущий проект на monotouch И просто много читаю ;)
  • 3. Что расскажу Что такое monotouchи как он работает Инструменты Преимущества и недостатки Производительность Перспективы
  • 4. Для понимания нужно Уметь программировать Иметь опыт работы с managed средами (.Net, Java) Что-то слышать про разработку под iPhone
  • 6. Инструменты Mac OS Xcodeи iPhone SDK Mono Monodevelop Monotouch
  • 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, количество реальных приложений не известно
  • 27. Примеры приложений Light Blocks Zombie Party (deltaengine.net)
  • 28. Примеры приложений И конечно GeoPoly! (В разработке )
  • 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