Skip to content

5. Висновок

Ми створили такий клієнт-серверний додаток:

Image

Щоб дійти до остаточної версії коду, нам довелося пояснити багато аспектів фреймворків AngularJS та Spring 4. Отже, цей документ можна використовувати для навчання роботі з цими двома фреймворками. У розділі 1.3 пояснюється, де знайти коди та як ними користуватися.

Ми продемонстрували, що клієнтсько-серверний додаток можна використовувати в різних середовищах:

  • як класичний веб-додаток;
  • як виконуваний файл на емуляторах Android;

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

З цієї роботи я винесу два висновки:

  • написання веб-сервісу на Spring було досить складним. З самого початку я добре знав концепції Spring. Труднощі виникли лише з забезпеченням безпеки веб-сервісу, а згодом — з обробкою заголовків HTTP CORS — це дві сфери, з якими я раніше не стикався;
  • розробка клієнта на Angular виявилася набагато складнішою з різних причин:
    • я недостатньо добре знав мову JavaScript та її можливості;
    • мені було важко зрозуміти, як працює асинхронне програмування в браузері. Я міркував так, ніби це сервер, де асинхронність досягається завдяки одночасному використанню декількох потоків. У браузері є лише один потік, і асинхронні завдання обробляються послідовно, а не паралельно. Точніше кажучи, асинхронні завдання можуть виконуватися паралельно (наприклад, кілька запитів HTTP), але події, які вони генерують після завершення, обробляються послідовно. Отже, тут немає паралельного виконання, яке б потребувало управління та пов’язаних із цим численних проблем;
    • Angular — це багатофункціональний фреймворк із численними поняттями (MVC, директиви, сервіси, область дії моделей тощо). Його освоєння займає багато часу;
    • Angular не нав'язує певного методу розробки. Отже, щоб досягти одного й того самого результату, можна використовувати різні архітектури. Це дещо бентежить. Мені зручніше працювати з закритими фреймворками, де всі використовують однакові шаблони проектування (design pattern). Тому я постійно намагався відтворити ті шаблони проектування, які використовую на стороні сервера. Я задоволений результатом, оскільки вважаю, що його можна відтворити. Саме цього я й прагнув. Але я зовсім не знаю, чи відхилився я від «кращих практик» Angular, чи ні;

Serge Tahé, липень 2014 року.