#msdevcon
Windows & More Personal Computing
Xamarin: обзор технологии
и погружение в разработку
решений
Антон Шунков, Технический евангелист – Microsoft
Вячеслав Черников, Руководитель отдела разработки – Binwell
Денис Кретов, Технический директор – Notissimus
#msdevcon
Цели
Что такое
Xamarin?
Как создать
свое
приложение?
Наибольший
общий
делитель?
Лучшие практики от
экспертов
Как использовать все
уникальные фичи каждой
платформы
Обзор новой технологии в
семье Microsoft
#msdevcon
Будущее приложений
Антон Шунков
Technical Evangelist, Microsoft
И не отстает
от
нововведений
платформы
Приложение моей мечты
Которое работает
на всех
платформах
Нэйтив
приложение
с идеальным
рейтингом
Использует все
фичи платформы
BUILD TEST MONITOR
ACCELERATE
Все, что нужно для мобильной разработки
Xamarin 4
BUILD TEST MONITOR
ACCELERATE
Нэйтив приложения на всех платформах
Как устроен Xamarin
Общий код на C# • 100% покрытие API • Высокая производительность
iOS C# UI Windows C# UIAndroid C# UI
Общая логика на C#
Xamarin и Xamarin.Forms
Традиционный Xamarin Xamarin.Forms
Общая C# логика
Общий UI код
iOS C# UI Android C# UI Windows C# UI
Общая C# логика
Windows API
Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
iOS – 100% покрытие API
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Android – 100% покрытие API
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Xamarin.iOS использует полную
Ahead Of Time (AOT) компиляцию
для создания пакета для Apple App
Store.
Xamarin.Android использует Just In
Time (JIT) компиляцию на Android
устройствах.
.NET
C#
Compile
and Link
.APK
Bindings
IL
+
JIT
Runs
Natively
Высокая производительность
Интеграция с Visual Studio
Какой Xamarin лучше для
вашего приложения?
Xamarin.Forms прекрасен для: Xamarin.iOS / Xamarin.Android лучше для:
• Приложений не использующих особые
фичи разных платформ
• Приложений, в которых желательно
максимизировать общий кода
• Приложений с множеством форм
• Прототипирования
Learn more: xamarin.com/forms Learn more: xamarin.com/platform
• Приложений использующих максимум
функционала разных платформ
• Приложений с дизайном по всем
гайдлайном платформы
• Приложений, в которых UX гораздо
важнее доли общего кода
#msdevcon
Разработка мобильных
приложений с помощью
Xamarin и MvvmCross.
Денис Кретов, Руководитель отдела разработки
Максим Евтух, Разработчик Xamarin
Исходные коды доступны по адресу https://github.com/pocheshire/MobiusDemo
#msdevcon
NOTISSIMUS
• Разрабатываем на Xamarin более 3 – х лет.
• Запустили 50+ проектов
• Разработали отраслевое решение для Интернет-Магазинов на базе Xamarin
• Внедряем решения на базе iBeacon и Eddystone
Наша
специализация
#msdevcon
Кросс-платформенная
разработка мобильных
приложений.
Какой технологии отдать предпочтение?
#msdevcon
Native SDK.
Плюсы. Минусы.
• Они нативные! 
• Интеграция с аппаратной частью
без ограничений
• Высокая скорость работы
• Минимальный размер приложения
• Поддержка двух и более веток кода
при разработке на разные
платформы.
• Время работ(трудозатраты)
увеличивается пропорционально
количеству платформ
#msdevcon
Html 5.
Плюсы. Минусы.
• Лёгкое вхождение для веб-
разработчиков
• Быстрая и как следствие более
дешевая разработка
• Единая база кода
• Плохая производительность UI
• Чужеродность UI
• Отсутствие средств разработки и
отладки “из коробки”
• Ограниченный доступ к аппаратным
возможностям
#msdevcon
Xamarin.
Плюсы. Минусы.
• Нативный UI
• 70-80% единой базы кода между
платформами
• Единый язык программирования
(C#)
• Полноценная поддержка в
VisualStudio
• Не всегда успевает за нативными
SDK
• Для компиляции под iOS нужен Mac
• Размер приложения в 1,5 раза
больше чем native
Xamarin + MvvmCross
• Кросс-платформенная инфраструктура
MVVM
• С открытым исходным кодом
• Dependency Injection built-in
• Большое количество написанных
плагинов
#msdevcon
MvvmCross доступна для
• Xamarin.iOS
• Mac
• Xamarin.Android
• Windows Presentation Foundation
• Windows Phone
• Windows 8
• Universal Windows Platform
Вспомним про паттерны
MVC MVP MVVM
VIEW
CONTROLLER
MODEL
INPUT
1
*
VIEW
PRESENTER
MODEL
INPUT
1
1
VIEW
VIEWMODEL
MODEL
1
*
INPUT
#msdevcon
Преимущества MVVM
• Максимальное разделение
логики
• Повторное использование
кода для работы с UI
• Широкие возможности по
тестированию
Model
Бизнес логика
и данные
View Model
Логика
отображения
данных на UI
View
Интерфейс
пользователя
Данные.Запись.
Данные.
Изменение.
Команды и
связывание данных.
ViewModel
private async void LoadContent()
{
Loading = true;
… Загрузка данных
Loading = false;
}
public ICommand BasketCommand
{
get{ return new MvxCommand(() =>
ShowViewModel<BasketViewModel>());}
}
private bool _loading;
public bool Loading
{
get { return _loading; }
set { _loading = value; RaisePropertyChanged(() => Loading); }
}
Купить
View iOS
Только C#
protected UIActivityIndicatorView _loading;
protected UIButton _basketButton;
var set = this.CreateBindingSet<ProductViewController, ProductViewModel>();
set.Bind(loading).For("Hidden").To(vm => vm.Loading);
set.Bind(_basketButton).To(vm => vm.BasketCommand);
set.Apply();
View Android
Без C#, только XML
<xmlns:local="http://schemas.android.com/apk/res-auto"
<ProgressBar local:MvxBind=“Visibility Visibility(Loading)“/>
<Button local:MvxBind=“Click BasketCommand“/>
#msdevcon
Демонстрация
Live Demo
Мобильное решение с использованием iBeacon,
Xamarin, MVVMCross, Azure и Яндекс.Денег
Схема решения.
Bluetooth LE
Схема решения. Часть II.
Купить
iBeacon.
• “Beacon”(англ.) – радиомаяк
• Основа Bluetooth Low Energy ,
часть Bluetooth 4.0
• Низкое энергопотребление
• Радиус вещания – 30 метров в
хороших условиях
• Передаваемая информация:
Идентификатор (UUID, Major, Minor)
• Bluetooth Low Energy
• Xamarin + MvvmCross
• Azure
• API Яндекс.Денег
Технологии.
#msdevcon
Разработка приложений для
Apple Watch и Android Wear
Вячеслав Черников
Руководитель отдела разработки, Binwell Ltd.
Смарт-часы
Что такое смарт-часы?
Дополнительный экран для смартфона
Дополнительный орган управления для смартфона
Задачи
Быстрый просмотр информации
Быстрое управление приложением на смартфоне
Ограничения
Размер экрана
Тачскрин и органы управления
Время контакта с пользователем
Основные сценарии
Мониторинг здоровья и активности
На основе показаний сенсоров
Управление окружением
Через смартфон, подключенный к сети устройств (IoT)
Бизнес-задачи
Просмотр уведомлений, статусов и краткой информации
Развлечения
Игры и мультимедиа
#msdevcon
Xamarin для Android Wear
Особенности Xamarin для Android Wear
Почти все возможности Android
Все принципы и подходы разработки Android-приложений
применимы к Android Wear
Устанавливаем Android 4.4W SDK
И не забываем про симуляторы. Есть поддержка x86
Companion App
Приложение для Wear идет вместе с хост-приложением на
смартфоне
#msdevcon
Демонстрация
Live Demo
Создаем приложение для Android Wear на Xamarin
#msdevcon
Xamarin для Apple Watch
Особенности Xamarin для Apple Watch
watchOS 2
Нативные приложения, больше контролов и поддержка анимаций
Xamarin watchOS 2 Preview
Xamarin пока поддерживает работу с watchOS 2 только на
симуляторе
Watch Connectivity
Для взаимодействия с хост-приложением
#msdevcon
Демонстрация
Live Demo
Создаем приложение для Apple Watch на Xamarin
#msdevcon
Как предусмотреть все
Антон Шунков
Technical Evangelist, Microsoft
Xamarin Family
BUILD TEST MONITOR
ACCELERATE
Качество мобильного аппа это сложно
7 Версий OS
20 Устройств
20 Языков
35 Локалей
6 Размеров
экрана
10 Версий OS
24K+ Различных устройств
39 Языков
57 Локалей
27 Размеров экрана
15 Производителей
Разнообразие Android’a
Разнообразие iOS
3D Touch
iPhone 6s s
eries only
Apple pencil
iPad Pro only
Multi Tasking
Only select iPads
iPads
iPod
touch
iPhones
Form factors iOS 9 features
Тысячи API Андроида и iOS
Публичные веб API
Интеграции с бэкендом
Сторонние библиотеки
Компоненты устройств
Сложность приложений
Tap Scroll Swipe Pinch Multi Finger
Text Entry Rotation GPS
xamarin.com/testcloud
Xamarin Family
BUILD TEST MONITOR
ACCELERATE
Поддержка платформ
✓ Xamarin.iOS
✓ Xamarin.Android
✓ Xamarin.Mac
✓ Windows Phone
✓ Windows Store
✓ Windows Desktop
Xamarin Insights
//Crash Report
Insights.Report(exception);
//Feature Usage
Insights.Track(“Splash Page”);
//Timed Events
Insights.TrackTime(“TimeToSync”);
//User Sessions
Insights.Identify(“Steve”, user_traits);
Xamarin Insights API
Отслеживание всех
событий и их длятельности
Xamarin Insights – Отслеживание событий
Совмещение отслеживания
событий с личностью
пользователя для
ускоренного исправления
проблем
Xamarin Insights – Идентификация
Автоматическое
логгирование всех не
словленных
исключений
Xamarin Insights - Отчеты
Интеграция с популярными инструментами разработки
Xamarin Insights - Интеграции
Xamarin Family
BUILD TEST MONITOR
ACCELERATE
Xamarin University
Более 60
занятий
Гостевые
лекции от
признанных
экспертов
Блиц лекции:
максимум
знаний в
коротком
формате
Станьте
сертифициро
ванным
Xamarin
экспертом
#msdevcon
Что дальше
Вы во
всеоружии
Берите от
каждой
платформы все
Show must go
on!
Не ограничивайте свое
приложение функционалом,
присутствующим на всех
платформах
Мы переходим в зону QA.
Вы всегда можете написать
нам на почту, если у вас
будут вопросы
Приходите вечером на
круглые столы с экспертами.
Вы готовы делать лучшие
кросс-платформенные
приложения
#msdevcon
Q&A
Xamarin: обзор технологии
и погружение в разработку
решений
Антон Шунков, Технический евангелист – Microsoft
Вячеслав Черников, Руководитель отдела разработки – Binwell
Денис Кретов, Технический директор – Notissimus
© 2016 Microsoft Corporation. All rights reserved.

DevCon 2016 - Xamarin

Editor's Notes

  • #32 Slide Objectives: Explain the three established industry terms for cloud services Speaker Notes: There is a lot of talk in the industry about different terms like Platform as a Service, Infrastructure as a Service, and Software as a Service. Since PDC08 when we first announced the Windows Azure our focus has been on delivering a platform as a service offering where you can build applications. Where the platform abstracts you from the complexities of building and running applications. We fundamentally believe that the future path forward for development is by providing a platform. In fact, as you’ll see in a few minutes, we believe that there are a number of new capabilities that should be delivered as services to the platform. Notes: There is a lot of confusion in the industry when it comes to the cloud. It’s important that you understand both what is happening in the industry and how we think about the cloud. This is the most commonly used taxonomy for differentiating between types of cloud services. The industry has defined three categories of services: IaaS – a set of infrastructure level capabilities such as an operating system, network connectivity, etc. that are delivered as pay for use services and can be used to host applications. PaaS – higher level sets of functionality that are delivered as consumable services for developers who are building applications. PaaS is about abstracting developers from the underlying infrastructure to enable applications to quickly be composed. SaaS – applications that are delivered using a service delivery model where organizations can simply consume and use the application. Typically an organization would pay for the use of the application or the application could be monetized through ad revenue. It is important to note that these 3 types of services may exist independently of one another or combined with one another.
  • #33 Slide Objectives: Explain the three established industry terms for cloud services Speaker Notes: There is a lot of talk in the industry about different terms like Platform as a Service, Infrastructure as a Service, and Software as a Service. Since PDC08 when we first announced the Windows Azure our focus has been on delivering a platform as a service offering where you can build applications. Where the platform abstracts you from the complexities of building and running applications. We fundamentally believe that the future path forward for development is by providing a platform. In fact, as you’ll see in a few minutes, we believe that there are a number of new capabilities that should be delivered as services to the platform. Notes: There is a lot of confusion in the industry when it comes to the cloud. It’s important that you understand both what is happening in the industry and how we think about the cloud. This is the most commonly used taxonomy for differentiating between types of cloud services. The industry has defined three categories of services: IaaS – a set of infrastructure level capabilities such as an operating system, network connectivity, etc. that are delivered as pay for use services and can be used to host applications. PaaS – higher level sets of functionality that are delivered as consumable services for developers who are building applications. PaaS is about abstracting developers from the underlying infrastructure to enable applications to quickly be composed. SaaS – applications that are delivered using a service delivery model where organizations can simply consume and use the application. Typically an organization would pay for the use of the application or the application could be monetized through ad revenue. It is important to note that these 3 types of services may exist independently of one another or combined with one another.