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

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

Подход, используемый в этом документе, можно использовать как для приложений для повышения производительности, так и для игровых приложений, однако основное внимание уделяется производительности и служебной программе (не игровым приложениям). Рекомендации по разработке кроссплатформенных игр см. в Инструменты Visual Studio для Unity.

Фраза "запись один раз, запуск везде" часто используется для извлечения добродетелей одной базы кода, которая выполняется неизмененных на нескольких платформах. Хотя он имеет преимущество повторного использования кода, этот подход имеет недостатки. Два распространенных недостатка — это приложения, имеющие набор функций с наименьшим общим знаменателем и универсальный пользовательский интерфейс, который не подходит для любой из целевых платформ.

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

Ниже приведена сводка ключевых моментов для создания кроссплатформенных приложений Xamarin:

  • Использование C# — запись приложений в C#. Существующий код, написанный на C#, можно перенести в iOS и Android с помощью Xamarin и использовать в приложениях Windows.
  • Используйте шаблоны проектирования MVC или MVVM. Разработка пользовательского интерфейса приложения с помощью шаблона модели или представления или контроллера. Создайте приложение с помощью подхода модели, представления или контроллера или подхода Model/ViewModel, где существует четкое разделение между моделью и остальными. Определите, какие части приложения будут использовать собственные элементы пользовательского интерфейса каждой платформы (iOS, Android, Windows, Mac) и используйте это в качестве руководства для разделения приложения на два компонента: Core и User-Interface.
  • Создание собственных пользовательских интерфейсов — каждое приложение для конкретной ОС предоставляет другой уровень пользовательского интерфейса (реализован в C# с помощью средств разработки собственного пользовательского интерфейса):
  1. В iOS используйте API UIKit для создания собственных приложений с помощью раскадровки для слоя презентации, созданного в Xcode.
  2. В Android используйте Android.Views для создания собственных приложений, используя конструктор пользовательского интерфейса Xamarin.
  3. В Windows вы будете использовать XAML для слоя презентации, созданного в конструкторе пользовательского интерфейса Visual Studio или Blend.
  4. В Mac вы будете использовать раскадровки для слоя презентации, созданного в Xcode.

Проекты Xamarin.Forms поддерживаются на всех платформах и позволяют создавать пользовательские интерфейсы, которые можно совместно использовать на разных платформах с помощью XAML Xamarin.Forms.

Объем повторного использования кода будет в значительной степени зависеть от того, сколько кода хранится в общем ядре и сколько кода зависит от пользовательского интерфейса. Основной код — это все, что не взаимодействует напрямую с пользователем, а предоставляет службы для частей приложения, которые будут собирать и отображать эти сведения.

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

  1. SQLite-net для локального хранилища SQL,
  2. Подключаемые модули Xamarin для доступа к возможностям конкретного устройства, включая камеру, контакты и геолокацию,
  3. Пакеты NuGet, совместимые с проектами Xamarin, такими как Json.NET,
  4. Использование функций платформы .NET для сетевых, веб-служб, операций ввода-вывода и многого другого.

Некоторые из этих компонентов реализованы в примере задачи .

Разделите повторно используемый код в основную библиотеку

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

By following the principle of separation of responsibility by layering your application architecture and then moving core functionality that is platform agnostic into a reusable core library, you can maximize code sharing across platforms

Примеры использования

Существует одно примерное исследование, которое сопровождает этот документ — Tasky Pro. В каждом примере рассматривается реализация концепций, описанных в этом документе в реальном мире. Код открытый код и доступен на github.