company_banner

Книга “Разработка мобильных приложений на C# для iOS и Android”

    Уважаемые читатели, рады представить вам книгу “Разработка мобильных приложений на C# для iOS и Android” от уже хорошо известного вам автора и эксперта в Xamarin, Вячеслава Черникова из компании Binwell. Без долгих прелюдий передаю слово автору.



    Добрый день, уважаемый хабрачитатель. За последние несколько лет я написал довольно много статей и руководств по разработке мобильных приложений с помощью C# и фреймворка Xamarin, однако изначально все эти руководства и часть статей задумывались как главы моей первой книги, которая, наконец, увидела свет. Будучи собраны в одно целое (и там очень много того, что ранее не публиковалось!), материалы книги позволят вывести процесс разработки мобильных приложений на качественно новый уровень – начиная с выбора инструмента и подготовки документации, а заканчивая автоматизацией процесса разработки и решением частых задач. Данная книга задумывалась как гармоничное дополнение к тем материалам по Xamarin, которые уже есть на русском и английском языках, раскрывая такие вопросы, как проектирование, архитектура, создание скелета (каркаса) проекта, все то, что обычно остается за кадром большинства книг и учебных курсов.

    В книге подробно и с большим количеством примеров кода раскрываются следующие темы: сравнение нативных и кроссплатформенных инструментов на примере Xamarin, ReactNative, PhoneGap, Qt и Flutter; проектирование и техническая документация для кода; архитектура и структура проекта, раскладываем все по местам; Mobile DevOps и автоматизация сборки, тестирования, поставки и мониторинга; практические советы на каждый день.



    Книгу можно купить на сайте издательства «ДМК Пресс» (самый дешевый вариант!) и интернет-магазинах Лабиринт, My-Shop.ru, Flip.kz, Oz.by, а также других интернет-магазинах, их количество увеличивается по мере распространения книги.

    Для затравки (и с согласия издателя) приведу кусочек Главы 3.

    3. Архитектура приложения


    Итак, мы уже познакомились с тем, как работает Xamarin.Forms и как провести техническое проектирование своими силами. Теперь у нас есть понимание о модели предметной области, и пришло время переходить к архитектуре и структуре решения – как мы будем распределять наши классы по папкам, чтобы потом было легко находить нужный код.

    3.1. Многослойный MVVM


    В мобильных приложениях традиционно применяется многослойная архитектура с отделением слоев доступа к данным, слоя бизнес-логики и слоя отображения пользовательского интерфейса.


    Рис. 3.1. Классическая трехуровневая архитектура

    Так как родным для Xamarin.Forms является архитектурный паттерн MVVM, то именно его рекомендуется использовать в мобильных приложениях. MVVM описывает связь View (обычно это экраны приложения — Page), ViewModel и Model.


    Рис. 3.2. Паттерн MVVM

    Таким образом, типовая архитектура приложения на базе Xamarin.Forms будет следующей:


    Рис. 3.4. Базовая архитектура приложения на Xamarin.Forms

    В рамках данной книги мы остановимся на представленной архитектуре, так как она является классической для Xamarin.Forms. Более подробно каждый из модулей будет описан в следующих разделах.

    3.2. Декомпозиция по слоям


    Если вспомнить основы, то программа — это набор алгоритмов и данных. Мобильные приложения не стали исключением. Архитектура позволяет отделить алгоритмы и данные различного предназначения друг от друга.

    В мобильных приложениях условно можно выделить следующие виды алгоритмов:

    1. управление поведением и внешним видом компонентов пользовательского интерфейса (user interface, UI);
    2. логика взаимодействия с пользователем и бизнес-сценарии (business logic, BL);
    3. логика получения, хранения и преобразования данных (data access layer, DAL);
    4. платформенная функциональность, не связанная с пользовательским интерфейсом (platform).
    5. Есть также множество дополнительных алгоритмов вроде инициализации приложения или дополнительных вспомогательных классов и расширений (Extensions), но их не так просто классифицировать, так как они специфичны для проектов, команд и выбранных библиотек.
    6. Ниже показана структура пустого проекта на 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-объекта

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

    1. Data Objects – плоские (POCO) модели данных, с которыми будет дальше работать бизнес-логика.
    2. Data Services – сервисы получения, преобразования и хранения данных.
    3. Business Services – сервисы обработки данных и бизнес-сценарии.
    4. Platform Services – сервисы прямого доступа к платформенной функциональности.

    Буду благодарен за ваши отзывы и комментарии, оставайтесь на связи!
    Microsoft
    Microsoft — мировой лидер в области ПО и ИТ-услуг

    Комментарии 10

      +1
      Насколько актуален сейчас Xamarin?
        +1
        На иностранном рынке очень актуален, в русскоязычном сообществе у нас 1300+ разработчиков в телеграмм чатике.
        Сам пишу на Xamarin, предпочитаю Forms)
          0
          предпочитаю Forms)

          Когда вошел в зону комфорта из которой очень тяжело выйти. А так Forms действительно очень классная штука, когда надо сварканить прототип на коленке. Для более изысканных UI в Forms много костылить приходится..(
        0
        А если сравнивать с Avalonia?
          0
          Avalonia выглядит неплохо на бумаге, но на практике там очень мало готовых компонентов/библиотек, что пока не позволяет говорить о реальном использовании — постоянно надо переизобретать велосипед. За Avalonia стоит относительно небольшое сообщество разработчиков, а за Xamarin — довольно большой штат профессионалов из Microsoft.
            0
            Avalonia — это единый подход на все платформы
            Xamarin — просто адаптация платформ к .NET
          0
          В электронном виде где-нибудь можно купить? Не будучи мобильным разработчиком, я бы полистал, последовательное введение в тему полезная штука.
            +1
            Пока только бумажная версия, попробую уговорить издателя запустить продажи и PDF-версии.
              +2
              Получил ответ от издателя: PDF можно купить на сайте https://dmkpress.com. Но для этого надо в комментарии к заказу написать, что нужна эл. версия, и в ручном режиме операторы вышлют ссылку на PDF. По ценам PDF пока не знаю, сколько это будет. Скоро электронная версия также будет доступа на ЛитРес.
            0
            Было бы прикольно хотя бы обзорная глава по Fabulous и Model-View-Update шаблону

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое