Презентация с нашего доклада в рамках Microsoft DevCon School "Современная архитектура": https://events.techdays.ru/Modern-Architecture/2017-04/
Во время доклада мы рассказывали о роли мобильных приложений для бизнеса, подходу к созданию архитектуры мобильных приложений на базе MVVM и DDD, а также дополнительно рассмотрели использование конвейера Mobile DevOps и автоматизированного UI-тестирования.
6. 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
Многослойная архитектура
7. MVVM для вертикальной декомпозиции
DDD для горизонтальной декомпозиции
Unit-тесты для DAL, UI-тесты для UI+BL
Convention over configuration
Не нужна архитектура? Тогда мы идем к вам!
9. Максимальная изоляция и бронебойность
Никаких exception наружу! Проверки NULL!
Stateless, multithreading, cancellation token
DAL как черный ящик
10. Mock для прототипов, верстки, отладки. Быстро и просто из JSON-
файлов
DAL и mock-данные
11. Изоляция DTO на уровне DAL Remote Services
class DataObject = POCO-объект, отдельный DataConverter, Mock
из DataObject
struct RequestResult<T> = Data, Status, ErrorMessage, T is
DataObject
DAL и виды данных
17. 1. Напрямую вызывать методы DAL и получать чистые Data
Objects
2. Обращаться к Platform Services через DependencyService
3. Подключаться к Page через Binding
4. Посылать сообщения на уровень UI и другой ViewModel
Что нужно ViewModel?
18. Есть Bindings, Commands, MessagingCenter,
DependencyService
Нужен Navigation Service и Dialog Service для отделения
ViewModel (BL) от UI. Нужен StateContainer для Page States
Xamarin.Forms и MVVM
20. Части UI
Pages = страницы
Views = элементы страниц без повторного использования
Controls = элементы страниц для повторного использования
Layouts = компоновщики для Pages, Views
Converters = конвертеры для Binding
App = application lifecycle
27. «И так сойдет!»
1. Мне не нужна архитектура!
2. Да черт с ними, с этими связями,
само распутается
3. Да кому оно нужно, отделять
алерты от ошибок загрузки данных
28. 4. Перебдел и наплодил кучу
проектов, раскидал модели и логику
по всем
5. Недобдел и забыл про NULL
6. Я просто люблю лапшу
Добрый день, уважаемые коллеги. Меня зовут Черников Вячеслав и я представляю компанию Binwell, которая занимается разработкой мобильных и облачных приложений под заказ. В своем докладе я расскажу об архитектуре мобильных бизнес-приложений.
Чтобы лучше понять, зачем и какие архитектуры необходимы мобильным приложениям, мы рассмотрим процесс разработки с нескольких позиций. Для начала мы рассмотрим, что же такое мобильные приложения для бизнеса. Самый большой блок доклада будет посвящен архитектуре MVVM, которая используется в приложениях на базе Xamarin.Forms. И в завершении мы рассмотрим, как инструменты и практики DevOps позволяют упростить процесс разработки мобильных приложений.
Говоря о мобильных бизнес-приложениях, стоит отметить, что это в первую очередь интерфейс взаимодействия с внешним бизнес-процессом. Мобильные приложения очень быстро вошли в нашу жизнь и уже наступила эпоха Mobile First, когда персональные компьютеры выходят на второй план. Для большинства крупных компаний трансформация уже началась и это порождает большое количество вопросов, так как мобильные приложения требуют своего подхода к разработке, проектированию и компетенций как минимум в iOS и Android.
Также, говоря о mobile, стоит учитывать, что на рынке сейчас много молодых специалистов и большинство из них пока не обладает достаточным пониманием архитектурных вопросов.
И если рассматривать кросс-платформенную разработку, то здесь помимо ключевых компетенций в самих целевых платформах, команда должна обладать дополнительной компетенцией именно в кросс-платформенной разработке.
Для успешного функционирования
Если с репозиторием для кода все понятно, то вот систему сборки многие разработчики могут попробовать собрать у себя на коленке. Если вам нужны приключения, у вас есть шаманский бубен, борода и свитер – то это ваш путь Остальным же можно порекомендовать готовые решения. Одним из лучших и недорогих инструментов для сборки в настоящий момент является сервис Bitrise, поддерживающий все популярные стеки мобильной разработки, включая Xamarin и ReactNative. Например, кто-нибудь из команды отправил команду в мессендежер Slack (не важно кто!) и через несколько минут (ну или десяти минут для очень больших проектов) получил ссылку на установочный пакет с последним или указанным коммитом.
Для автоматизированного UI-тестирования уже есть около десятка различных ферм, включая сервисы от Amazon и Google. Однако, Xamarin Test Cloud является одним из самых функциональных и удобных. Поэтому мы рекомендуем использовать именно его.
Если UI-тесты прошли успешно, то приложение можно передавать для ручного тестирования. Для этого его можно загрузить в сервис HockeyApp, который по совместительству собирает статистику и крешы при работе приложений.
Теперь цикл замыкается и есть понимание о качестве продукта. Стоит добавить, что Microsoft не так давно представила свой интегрированный конвейер DevOps на базе Xamarin Test Cloud и HockeyApp под названием Visual Studio Mobile Center. Он еще находится в стадии Preview и имеет существенные ограничения, но для знакомства вполне подходит.