39 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Xamarin и кросс-платформенная разработка

Xamarin и кросс-платформенная разработка

Xamarin.Forms представляет платформу, которая нацелена на создание кроссплатформенных приложений под Android, iOS и Windows 10. Зачем использовать именно данную платформу, какие преимущества она несет? Есть определенные статистические данные, что значительная часть мобильных приложений создается более чем для одной платформы, например, для Android и iOS. Однако неизбежно разработчики сталкиваются со следующими трудностями:

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

разные API – различие в программных интерфейсах и реализациях тех или иных функциональностей также требует от программиста учет этих специфических особенностей

разные платформы для разработки. Например, чтобы создавать приложения для iOS нам необходима соответствующая среда – Mac OS X и ряд специальных инструментов, типа XCode. А в качестве языка программирования выбирается Objective-C или Swift. Для Androidа мы можем использовать самый разный набор сред – Android Studio, Eclipse и т.д. Но здесь для подавляющего большинства приложений применяется Java или Kotlin.

А для создания приложений под Windows используется Visual Studio, а в качестве языков – C#, F#, VB.NET, C++

Такой диапазон платформ, средств разработки и языков программирования не может положительно сказываться на сроках создания приложений, и, в конечном счете, на денежных средствах, выделяемых на разработку. Было бы очень эффективно иметь один инструмент, который позволял легко и просто создавать приложения сразу для всех платформ. И именно таким инструментом и является платформа Xamarin (произносится как “зэмарин”).

Xamarin позволяет создавать одну единcтвенную логику приложения с применением C# и .NET сразу для всех трех платформ – Android, iOS, UWP.

Преимущества использования Xamarin.Forms:

В процессе разработки создается единый код для всех платформ

Xamarin предоставляет прямой доступ к нативным API каждой платформы

При создании приложений мы можем использовать платформу .NET и язык программирования C# (а также F#), который является достаточно производительным, и в тоже время ясным и простым для освоения и применения

Xamarin Forms поддерживает несколько платформ. Основные платформы: Android, iOS, UWP, Tizen. Дополнительные платформы в состоянии превью: MacOS, WPF, GTK#.

Как работает Xamarin

Работу Xamarin графически можно представить следующим образом:

Xamarin работает поверх фреймворка Mono, который предоставляет opensource-реализацию .NET Framework. Mono может работать поверх разных платформ – Linix, MacOS и т.д.

На уровне каждой отдельной платформы Xamarin полагается на ряд субплатформ. В частности:

Xamarin.Android – библиотеки для создания приложений на ОС Android

Xamarin.iOS – библиотеки для создания приложений для iOS

Эти субплатформы играют большую роль – через них приложения могут напрявлять запросы к прикладным интерфейсам на устройствах под управлением ОС Android или iOS. Вкратце это выглядит следующим образом.

С помощью Xamarin.Android код C# с использованием Xamarin компилируется в Intermediate Language (IL), который затем при запуске приложения компилируется в нативную сборку. Xamarin-приложения запускаются в среде выполнения Mono. Напрямую код не может обращаться к API Android. Для этого надо обратиться к функциональность пространств имен Android.* и Java.*, которые прдоставляются виртуальной машиной Android Runtime (ART). Специальная прослойка Managed Callable Wrappers (MCW) позволяет транслировать вызова managed-кода в нативные вызовы и обращаться к функциональности пространств имен Android.* и Java.*

И наоборот, когда Android Runtime (ART) обращается к приложению с кодом Xamarin, то все вызовы проходят через обертку Android Callable Wrappers (ACW) .

Приложения Xamarin.iOS в отличие от Xamarin.Android, который использует JIT-компиляцию, применяют AOT-компиляцию (Ahead-of-Time) кода C# в нативный ARM-код. Xamarin использует промежуточный слой Selectors (селекторы) для трансляции вызовов кода Objective-C в код на C# и слой Registrars (регистраторы) для трансляции кода C# в Objective-C. В итоге слои Selectors и Registrars в целом представляют премежуточный слой, который на иллюстрации выше обозначен как “bindings” и который собственно позволяет взаимодействовать коду Objective-C с кодом C#.

В итоге благодаря этим платформам мы можем создавать отдельно приложения для Android, отдельно для iOS, но наиболее важной особенностью Xamarin является возможность создавать кроссплатформенные приложения – то есть одна логика для всех платформ. Данная возможность представлена технологией Xamarin.Forms и которая работает как бы уровнем выше Xamarin.Android и Xamarin.iOS. То есть с помощью Xamarin.Forms мы один раз можем определить визуальный интерфейс, один раз к нему привязать какую-то логику на C#, и все это будет работать на Android, iOS и Windows. Затем Xamarin.Forms с помощью рендереров (renderer) – специальных объектов для связи контроллов на XAML/C# с нативными контроллами транслируют визуальные компоненты Xamarin.Forms в графический интерфейс, специфичный для каждой платформы.

Установка Xamarin

Для разработки кроссплатформенных приложений на Xamarin нам нужна среда разработки. Для Windows такой средой является Visual Studio. То есть, если нашей ОС является Windows, то нам вначале надо установить Visual Studio 2019. При этом можно использовать в том числе и бесплатный выпуск Visual Studio 2019 Community.

При установке Visual Studio 2019 в программе для установщика обязательно надо выбрать пункт “Разработка мобильных приложений на .NET”:

После инсталляции мы сможем в меню Help -> About Microsoft Visual Studio увидеть отметку о Xamarin:

Если целевой операционной системой является Mac OS X, то в этом случе нам надо установить Visual Studio for Mac.

Кроме того, для разработки на Mac OS X требуется установить XCode, который доступен в AppStore.

Установка среды разработки Android Studio

Начать читать документацию и писать код что бы узнать на что способна платформа – это действительно заманчиво. И мы скоро это сделаем! Однако, для начала работы с платформой Android необходимо настроить среду разработки.

Новичкам в программировании под Андроид особенно важно не торопиться и методично следовать каждому шагу. Даже если вы выполняете шаги правильно, может потребоваться устранить небольшую проблему с настройкой среды в зависимости от конфигурации вашей системы или версии продукта. Для этого используйте поисковые сервисы. Особенно можно выделить ресурс StackOverflow.

Важно не допустить, чтобы какие-либо подводные камни препятствовали вашей конечной цели — обучиться Android программированию. Известно, что даже профессионалы иногда испытывают определенные проблемы с настройкой рабочего окружения. В таких случаях бывает важно знание командной строки. Если вы хотите лучше ознакомиться с этим инструментом, внизу приводится ссылка на хороший вводный туториал.

Наряду с тренировками в синтаксисе, важно обучить себя мышлению успешного программиста, которое не будет принимать сообщение об ошибке file X not found окончательным приговором. Такое мышление легко тренируется вами в случаях, если вы не сдаетесь и ищите решение возникшей проблемы.

Перейдите на страницу Android Studio developer.android.com/studio/index.html и найдите кнопку для загрузки последней версии для своей платформы.

Кликните по кнопке загрузки и вас попросят ознакомиться с правилами и условиями использования программного продукта. После внимательного прочтения (как вы всегда это делаете) и принятия, начинается загрузка. Вероятно, это займет несколько минут. После этого вы можете установить Android Studio аналогично любой другой программе. На начальной странице загрузки содержатся инструкции по установке под Mac и Windows.

Читать еще:  Для чего нужен антифрод

Теперь, когда вы установили Android Studio, давайте запустим его! Запустите Android Studio. Программа спросит, хотите ли вы импортировать свои настройки. Поскольку вы начинаете с нуля, просто выберите второй пункт и продолжайте.

Вы должны увидеть красивый загрузочный экран в стиле Material Design.

По окончанию загрузки, вы попадете на экран приветствия.

Даже в том случае, если вы только что загрузили Android Studio, у вас может быть не самая последняя версия. Чтобы избежать проблем с версиями в дальнейшем, нажмите кнопку «Check for updates now» и, если необходимо, выполнить все инструкции для получения последней версии. Иногда Studio автоматически информирует вас о том, что есть обновление с помощью экрана, подобного этому:

В этом случае всегда выбирайте Update and Restart. Отлично! Мы успешно справились с установкой среды для разработки.

На каком языке пишут приложения для iOS?

На Android и iOS код пишется по-разному и соответственно на разных языках, но разница на самом деле не столь существенная. Давайте разберем список основных языков на которых пишут приложения для iOS:

  • Swift
  • C#
  • Objective-C
  • C++

Количество разработчиков, которые знают языки программирования iOS приложений значительно меньше чем тех кто умеет писать под Android, что делает их более востребованными на рынке труда.

Swift

Swift — это прежде всего официальный язык написания кода для iOS, представленный Apple еще в 2014 году. Позаимствовав большую свою часть из Objective-C и C++, стал невероятно функциональным и простым для изучения.

Помогает избегать ошибок в коде еще на этапе разработки приложений благодаря строгой типизации объектов.

Обладает весьма удобным функционал, который делает разработку приложений для iOS простым и увлекательным процессом, среди которого можно отметить множественное возвращение значений, замыкания и дженерики. Остается наиболее востребованным языком разработки приложений для iOS даже в 2019 году т.к. большинство iOS разработчиков, предпочитают именно его.

Плюсы:

  • Упрощенная навигация;
  • Прост в изучении;
  • Легко читаемый синтаксис;
  • Взаимодействие с Objective-C;
  • Поддержка динамических библиотек.

Минусы:

  • Частые обновления требуют регулярного изучения нового материала;
  • «Мост» позволяющий взаимодействовать с Objective-C замедляет процесс сборки программы.

С его помощью можно писать не только для Android, но и для iOS, что позволяет создавать кроссплатформенные приложения.

Плюсы:

  • В сочетании с Unity 3D позволяет создавать игры;

Минусы:

  • Для его изучения необходимо обязательно знать Java.
  • В связи с тем, что C# является кроссплатформенным, приложения на нем будут не столь оптимизированными, как приложения написанные на официальных языках Apple.

Objective-C

Первый язык программирования созданный для разработки специально для устройств на базе iOS, таких как iphone, ipod, ipad. Предшественник Swift, который до сих пор часто используется разработчиками.

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

Так же, код на нем пишется не только для мобильных устройств, но и для macOS.

Плюсы:

  • Большое количество документации, которая упрощает изучение;
  • Совместимость со Swift.

Минусы:

  • Устаревший, более сложный в освоении чем Swift, в связи с чем в ближайшие несколько лет перестанет использоваться;
  • Сложный синтаксис;
  • Низкая производительность в сравнении с Swift;

C++ позволяет программировать под iOS. Обработка больших объемов данных позволяет решать сложные логические задачи, модули и писать сложные алгоритмы.

Однако полностью написать на C++ приложение не удастся, из-за чего требует совместной работы с Objective-C.

Плюсы:

  • Поддерживает объективно-ориентированное программирование, процедурное программирование и обобщенное.
  • Улучшает производительность при работе с Objective-C.

Минусы:

  • Не предназначен для полноценной разработки;
  • Непростой в изучении.

Создание веб приложения для iOS и Android

Разработка веб-приложений для операционных систем (ОС) iOS и Android – это трудоемкий процесс, заключающийся в создании специализированного программного обеспечения для решения задач заказчика.

Сегодня для создания преимущественно используется подход SCRUM, который все чаще заменяет собой традиционный каскадный подход.

Цель – создать для потребителя удобный и многофункциональный продукт в виде программного обеспечения для мобильного устройства.
Результат – удовлетворенная потребность потребителя в возможности реализовывать свои способности во всех сферах своей жизнедеятельности.

разработка веб приложений для IOS и Android

Современные виды веб-приложений

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

  • Нативные. Пишутся на языках программирования, заточенных на конкретную ОС, iOS или Android. Такие продукты быстро устанавливаются и оперативно работают, на 100% взаимодействуя с техническим потенциалом того или иного гаджета независимо от интернет-соединения. Разработка нативных приложений стоит дороже, однако полностью оправдана с позиции стратегического развития;
  • Кроссплатформенное. Это веб-приложение, которое является универсальным и разрабатывается под различные ОС. Здесь применяются не HTML5, а сторонние языки программирования, которые в последующие компилируются в нативные приложения для каждой ОС. Создание продуктов данной категории является оптимальным решением для некастомных проектов.

В зависимости от назначения веб-приложения делятся на следующие виды:

  • Развлекательные. Это приложения с играми, для обработки медиафайлов (видео, аудио и фото);
  • Социальные сети;
  • Помощники. Это прогнозы погоды, фитнес-трекеры, сборщики и анализаторы различного рода информации и данных;
  • I-commerce. Это инструменты для выполнения продаж через приложения и для оформления заказов;
  • В2В. Это инструменты для организации внутренних бизнес-процессов и организации систем контроля.

Для выбора оптимального типа с учетом особенностей вашей задачей необходимо обратиться к техническому специалисту и бизнес-аналитику.Кому и для чего нужна разработка веб-приложений для iOS и Android

  • Владельцам сайтов для увеличения пользовательской аудитории;
  • Авторам идей приложений, чтобы прекратить ее в успешный коммерческий проект;
  • Владельцам бизнеса для сокращения издержек и автоматизации процессов посредством внедрения и использования коммерческих приложений. Это также открывает ряд удобств и преимуществ для клиентов. Также это может быть площадка для эффективного взаимодействия как с клиентами, так и с персоналом;
  • Владельцам интернет-магазинов для повышения продаж (как первичных, так и вторичны) и клиентской лояльности. Также открываются возможности для оперативного информирования потребителей о новостях, приводящихся скидках, акциях и так далее;

Особенности разработки для Android

В 2020 году более 1.5 миллиарда владельцев гаджетов используют ОС Android. Это огромная аудитория, состоящая из самых разных социальных классов. Открытый код ОС открывает широкие возможности для разработчиков/

Виды веб приложений

Разработка осуществляется в строгом соответствии с требованиями и правилами Google Play . В частности, обязательно должны учитывать принципы хорошего дизайна визуального языка Material design, созданного корпорацией Google. Соблюдение данных принципов позволяет сделать интерфейс максимально удобным и интуитивно понятным для пользователей.

Особенности разработки для iOS

Созданные веб-приложения используются на двух типах устройств:

  • iPhone. Это мобильные продукты, где учитываются требования версии ОС, предъявляемые к дизайну;
  • iPad. В данном устройстве первостепенное значение имеет решение мультимедийных задач, поэтому продукты должны быть максимально адаптированными.

Разработка выполняется строго с соблюдением требований и стандартов Apple. В ходе создания интерфейсного дизайна применяются нативные паттерны . Это позволяет пользователям быстро разобраться в интерфейсе и найти нужные опции.
Специфика гибкой технологии SCRUM

Читать еще:  Недорогие смартфоны с хорошей камерой и аккумулятором

3 этапа схемы методологии

Как говорилось ранее, сегодня чаще всего применяется методология гибкой разработки SCRUM . Она реализуется короткими интеграциями, при этом заказчик контролирует каждую стадию и может вносить корректировки. Упрощенная схема методологии включает 3 этапа:

  • Выявляются и оцениваются задачи заказчика, на их основании составляется документ – «back-log»;
  • Задачи делятся на конкретные промежутки времени или спринты;
  • После реализации каждого спринта полученный результат показывается заказчику.

Таким образом, клиент получает полный контроль над процессом: каике задачи уже реализованы, какие запущены, какой получен результат.

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

Этапы разработки

Подготовительный

Клиент составляет техническое задание (ТЗ) подробно описывая желаемое приложение. Если технического задания нет, заказчик получает бриф с вопросами, на которые нужно ответить. На основании ответов заказчика специалисты выявляют приоритетные задачи и цели, составляют ТЗ.

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

Особенности web разработок

Оценка и планирование

Клиента интересует масса вопросов. Наиболее распространённые из них: сколько составит конечная стоимость и сколько потребуется времени. Для подготовки ответов технические специалисты оценивают проект и разрабатывают детальный план работы. Здесь уже подключаются менеджеры проекта, которые осуществляют координацию и выстраивают максимально эффективные коммуникации с заказчиком.

Оценка включает в себя изучение технической документации, расчет длительности тестирования и разработки, выявление не описанных возможных сценариев и слабых мест ТЗ. Экспресс-оценка может длиться от 2-3 часов до 1 дня. Далее уже можно сделать выводы о требующихся трудозатратах. Детальная оценка занимает от 2-3 рабочих дней до 1 недели. После нее уже можно точно рассчитать требующееся время и определить конечный вид продукта.

НО! Важно учитывать, что, если в ходе работы заказчик добавляет новые опции, фичи или детали, результат оценки может полностью измениться. Чем больше добавляется задач, тем больше требуется времени, следовательно, тем дальше будет релиз. С увеличением количества задач также увеличивается и бюджет.

На выходе второго этапа заказчик и команда имеют скоуп задач и расчёт бюджета.

Аналитический этап

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

На этом этапе разработчики проводят аудит всех бизнес-процессов для выявления возможностей и потенциала для совершенствования. Например, возможности и инструменты для повышения мотивации покупателей, увеличения вовлеченности и так далее.

На выходе составляется спецификация функциональный и нефункциональных требований, основа графического интерфейса или wireframes, план и детализированный бюджет.

Разработка дизайна

Если заказчик не имеет готового дизайна или его эскиза, UI/UX разрабатывается с нуля. Визуальный дизайн создается на основании графического интерфейса. Сначала прорисовывается экранная карта, далее всего графически элементы, после этого создается детализированный прототип, учитывающий сценарии использования.

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

На выходе имеется карта экранов, максимально комфортный UX, эффективный UI и общий дизайн продукта.

Разработка

Это наиболее трудоемкая часть. Разработчики пишут код, который должен полностью реализовать все запланированные действия и поведение веб-приложения, объединив серверную часть (при ее наличии) с логикой. Также в коде реализуется разработанный дизайн, его стиль и UI элементы.

Оценка и планирование web разработок

При создании нативных веб-приложений используются такие языки программирования как Swift/Objective-C (для ОС Ios) и Kotlin/ Java (для ОС Android). Для кроссплатфоменных приложений используются такие языки программирования как NativeScript и React Native.

После окончания создания функциональной части, выполняется ее тестирование.

После верстки дизайна обязательно привлекается дизайнер для проверки качества реализации скриптов, правильно ли выполнены стили, цветовая палитра, соотношение сторон и прочие элементы.

На выходе имеется версия для тестирования с откорректированным дизайном.

Тестирование, выявление и фиксация сбоев

На данном этапе подключаются QA инженеры, основной задачей которых является частое тестирование для выявления всех багов. Это позволяет достичь первоклассного качества и помочь заказчику сэкономить бюджет.

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

В результате этапа готова предрелизная версия веб-приложения и баги сведены к минимальному уровню.

Удобство пользования web-приложениями

Релиз

Если результат, полученный в ходе предыдущих этапов, одобрен заказчиком и группой исполнителей (разработчики, дизайнеры, аналитики, тестировщики), веб-приложение размещается на сайтах магазинов (Google Play, Apple App Store).

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

Техническая поддержка и развитие проекта

Публикация приложения – это далеко не последний этап. После релиза могут обнаруживаться пропущенные баги. Также первые 2-3 месяца являются стратегически важными, так как становится понятно, что нужно доделать, доработать, усовершенствовать.

Стоимость

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

Распространенным способом оплаты является частичная оплата, когда заказчик вносит сумму за каждый выполненный скрипт. После релиза и размещения в магазинах уже подписывается акт выполненных работ и из стадии разработки проект переходит в стадию поддержки и обслуживания. Техническая поддержка и обслуживание также бывают разными, поэтому здесь важно определить план развития веб-приложения, его функционал.

Приложения для потребителя

Основными факторами, влияющими на стоимость создания, являются:

  • Желаемый функционал и задачи, которые должны решаться посредством приложения;
  • Время, требующееся на разработку;
  • Уровень сложности дизайна: нужно ли соблюдать корпоративный стиль или выработать «нативный» дизайн для конкретной ОС;
  • Соответствует ли готовый продукт требованиям, правилам и стандартам Google Play и Apple App Store.

Сроки реализации проекта

Сроки также рассчитываются индивидуально для каждого приложения в зависимости от ряда факторов. Прежде всего, это перечень необходимого функционала. В среднестатистическом варианте создание веб приложения для iOS и Android занимает 4-10 рабочих недель. Длительность разработки определяется на основании числа нормо-часов, отведенных на проработку каждого блока. После выполненной оценки и подготовки прототипа рассчитываются окончательные сроки работы, которые вносятся в договор с заказчиком.

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

Описание: необычная среда разработки кроссплатформенных приложений, не требующая знания «родных» языков. То есть для того, чтобы создать приложение для Android, знание Java вам не потребуется. Используются JavaScript в связке с HTML5 и CSS3.

Читать еще:  Как работают умные часы

Недостатки: ограниченная функциональность вызванная непосредственно основной идеей нецелевой среды разработки.

А какими IDE пользуетесь вы? И какие у них недостатки?

Важнейшим элементом в процессе разработки приложения является выбор правильной IDE, зависящий не только от платформы, но и уровня собственной подготовки. Давайте познакомимся с наиболее популярными из них методом «от противного», представляя не столько их преимущества, сколько наиболее часто встречаемые укоры со стороны разработчиков.

Начнём с официальных представителей лидеров мобильного рынка: Windows, Google и Apple.

Рекомендации

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

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

Параллельно стоит уделять время самообразованию. Читайте материалы про мобильные технологии, особенности разных платформ, новинки устройств.

Кроме того, существуют различные гайдлайны, например, Human Interface Guideline от Apple, где содержатся требования к мобильным приложениям по различным аспектам. Изучайте их.

Однако учтите, что гайдлайны пишутся на английском языке, так что не забывайте про совершенствование своих навыков английского.

И еще один совет. Устанавливайте на свой смартфон различные приложения, обращайте внимание на их работу и на те дефекты, о которых вы бы сообщили разработчикам.

И, конечно, пытайтесь получить бесценный опыт работы с реальными продуктами. Фриланс , краудтестинг или начальные позиции в ИТ-компаниях – вариантов много. Подбирайте лучший для вас и дерзайте!

Сколько времени занимает создание мобильного приложения?

Процесс создания приложения для операционных систем Android, iOS, Windows Phone состоит из нескольких этапов.

  1. Бесплатная оценка стоимости (занимает около 2-х дней);
  2. Изучение задачи, рынка и конкуренции (около 5 дней);
  3. Написание технического задания в зависимости от сложности приложения (10-15 дней);
  4. Разработка дизайна (от 5 до 15 дней);
  5. Программирование занимает от 20 дней до 4 месяцев;
  6. Тестирование и мониторинг приложения проводится в течении 5 – 10 дней.

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

Создать Progressive Web App можно в 10 раз быстрее, и намного дешевле. К тому же в этом случае речь идет о гибридной, совмещенной версии приложения и сайта. Прогрессивное веб-приложение создается один раз и работает на всех платформах и устройствах, даже компания Apple уже внедрила эту технологию в свои новейшие разработки. Такое приложение попадает в смартфоны ваших клиентов по одному клику при первом же визите на сайт с мобильного устройства. Сайт с PWA остается на смартфоне клиента (на его рабочем столе), загружается в течение миллисекунд, доступен в режиме офлайн и автоматически обновляется (для этого используются Service Workers). В работу PWA встроена еще одна продвинутая технология Google — push-уведомления, которые возвращают пользователей на сайт. Инновационная технология PWA от Google только начала применяться ведущими коммерческими и медиа компаниями мира, в числе которых OLX, AliExpress, The Washington Post и другие — и уже принесла увеличение конверсии на 50% и более.

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 – сервисы прямого доступа к платформенной функциональности.

Буду благодарен за ваши отзывы и комментарии, оставайтесь на связи!

Xamarin Studio

Описание: популярный инструмент разработки приложений под Windows, Phone, Android и iOS, использующий по сути только один язык — C#. Помимо непосредственно Xamarin Studio вы также можете пользоваться плагином для Visual Studio.

Недостатки: незначительные, но тем не менее регулярные ошибки, как непосредственно в самой IDE, так и в выходном коде. Также, несмотря на репутацию кроссплатформенной среды, портировать уже готовые приложения на Xamarin достаточно затруднительно.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: