SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Современная архитектура
Архитектура мобильных
приложений с примерами на
Xamarin.Forms
Вячеслав Черников
Руководитель отдела разработки, Binwell Ltd.
#msdevcon
Mobile для бизнес-процессов
Многослойный MVVM
Mobile DevOps
Business Mobile =
интерфейс для бизнес-
процесса
Mobile = много
молодых специалистов
Crossplatform Mobile = баланс
между платформами
Управление сложностью
Реальность и модель
Модель предметной области (DDD)
Модель приложения (MVVM +
DDD)
App, Navigation Service, Dialog Service, Pages, Controls,
Views, Converters, Layouts
ViewModels, Models = Data Objects,
BL Services
Data Services, Data ObjectsDAL
BL
UI
Platform Service
Interfaces,
Settings
Platform
Services
Native
Renderers,
Effects
iOS/Android/Windows
application, styles, resourcesBackend
Многослойная архитектура
MVVM для вертикальной декомпозиции
DDD для горизонтальной декомпозиции
Unit-тесты для DAL, UI-тесты для UI+BL
Convention over configuration
Не нужна архитектура? Тогда мы идем к вам!
#msdevcon
Data Access Layer (DAL)
Максимальная изоляция и бронебойность
Никаких exception наружу! Проверки NULL!
Stateless, multithreading, cancellation token
DAL как черный ящик
Mock для прототипов, верстки, отладки. Быстро и просто из JSON-
файлов
DAL и mock-данные
Изоляция DTO на уровне DAL Remote Services
class DataObject = POCO-объект, отдельный DataConverter, Mock
из DataObject
struct RequestResult<T> = Data, Status, ErrorMessage, T is
DataObject
DAL и виды данных
Azure Middleware, Proxy-сценарий (Security)
Azure Middleware, Sync-сценарий (Content)
#msdevcon
Business Logic/Layer (BL)
Business Logic
Page States
1. Напрямую вызывать методы DAL и получать чистые Data
Objects
2. Обращаться к Platform Services через DependencyService
3. Подключаться к Page через Binding
4. Посылать сообщения на уровень UI и другой ViewModel
Что нужно ViewModel?
Есть Bindings, Commands, MessagingCenter,
DependencyService
Нужен Navigation Service и Dialog Service для отделения
ViewModel (BL) от UI. Нужен StateContainer для Page States
Xamarin.Forms и MVVM
#msdevcon
User Interface (UI)
Части UI
Pages = страницы
Views = элементы страниц без повторного использования
Controls = элементы страниц для повторного использования
Layouts = компоновщики для Pages, Views
Converters = конвертеры для Binding
App = application lifecycle
Рендереры
#msdevcon
О процессе
Пример карты переходов и состояний
#msdevcon
Ошибки из-за архитектуры
«И так сойдет!»
1. Мне не нужна архитектура!
2. Да черт с ними, с этими связями,
само распутается
3. Да кому оно нужно, отделять
алерты от ошибок загрузки данных
4. Перебдел и наплодил кучу
проектов, раскидал модели и логику
по всем
5. Недобдел и забыл про NULL
6. Я просто люблю лапшу
#msdevcon
Q&A
Архитектура мобильных
приложений с примерами на
Xamarin.Forms
Вячеслав Черников
slava.chernikoff@binwell.com
© 2016 Microsoft Corporation. All rights reserved.

Weitere ähnliche Inhalte

Was ist angesagt?

Средства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCodeСредства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCodegeekfamilyrussia
 
Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....
Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....
Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....Viseven
 
Api Adobe Suslov
Api Adobe SuslovApi Adobe Suslov
Api Adobe SuslovAlex Ilyin
 
Symfony 2 в мобильных приложениях
Symfony 2 в мобильных приложенияхSymfony 2 в мобильных приложениях
Symfony 2 в мобильных приложенияхAleksey Denysyuk
 
CMS как SaaS. Российские реалии
CMS как SaaS. Российские реалииCMS как SaaS. Российские реалии
CMS как SaaS. Российские реалииMedia Gorod
 
мобильная сэд будущее уже наступило доксвижн
мобильная сэд будущее уже наступило доксвижнмобильная сэд будущее уже наступило доксвижн
мобильная сэд будущее уже наступило доксвижнExpolink
 
Мобильная СЭД
Мобильная СЭДМобильная СЭД
Мобильная СЭДDocsvision
 
LiveTex Mobile SDK
LiveTex Mobile SDKLiveTex Mobile SDK
LiveTex Mobile SDKLiveTex
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...it-people
 

Was ist angesagt? (10)

Средства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCodeСредства кросплатформенной разработки. Xamarin и ApperCode
Средства кросплатформенной разработки. Xamarin и ApperCode
 
Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....
Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....
Эволюция продвижения медицинских препаратов. Держим руку на пульсе инноваций....
 
Api Adobe Suslov
Api Adobe SuslovApi Adobe Suslov
Api Adobe Suslov
 
Symfony 2 в мобильных приложениях
Symfony 2 в мобильных приложенияхSymfony 2 в мобильных приложениях
Symfony 2 в мобильных приложениях
 
CMS как SaaS. Российские реалии
CMS как SaaS. Российские реалииCMS как SaaS. Российские реалии
CMS как SaaS. Российские реалии
 
мобильная сэд будущее уже наступило доксвижн
мобильная сэд будущее уже наступило доксвижнмобильная сэд будущее уже наступило доксвижн
мобильная сэд будущее уже наступило доксвижн
 
Мобильная СЭД
Мобильная СЭДМобильная СЭД
Мобильная СЭД
 
LiveTex Mobile SDK
LiveTex Mobile SDKLiveTex Mobile SDK
LiveTex Mobile SDK
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 

Ähnlich wie Архитектура мобильных приложений с примерами на Xamarin.Forms [RUSSIAN]

ПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийВиктор Золотов
 
DevCon 2016 - Xamarin
DevCon 2016 - XamarinDevCon 2016 - Xamarin
DevCon 2016 - XamarinAnton Shunkov
 
AZadonsky Mobile Applications Development
AZadonsky Mobile Applications DevelopmentAZadonsky Mobile Applications Development
AZadonsky Mobile Applications DevelopmentVasily Demin
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
 
Строим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэндыСтроим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэндыDenis Ivanov
 
Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?Michael Kozloff
 
Api Microsoft Loghechkin
Api Microsoft LoghechkinApi Microsoft Loghechkin
Api Microsoft LoghechkinAlex Ilyin
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidDataArt
 
Краткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложенийКраткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложенийTatsiana Ramanchik
 
Паттерны проектирования
Паттерны проектированияПаттерны проектирования
Паттерны проектированияITCP Community
 
Архитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.NetАрхитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.NetGoSharp
 
Возможности интеграции с Office 365
Возможности интеграции с Office 365Возможности интеграции с Office 365
Возможности интеграции с Office 365Natalia Efimtseva
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...CEE-SEC(R)
 
Обзор мобильной платформы Bada
Обзор мобильной платформы BadaОбзор мобильной платформы Bada
Обзор мобильной платформы BadaEugene Mokeev
 
Среда разработки. Путь от ПК к докеру
Среда разработки. Путь от ПК к докеруСреда разработки. Путь от ПК к докеру
Среда разработки. Путь от ПК к докеруDmitry Morozov
 
Droidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - Zvooq
Droidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - ZvooqDroidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - Zvooq
Droidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - ZvooqMail.ru Group
 
Архитектура CompanyMedia next
Архитектура CompanyMedia nextАрхитектура CompanyMedia next
Архитектура CompanyMedia nextИнтерТраст
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureAndrew Mayorov
 

Ähnlich wie Архитектура мобильных приложений с примерами на Xamarin.Forms [RUSSIAN] (20)

ПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решений
 
DevCon 2016 - Xamarin
DevCon 2016 - XamarinDevCon 2016 - Xamarin
DevCon 2016 - Xamarin
 
AZadonsky Mobile Applications Development
AZadonsky Mobile Applications DevelopmentAZadonsky Mobile Applications Development
AZadonsky Mobile Applications Development
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
 
Строим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэндыСтроим простые и масштабируемые бекэнды
Строим простые и масштабируемые бекэнды
 
Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?
 
Fullstack javascript. Isomorphic apps
Fullstack javascript. Isomorphic appsFullstack javascript. Isomorphic apps
Fullstack javascript. Isomorphic apps
 
Api Microsoft Loghechkin
Api Microsoft LoghechkinApi Microsoft Loghechkin
Api Microsoft Loghechkin
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Краткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложенийКраткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложений
 
Паттерны проектирования
Паттерны проектированияПаттерны проектирования
Паттерны проектирования
 
Архитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.NetАрхитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.Net
 
Возможности интеграции с Office 365
Возможности интеграции с Office 365Возможности интеграции с Office 365
Возможности интеграции с Office 365
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
 
Обзор мобильной платформы Bada
Обзор мобильной платформы BadaОбзор мобильной платформы Bada
Обзор мобильной платформы Bada
 
Среда разработки. Путь от ПК к докеру
Среда разработки. Путь от ПК к докеруСреда разработки. Путь от ПК к докеру
Среда разработки. Путь от ПК к докеру
 
Droidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - Zvooq
Droidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - ZvooqDroidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - Zvooq
Droidcon Moscow 2015. Clean Architecture и MVP. Алексей Макаров - Zvooq
 
Архитектура CompanyMedia next
Архитектура CompanyMedia nextАрхитектура CompanyMedia next
Архитектура CompanyMedia next
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
 

Архитектура мобильных приложений с примерами на Xamarin.Forms [RUSSIAN]

Hinweis der Redaktion

  1. Добрый день, уважаемые коллеги. Меня зовут Черников Вячеслав и я представляю компанию Binwell, которая занимается разработкой мобильных и облачных приложений под заказ. В своем докладе я расскажу об архитектуре мобильных бизнес-приложений.
  2. Чтобы лучше понять, зачем и какие архитектуры необходимы мобильным приложениям, мы рассмотрим процесс разработки с нескольких позиций. Для начала мы рассмотрим, что же такое мобильные приложения для бизнеса. Самый большой блок доклада будет посвящен архитектуре MVVM, которая используется в приложениях на базе Xamarin.Forms. И в завершении мы рассмотрим, как инструменты и практики DevOps позволяют упростить процесс разработки мобильных приложений.
  3. Говоря о мобильных бизнес-приложениях, стоит отметить, что это в первую очередь интерфейс взаимодействия с внешним бизнес-процессом. Мобильные приложения очень быстро вошли в нашу жизнь и уже наступила эпоха Mobile First, когда персональные компьютеры выходят на второй план. Для большинства крупных компаний трансформация уже началась и это порождает большое количество вопросов, так как мобильные приложения требуют своего подхода к разработке, проектированию и компетенций как минимум в iOS и Android. Также, говоря о mobile, стоит учитывать, что на рынке сейчас много молодых специалистов и большинство из них пока не обладает достаточным пониманием архитектурных вопросов. И если рассматривать кросс-платформенную разработку, то здесь помимо ключевых компетенций в самих целевых платформах, команда должна обладать дополнительной компетенцией именно в кросс-платформенной разработке.
  4. Для успешного функционирования
  5. Если с репозиторием для кода все понятно, то вот систему сборки многие разработчики могут попробовать собрать у себя на коленке. Если вам нужны приключения, у вас есть шаманский бубен, борода и свитер – то это ваш путь  Остальным же можно порекомендовать готовые решения. Одним из лучших и недорогих инструментов для сборки в настоящий момент является сервис Bitrise, поддерживающий все популярные стеки мобильной разработки, включая Xamarin и ReactNative. Например, кто-нибудь из команды отправил команду в мессендежер Slack (не важно кто!) и через несколько минут (ну или десяти минут для очень больших проектов) получил ссылку на установочный пакет с последним или указанным коммитом. Для автоматизированного UI-тестирования уже есть около десятка различных ферм, включая сервисы от Amazon и Google. Однако, Xamarin Test Cloud является одним из самых функциональных и удобных. Поэтому мы рекомендуем использовать именно его. Если UI-тесты прошли успешно, то приложение можно передавать для ручного тестирования. Для этого его можно загрузить в сервис HockeyApp, который по совместительству собирает статистику и крешы при работе приложений. Теперь цикл замыкается и есть понимание о качестве продукта. Стоит добавить, что Microsoft не так давно представила свой интегрированный конвейер DevOps на базе Xamarin Test Cloud и HockeyApp под названием Visual Studio Mobile Center. Он еще находится в стадии Preview и имеет существенные ограничения, но для знакомства вполне подходит.