Это руководство расскажет, как спроектировать кроссплатформенное приложение, которое будет максимально использовать повторное использование кода, и обеспечить высококачественное нативное взаимодействие во всех главных мобильных платформах: 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):
- Для iOS, при создания нативного приложения, используется MonoTouch.UIKit API, при необходимости используя iOS-дизайнера Xamarin, для визуального создания пользовательского интерфейса.
- Для Android, при создания нативного приложения, используется Android.Views, используя UI-дизайнер Xamarin.
- Для Windows Phone используются уровни представления XAML/Silverlight с помощью пользовательского интерфейса.
- Для Windows 8 используется Metro API.
Количество повторно используемого кода во многом будет зависеть от того, сколько кода хранится в совместно используемом ядре и сколько кода для конкретного пользовательского интерфейса. Основным кодом является все, что не взаимодействует непосредственно с пользователем, но вместо этого предоставляет сервис для частей приложения, которые будут собирать и отображать эту информацию.
Для того, чтобы увеличить количество повторно используемого кода, вы можете использовать кросс-платформенные компоненты, которые обеспечивают общие сервисы на всех платформах, такие как:
- SQLite-NET для локального SQL-хранилища данных,
- Xamarin Plugins для доступа к возможностям конкретного устройства, включая камеру, контакты и геолокацию,
- Использование возможностей платформы для работы с сетью, веб-сервисами, вводом/выводом и многим другим.
Некоторые из этих компонентов реализуются в исследовании учебного приложения Tasky.
Разделение основной библиотеки для повторного использования кода
Следуя принципу разделения функциональности между слоями архитектуры приложения, а затем перенести платформозависимую базовую функциональность в «многоразовую» библиотеку ядра, вы можете максимизировать обмен между платформами код, как показано на рисунке ниже:
Учебный пример
Существует один учебный пример, который сопровождает этот документ – Tasky Pro. В реальном примере приложения рассматривается осуществление концепции, изложенной в настоящем документе. Пример является открытым исходным кодом и доступен на github.
<= Возможности использования общего кода | Часть 1 – Основы мобильной платформы Xamarin => |