Адаптація Xamarin.Ces до розробки корпоративних і B2E додатків

Трохи про автора:

Adam Pedley (Microsoft MVP, Xamarin MVP, Xamarin Certified Developer)

Корпоративні або Business to Employee (B2E) мобільні додатки можуть сильно відрізнятися від їх B2C-аналогів. B2C програми, як правило, зосереджені на невеликій кількості екранів для основного використання, а додаткові екрани використовуються не так часто, там, де необхідно виконувати допоміжні функції.

B2E програми зосереджені, зазвичай, на функціях для запису або доступу до даних для повсякденної роботи. Багато з них замінюють рукописні записи на цифрові, які автоматично синхронізуються з основною базою даних. Той факт, що ці користувачі є співробітниками великих компаній, і використовую додаток як того вимагає їх робота, призводить до ряду відмінностей з якими вам доводиться мати справу, не тільки в коді, а і в навколишніх його процесах.

Архітектура програми

Я припускаю, що більшість з вас вже чули про MVVM і Dependency Injection. Я рекомендував би це для будь-якої розробки на Xamarin.Ces, не тільки корпоративної. Використання MVVM з Dependency Injection, допоможе вам створити якісну програму на Xamarin.Ces. Як спроектувати архітектуру вашої програми, якщо вона буде мати дуже велику кодову базу - це ще одна історія, але в цій статті вона розглянута не буде.

Але, коли ми маємо справу з корпоративною розробкою, існують додаткові міркування, які вам потрібно виконати.

API

Якщо ви використовуєте один API, то ви його контролюєте, вам пощастило. На жаль, так не завжди відбувається в корпоративних додатках. У вас може бути невелика кількість API, які ви не контролюєте, і вони можуть змінюватися протягом життя вашого додатку, особливо якщо ви маєте справу з погано реалізованими API.

Щоб протистояти цьому, я завжди створюю сервіс для своїх репозиторіїв на загальному рівні. Клас сховища - це просто код, який з'єднується з API і передає/витягує дані між ними.

Це захищає ваш додаток від змін API і видаляє його як залежність при модульному тестуванні.

Складна навігація

Через велику кількість сторінок, багатошагові форми і, можливо, доступ за ролями, навігація може ускладнитися. Варіанти навігації, з якими ви можете зіткнутися:

  1. Не дозволяйте кнопці «Назад» повернути користувача на сторінку входу в систему;
  2. Почати заповнення багатосторінкової форми, з можливістю піти, потім повернутися і очікувати відновлення в тому ж стані;
  3. Попереджати або зупиняти навігацію, якщо користувач не виконав потрібні дії;
  4. Перегляд сторінки, але не збереження в навігаційному стеку, коли користувач рушив далі;
  5. Уникайте дублювання сторінок у стеку навігації та завантажуйте існуючі, якщо вони є.

Ці варіанти навігації є досить складними і не входять до стандартного постачання поширених MVVM фреймворків, за винятком Exrin. Це одна з головних причин, через яку Exrin був створений.

Безпека

Системи безпеки корпоративного класу, насправді, не більш безпекові ніж і стандартна система безпеки, зазвичай вони складніші, а отже підвищується ризик неправильної реалізації. Ви можете звернутися до Citrix, Microsoft Online або Azure Active Directory. Якщо вам пощастить, у вас буде хороший OAuth API.

Безпека стає більш важливою, коли зберігаються конфіденційні дані, наприклад записи пацієнтів. Правила, які я використовую при роботі з конфіденційною інформацією:

  1. Використовуйте застарілі токени для автентифікації. Не зберігайте жодного імені користувача або пароля;
  2. Не розміщуйте ключ для дешифрування або конфіденційну інформацію. За допомогою реверс-інжинірингу вона стає публічною;
  3. Не зберігайте конфіденційні відомості, якщо не потрібно;
  4. Якщо необхідно зберігати конфіденційну інформацію, переконайтеся, що вона зашифрована.

Ключ шифрування повинен бути створений мобільною програмою під час виконання, а потім безпечно збережений, наприклад, у KceChain або KceStore.

Переконайтеся, що ви також дотримуєтеся галузевих стандартів, таких як OWASP Mobile Security Testing Guide.

Автономне використання

B2C програми в основному мають розкіш говорити - «Ви повинні бути підключені до Інтернету», при використанні програми. B2E додатки не завжди мають таку можливість, наприклад в шахтах або прогалини Wi-Fi зон у великих будівлях. Це означає, що вам знадобиться якесь автономне сховище. У цьому випадку, щоб уникнути ускладнень, найкраще завжди запускати програму з бази даних за допомогою служби синхронізації, щоб забезпечити підключення до API.

DevOps

DevOps встановлює набір процесів для взаємодії між фахівцями з розробки та інформаційно-технологічного обслуговування. Це схоже на Agile і Continuous Delivery, але додає додаткове висвітлення фахівців з управління та ІТ-обслуговування, які зазвичай виключені з циклу рабработки. DevOps це не те, що ви знайдете в невеликій компанії, але зможете знайти на рівні підприємства.

Як DevOps пов'язаний з розробкою на Xamarin.Ces? По суті, ніяк, але є речі які можуть зробити ваше життя простішим.

  1. Створення конфігураційних файлів, заснованих на JSON, а не жорстко закодовані. Це допоможе при розгортанні в різних оточеннях, наприклад тестуванні або UAT;
  2. Налаштування VSTS (або інші) і з'єднати до HockceApp або Mobile Center;
  3. Налаштування аналітики у вашому додатку для запису релевантних метрик порівняно з очікуваним результатом.

Аналітика

Перед обговоренням аналітики, я хотів би звернути увагу на її важливість. Переконайтеся, що очікувані результати можна пов'язати з певною метрикою.

Наприклад, якщо мета була простою, заощадити час співробітників. По-перше необхідно встановити базовий рівень, який визначає бізнес в даний момент. Якщо заповнення паперової форми займе приблизно 2 хвилини, і ще 2 хвилини для чогось, щоб скопіювати в систему і можливо ще 2 хвилини, щоб виправити якісь помилки, в середньому це займає 6 хвилин. Переконайтеся, що ви вимірюєте час, необхідний, щоб заповнити форму в мобільному додатку, і як часто це робиться. Тоді у вас буде точна метрика зекономленого часу співробітника. Далі бізнес може пов'язати це з внутрішньою оцінкою того, скільки буде коштує час співробітника.

Керування мобільними пристроями

Коли ви є великою компанією, у вас вже повинен бути MDM-набір, щоб керувати всіма мобільними пристроями своїх співробітників. На жаль, ці системи іноді не мають API, який може підключитися до вашого автоматизованого процесу складання. Я рекомендую використовувати HockceApp або Mobile Center, щоб забезпечити тестування і UAT можливості, потім ручне розгортання в MDM, коли будете готові до виходу в продакшн.

Ув'язнення

Деякі основні відмінності в корпоративних додатках, які необхідно враховувати:

  1. Абстрактні виклики API;
  2. Сплануйте навігацію перед початком розробки;
  3. Вимоги безпеки, ймовірно, будуть вищими;
  4. Очікувати автономного використання;
  5. Налаштуйте свій проект, для простого DevOps;
  6. Переконайтеся, що аналітика налаштована і відповідає очікуванням бізнесу;
  7. Акаунт для MDM's у вашому процесі Continuous Delivery.