- PVSM.RU - https://www.pvsm.ru -
Уважаемые читатели, рады представить вам книгу “Разработка мобильных приложений на C# для iOS и Android” от уже хорошо известного вам автора и эксперта в Xamarin, Вячеслава Черникова из компании Binwell. Без долгих прелюдий передаю слово автору.
В книге подробно и с большим количеством примеров кода раскрываются следующие темы: сравнение нативных и кроссплатформенных инструментов на примере Xamarin, ReactNative, PhoneGap, Qt и Flutter; проектирование и техническая документация для кода; архитектура и структура проекта, раскладываем все по местам; Mobile DevOps и автоматизация сборки, тестирования, поставки и мониторинга; практические советы на каждый день.
Книгу можно купить на сайте издательства «ДМК Пресс [1]» (самый дешевый вариант!) и интернет-магазинах Лабиринт [2], My-Shop.ru [3], Flip.kz [4], Oz.by [5], а также других интернет-магазинах, их количество увеличивается по мере распространения книги.
Для затравки (и с согласия издателя) приведу кусочек Главы 3.
Итак, мы уже познакомились с тем, как работает Xamarin.Forms и как провести техническое проектирование своими силами. Теперь у нас есть понимание о модели предметной области, и пришло время переходить к архитектуре и структуре решения – как мы будем распределять наши классы по папкам, чтобы потом было легко находить нужный код.
В мобильных приложениях традиционно применяется многослойная архитектура с отделением слоев доступа к данным, слоя бизнес-логики и слоя отображения пользовательского интерфейса.
Рис. 3.1. Классическая трехуровневая архитектура
Так как родным для Xamarin.Forms является архитектурный паттерн MVVM, то именно его рекомендуется использовать в мобильных приложениях. MVVM описывает связь View (обычно это экраны приложения — Page), ViewModel и Model.
Рис. 3.2. Паттерн MVVM
Таким образом, типовая архитектура приложения на базе Xamarin.Forms будет следующей:
Рис. 3.4. Базовая архитектура приложения на Xamarin.Forms
В рамках данной книги мы остановимся на представленной архитектуре, так как она является классической для Xamarin.Forms. Более подробно каждый из модулей будет описан в следующих разделах.
Если вспомнить основы, то программа — это набор алгоритмов и данных. Мобильные приложения не стали исключением. Архитектура позволяет отделить алгоритмы и данные различного предназначения друг от друга.
В мобильных приложениях условно можно выделить следующие виды алгоритмов:
Рис. 3.5. Структура пустого проекта на Xamarin.Forms
Если же переходить к тому, как поддерживать код “в тонусе” (минимальный технический долг), то важным для команды является следование единым соглашениям. Ниже мы рассмотрим пример разделения классов по папкам, который будет соответствовать описанной архитектуре.
Но для начала вспомним о данных. Здесь важно понимать, о каких из них будет идти речь. Есть данные, которые приходят с сервера (data transfer object, dto), а есть те, что обрабатываются в приложении (models, entities, data objects). Отметим, что удобнее сразу получать готовые данные со слоя DAL, чтобы дальше с ними было проще работать. Подробнее об этом мы поговорим в разделе 3.5.
Также в мобильных приложениях нет такого количества данных, чтобы требовалось делать толстые модели и «размазывать» бизнес-логику по ним (подход из больших корпоративных систем). Достаточно обычных POCO (Plain Old CLR Object) без какой-либо логики. Итак, все готовые данные приходят со слоя DAL, там же внутри спрятаны классы DTO, о которых не знают другие слои. Ниже показано различие между «толстыми» моделями и POCO-объектами.
Рис. 3.6. Отличие «толстой» Model от POCO-объекта
Далее мы будем придерживаться следующих обозначений:
Буду благодарен за ваши отзывы и комментарии, оставайтесь на связи!
Автор: Александр Гуреев
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-2/344161
Ссылки в тексте:
[1] ДМК Пресс: https://dmkpress.com/catalog/computer/programming/mobile/978-5-97060-805-1/
[2] Лабиринт: https://www.labirint.ru/books/727089/
[3] My-Shop.ru: https://my-shop.ru/shop/product/3884917.html
[4] Flip.kz: https://www.flip.kz/catalog?prod=1537759
[5] Oz.by: https://oz.by/books/more10914914.html
[6] Источник: https://habr.com/ru/post/484602/?utm_source=habrahabr&utm_medium=rss&utm_campaign=484602
Нажмите здесь для печати.