Це керівництво розповість, як спроектувати кроссплатформне додаток, яке буде максимально використовувати повторне використання коду, і забезпечити високоякісне нативное взаємодія у всіх головних мобільних платформах: 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.