Я створюю новий веб-додаток для бізнесу і хочу досягти:
- Використовуйте найкращі технології у відповідних сферах. Я хочу надійну структуру бекенда з твердим ORM І я хочу, щоб найдосконаліша система SPA (для однієї сторінки) використовувала найсучасніші функції HTML та Javascript для додатка фронтальної програми.
- Викрийте суб'єкти господарювання та бізнес-сервіси для використання з різних типів додатків - наприклад, веб-додатків, мобільних пристроїв (Android) та, можливо, інших типів (розумні пристрої тощо)
Отже - щоб задовольнити обидві вимоги, я схильний повністю відокремити свою програму в додатках додатка та інтерфейсу та організувати зв’язок між ними за допомогою REST API (JSON). Це звуковий підхід?
Такий поділ не є очевидним дизайнерським рішенням, оскільки багато технологій веб-додатків мають інтегровані шари перегляду, де додаток на стороні сервера більш-менш контролює генерацію подання та частково обробляє відповіді з виду (наприклад, SpringMVC з шаром подання, PHP Yii з видом шару, Java JSF / Facelets повністю зберігає стан їх компонентів на сервері). Отже - існує безліч технологій, які пропонують більш міцні зв'язки та обіцяють швидший час розробки та більш стандартний шлях. Отже - я повинен бути обережним, коли починаю використовувати технології таким чином, який не використовується широко.
Як я розумію, цілком відокремлений інтерфейс SPA зазвичай виникає через необхідність використання сторонніх API. Але чи є така звукова конструкція роз'єднання, коли і компанія, і резервний і фронтенд розробляються однією компанією?
Наразі мій вибір технологій - це Java / Spring backkend та Angular2 / Web Components / Polymer for frontend - якщо мені дозволять це сказати. Але це не має значення для цього питання, адже це питання стосується загальної конструкції, а не вибору конкретних технологій?
So - I must be cautious when starting to use technologies in manner which is not widely used.
Так, ви повинні бути обережними, якщо ви плануєте використовувати молоток для відсмоктування шовку. Можливо, це не правильний інструмент.