Как создать кроссплатформенное приложение – Обзор

Это руководство расскажет, как спроектировать кроссплатформенное приложение, которое будет максимально использовать повторное использование кода, и обеспечить высококачественное нативное взаимодействие во всех главных мобильных платформах: iOS, Android и Windows Phone.

Подход, используемый в настоящем документе обычно применяется к обоим видам: производительным и игровым приложениям. Однако основное внимание уделяется производительным программам и утилитам (не-игровым приложениям).

Фраза «написано раз, работает везде» часто используется, чтобы превозносить достоинства единой кодовой базы, которая работает без модификации на различных платформах. В то время как повторное использование кода, несомненно, имеет преимущество, такой подход часто приводит к приложениям, которые имеют lowest- общего знаменателя набор функций и общий вид пользовательского интерфейса «наименьшего общего знаменателя» (lowest-common-denominator), которые не совсем органично вписывается в любую из целевых платформ.

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

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

  • Использование C# — Пишите ваши приложения в C#. Существующий код, написанный на C#, явно используется на Windows Phone , а с помощью Xamarin он может быть очень легко портирован на Android и iOS.
  • Использование шаблона проектирования MVC — Разработка пользовательского интерфейса вашего приложения с помощью шаблона Модель-Представление-Контроллер (Model-View-Controller). Архитектура вашего приложение использует MVC-подход, где существует четкое разделение между «моделью» и остальным. Определите, какие части вашего приложения будут использовать собственные элементы пользовательского интерфейса каждой платформы (IOS, Android, Windows Phone и Windows 8/RT) и использовать это в качестве ориентира для разделения приложения на две составляющие: «Ядро» и «Пользовательский интерфейс».
  • Построение нативного UI — Каждая ОС-специфичное приложение предоставляет различные слои пользовательского интерфейса (реализовано в C # с помощью встроенных средств проектирования UI):
  1. Для iOS, при создания нативного приложения, используется MonoTouch.UIKit API, при необходимости используя iOS-дизайнера Xamarin, для визуального создания пользовательского интерфейса.
  2.  Для Android, при создания нативного приложения,  используется Android.Views, используя UI-дизайнер Xamarin.
  3. Для Windows Phone используются уровни представления XAML/Silverlight с помощью пользовательского интерфейса.
  4. Для Windows 8 используется Metro API.

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

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

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

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

Разделение основной библиотеки для повторного использования кода

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

кроссплатформенное приложение

Учебный пример

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

Оригинал статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *