devcon 2016 - xamarin

63

Upload: anton-shunkov

Post on 15-Apr-2017

132 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: DevCon 2016 - Xamarin
Page 2: DevCon 2016 - Xamarin

#msdevcon

Windows & More Personal Computing

Xamarin: обзор технологии и погружение в разработку решенийАнтон Шунков, Технический евангелист – MicrosoftВячеслав Черников, Руководитель отдела разработки – BinwellДенис Кретов, Технический директор – Notissimus

Page 3: DevCon 2016 - Xamarin

#msdevcon

Цели

Что такое Xamarin?

Как создать свое

приложение?

Наибольший общий

делитель?Лучшие практики от

экспертовКак использовать все

уникальные фичи каждой платформы

Обзор новой технологии в семье Microsoft

Page 4: DevCon 2016 - Xamarin

#msdevcon

Будущее приложенийАнтон ШунковTechnical Evangelist, Microsoft

Page 5: DevCon 2016 - Xamarin

И не отстает от нововведен

ий платформы

Приложение моей мечты

Которое работает на

всех платформах

Нэйтив приложени

е с идеальным рейтингом

Использует все фичи

платформы

Page 6: DevCon 2016 - Xamarin

BUILD TEST MONITOR

ACCELERATE

Все, что нужно для мобильной разработки

Page 7: DevCon 2016 - Xamarin

Xamarin 4

BUILD TEST

MONITOR

ACCELERATE

Page 8: DevCon 2016 - Xamarin

Нэйтив приложения на всех платформах

Page 9: DevCon 2016 - Xamarin

Как устроен Xamarin

Общий код на C# • 100% покрытие API • Высокая производительность

iOS C# UI

Windows C# UIAndroid C# UI

Общая логика на C#

Page 10: DevCon 2016 - Xamarin

Xamarin и Xamarin.Forms

Традиционный Xamarin Xamarin.Forms

Общая C# логика

Общий UI код

iOS C# UI Android C# UI Windows C# UI

Общая C# логика

Page 11: DevCon 2016 - Xamarin

Windows API

Microsoft.Phone Microsoft.Networking

Windows.Storage

Windows.Foundation

Microsoft.Devices

System.Data System.Windows

System.Numerics System.Core System.ServiceMod

el

System.Net System System.IO System.Linq System.Xml

Page 12: DevCon 2016 - Xamarin

iOS – 100% покрытие API

MapKit UIKit iBeacon CoreGraphics CoreMotion

System.Data System.Windows

System.Numerics System.Core System.ServiceMod

el

System.Net System System.IO System.Linq System.Xml

Page 13: DevCon 2016 - Xamarin

Android – 100% покрытие API

Text-to-speech ActionBar Printing Framework Renderscript NFC

System.Data System.Windows

System.Numerics System.Core System.ServiceMod

el

System.Net System System.IO System.Linq System.Xml

Page 14: DevCon 2016 - Xamarin

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 Native

ly

Высокая производительность

Page 15: DevCon 2016 - Xamarin

Интеграция с Visual Studio

Page 16: DevCon 2016 - Xamarin

Какой Xamarin лучше для вашего приложения?

Xamarin.Forms прекрасен для:

Xamarin.iOS / Xamarin.Android лучше для:

• Приложений не использующих особые фичи разных платформ

• Приложений, в которых желательно максимизировать общий кода

• Приложений с множеством форм

• Прототипирования

Learn more: xamarin.com/forms

Learn more: xamarin.com/platform

• Приложений использующих максимум функционала разных платформ

• Приложений с дизайном по всем гайдлайном платформы

• Приложений, в которых UX гораздо важнее доли общего кода

Page 17: DevCon 2016 - Xamarin

#msdevcon

Разработка мобильных приложений с помощью Xamarin и MvvmCross.

Денис Кретов, Руководитель отдела разработкиМаксим Евтух, Разработчик Xamarin

Исходные коды доступны по адресу https://github.com/pocheshire/MobiusDemo

Page 18: DevCon 2016 - Xamarin

#msdevcon

NOTISSIMUS

• Разрабатываем на Xamarin более 3 – х лет.• Запустили 50+ проектов• Разработали отраслевое решение для Интернет-Магазинов на базе

Xamarin• Внедряем решения на базе iBeacon и Eddystone

Наша специализация

Page 19: DevCon 2016 - Xamarin

#msdevcon

Кросс-платформенная разработка мобильных приложений.Какой технологии отдать предпочтение?

Page 20: DevCon 2016 - Xamarin

#msdevcon

Native SDK.Плюсы.

Минусы.

• Они нативные! • Интеграция с аппаратной

частью без ограничений• Высокая скорость работы • Минимальный размер

приложения

• Поддержка двух и более веток кода при разработке на разные платформы.

• Время работ(трудозатраты) увеличивается пропорционально количеству платформ

Page 21: DevCon 2016 - Xamarin

#msdevcon

Html 5.Плюсы.

Минусы.

• Лёгкое вхождение для веб-разработчиков

• Быстрая и как следствие более дешевая разработка

• Единая база кода

• Плохая производительность UI

• Чужеродность UI• Отсутствие средств

разработки и отладки “из коробки”

• Ограниченный доступ к аппаратным возможностям

Page 22: DevCon 2016 - Xamarin

#msdevcon

Xamarin.Плюсы.

Минусы.

• Нативный UI• 70-80% единой базы кода

между платформами• Единый язык

программирования (C#)• Полноценная поддержка в

VisualStudio

• Не всегда успевает за нативными SDK

• Для компиляции под iOS нужен Mac

• Размер приложения в 1,5 раза больше чем native

Page 23: DevCon 2016 - Xamarin

Xamarin + MvvmCross

Общая логика на C# 60/70 %

iOS C# UI

Android C# UI

Windows C# UI

Общая логика UI

• Кросс-платформенная инфраструктура MVVM

• С открытым исходным кодом• Dependency Injection built-in • Большое количество написанных

плагинов

Page 24: DevCon 2016 - Xamarin

#msdevcon

MvvmCross доступна для• Xamarin.iOS• Mac• Xamarin.Android• Windows Presentation Foundation• Windows Phone• Windows 8• Universal Windows Platform

Page 25: DevCon 2016 - Xamarin

Вспомним про паттерныMVC MVP MVV

MVIEW

CONTROLLER

MODEL

INPUT

1

*VIEW

PRESENTER

MODEL

INPUT

1

1VIEW

VIEWMODEL

MODEL

1

*INPUT

Page 26: DevCon 2016 - Xamarin

#msdevcon

Преимущества MVVM• Максимальное

разделение логики• Повторное

использование кода для работы с UI

• Широкие возможности по тестированию

ModelБизнес

логика и данные

View ModelЛогика

отображения данных на

UI

ViewИнтерфейс

пользователя

Данные.Запись.

Данные.Изменение.

Команды и связывание данных.

Page 27: DevCon 2016 - Xamarin

ViewModelprivate 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); }}

Купить

Page 28: DevCon 2016 - Xamarin

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();

Page 29: DevCon 2016 - Xamarin

View AndroidБез C#, только XML

<xmlns:local="http://schemas.android.com/apk/res-auto"<ProgressBar local:MvxBind=“Visibility Visibility(Loading)“/><Button local:MvxBind=“Click BasketCommand“/>

Page 30: DevCon 2016 - Xamarin

#msdevcon

Демонстрация

Live DemoМобильное решение с использованием iBeacon, Xamarin, MVVMCross, Azure и Яндекс.Денег

Page 31: DevCon 2016 - Xamarin

MICROSOFT CONF IDENT IAL – INTERNAL ONLY

Схема решения.

Мобильное устройство

Azure Mobile Services

Bluetooth LEEnabled BeaconСканирование

Bluetooth LE устройств на предмет вхожденияв область сигнала

Запрос на уведомление, cодержащийUUID Beacon

Уведомлениев соответствии с UUID, открываем карточку товара

Сигнал до ~30 м

Page 32: DevCon 2016 - Xamarin

MICROSOFT CONF IDENT IAL – INTERNAL ONLY

Схема решения. Часть II.

Мобильное Приложение

Карточка ТовараКупит

ь

Веб Форма Яндекс Денег

Данные кредитнойкарты

Подтвер-ждение оплаты

API.Яндекс Денег

Page 33: DevCon 2016 - Xamarin

iBeacon.• “Beacon”(англ.) – радиомаяк• Основа Bluetooth Low Energy ,

часть Bluetooth 4.0• Низкое энергопотребление • Радиус вещания – 30 метров

в хороших условиях• Передаваемая информация:

Идентификатор (UUID, Major, Minor)

Page 34: DevCon 2016 - Xamarin

• Bluetooth Low Energy

• Xamarin + MvvmCross

• Azure

• API Яндекс.Денег

Технологии.

Page 35: DevCon 2016 - Xamarin

#msdevcon

Разработка приложений для Apple Watch и Android Wear Вячеслав ЧерниковРуководитель отдела разработки, Binwell Ltd.

Page 36: DevCon 2016 - Xamarin

Смарт-часыЧто такое смарт-часы?Дополнительный экран для смартфонаДополнительный орган управления для смартфона

ЗадачиБыстрый просмотр информации Быстрое управление приложением на смартфоне

ОграниченияРазмер экрана Тачскрин и органы управленияВремя контакта с пользователем

Page 37: DevCon 2016 - Xamarin

Основные сценарииМониторинг здоровья и активностиНа основе показаний сенсоров

Управление окружениемЧерез смартфон, подключенный к сети устройств (IoT)

Бизнес-задачиПросмотр уведомлений, статусов и краткой информации

РазвлеченияИгры и мультимедиа

Page 38: DevCon 2016 - Xamarin

#msdevcon

Xamarin для Android Wear

Page 39: DevCon 2016 - Xamarin

Особенности Xamarin для Android WearПочти все возможности AndroidВсе принципы и подходы разработки Android-приложений применимы к Android Wear

Устанавливаем Android 4.4W SDKИ не забываем про симуляторы. Есть поддержка x86

Companion AppПриложение для Wear идет вместе с хост-приложением на смартфоне

Page 40: DevCon 2016 - Xamarin

#msdevcon

Демонстрация

Live DemoСоздаем приложение для Android Wear на Xamarin

Page 41: DevCon 2016 - Xamarin

#msdevcon

Xamarin для Apple Watch

Page 42: DevCon 2016 - Xamarin

Особенности Xamarin для Apple WatchwatchOS 2Нативные приложения, больше контролов и поддержка анимаций

Xamarin watchOS 2 PreviewXamarin пока поддерживает работу с watchOS 2 только на симуляторе

Watch ConnectivityДля взаимодействия с хост-приложением

Page 43: DevCon 2016 - Xamarin

#msdevcon

Демонстрация

Live DemoСоздаем приложение для Apple Watch на Xamarin

Page 44: DevCon 2016 - Xamarin

#msdevcon

Как предусмотреть всеАнтон ШунковTechnical Evangelist, Microsoft

Page 45: DevCon 2016 - Xamarin

Xamarin Family

BUILD

TEST MONITOR

ACCELERATE

Page 46: DevCon 2016 - Xamarin

Качество мобильного аппа это сложно

7 Версий OS20 Устройств20 Языков35 Локалей6 Размеров

экрана

10 Версий OS24K+ Различных устройств39 Языков57 Локалей27 Размеров экрана15 Производителей

Page 47: DevCon 2016 - Xamarin

Разнообразие Android’a

Page 48: DevCon 2016 - Xamarin

Разнообразие iOS3D TouchiPhone 6s s eries only

Apple penciliPad Pro only

Multi TaskingOnly select

iPads

iPads

iPod touch

iPhones

Form factors

iOS 9 features

Page 49: DevCon 2016 - Xamarin

Тысячи API Андроида и iOS

Публичные веб API

Интеграции с бэкендом

Сторонние библиотеки

Компоненты устройств

Сложность приложений

Page 50: DevCon 2016 - Xamarin

Tap

Scroll

Swipe

Pinch Multi Finger

Text Entry

Rotation

GPS

Page 51: DevCon 2016 - Xamarin

xamarin.com/testcloud

Page 52: DevCon 2016 - Xamarin

Xamarin Family

BUILD

TEST

MONITOR

ACCELERATE

Page 53: DevCon 2016 - Xamarin

Поддержка платформ

✓ Xamarin.iOS✓ Xamarin.Android✓ Xamarin.Mac✓ Windows Phone✓ Windows Store✓ Windows Desktop

Xamarin Insights

Page 54: DevCon 2016 - Xamarin

//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

Page 55: DevCon 2016 - Xamarin

Отслеживание всех событий и их длятельности

Xamarin Insights – Отслеживание событий

Page 56: DevCon 2016 - Xamarin

Совмещение отслеживания событий с личностью пользователя для ускоренного исправления проблем

Xamarin Insights – Идентификация

Page 57: DevCon 2016 - Xamarin

Автоматическое логгирование всех не словленных исключений

Xamarin Insights - Отчеты

Page 58: DevCon 2016 - Xamarin

Интеграция с популярными инструментами разработки

Xamarin Insights - Интеграции

Page 59: DevCon 2016 - Xamarin

Xamarin Family

BUILD

TEST

MONITOR

ACCELERATE

Page 60: DevCon 2016 - Xamarin

Xamarin University

Более 60 занятий

Гостевые лекции от

признанных экспертов

Блиц лекции: максимум знаний в коротком формате

Станьте сертифицированным Xamarin

экспертом

Page 61: DevCon 2016 - Xamarin

#msdevcon

Что дальше

Вы во всеоружии

Берите от каждой

платформы все

Show must go on!

Не ограничивайте свое приложение

функционалом, присутствующим на всех

платформах

Мы переходим в зону QA.

Вы всегда можете написать нам на почту,

если у вас будут вопросы

Приходите вечером на круглые столы с

экспертами.

Вы готовы делать лучшие кросс-

платформенные приложения

Page 62: DevCon 2016 - Xamarin

#msdevcon

Q&A

Xamarin: обзор технологии и погружение в разработку решенийАнтон Шунков, Технический евангелист – MicrosoftВячеслав Черников, Руководитель отдела разработки – BinwellДенис Кретов, Технический директор – Notissimus

Page 63: DevCon 2016 - Xamarin

© 2016 Microsoft Corporation. All rights reserved.