Je crée une nouvelle application web d'entreprise et je souhaite atteindre:
- Utilisez les meilleures technologies de leurs domaines respectifs. Je veux un framework backend fiable avec un ORM solide. Et je veux le framework SPA (application de page unique) le plus avancé avec l'utilisation des fonctionnalités HTML et Javascript les plus récentes pour l'application frontend
- Exposer des entités back-end et des services commerciaux à utiliser à partir de différents types d'applications - par exemple, des applications Web, mobiles (Android) et éventuellement d'autres types (appareils intelligents, etc.)
Donc - pour satisfaire les deux exigences, je suis enclin à séparer complètement mon application dans les applications backend et frontend et à organiser la communication entre elles à l'aide de l'API REST (JSON). Est-ce une bonne approche?
Une telle séparation n'est pas une solution de conception évidente, car de nombreuses technologies d'application Web ont des couches de vue intégrées où l'application côté serveur contrôle plus ou moins la génération de la vue et gère partiellement les réponses de la vue (par exemple SpringMVC avec couche de vue, PHP Yii avec vue , Java JSF / Facelets enregistre complètement l'état de leurs composants sur le serveur). Ainsi, il existe de nombreuses technologies qui proposent un couplage plus fort et promettent un temps de développement plus rapide et un parcours plus standard. Donc - je dois être prudent lorsque je commence à utiliser des technologies d'une manière qui n'est pas largement utilisée.
Si je comprends bien, le frontend SPA complètement séparé découle généralement de la nécessité d'utiliser une API tierce. Mais le découplage sonore est-il si le backend et le frontend sont développés par une seule entreprise?
Mon choix de technologies est actuellement Java / Spring backend et Angular2 / Web Components / Polymer pour frontend - si j'ai le droit de le dire. Mais cela n'est pas pertinent pour cette question, car cette question concerne la conception générale et non le choix des technologies concrètes?
So - I must be cautious when starting to use technologies in manner which is not widely used.
Oui, vous devez être prudent si vous prévoyez d'utiliser un marteau pour poinçonner la soie. Ce n'est peut-être pas le bon outil.Réponses:
Oui c'est normal. Mais ce n'est normal que si vous avez besoin de ce type de séparation et que vous ne forcez pas cette configuration dans votre application globale.
Un SPA est livré avec quelques problèmes qui lui sont associés. En voici quelques-unes qui me viennent à l'esprit:
Bien sûr, il y a aussi des avantages SPA:
Donc, la chose est qu'il y a des avantages et des inconvénients aux deux approches (pages SPA vs pages serveur). Passez un peu de temps à rechercher les deux options, puis choisissez en fonction de votre situation.
la source
La réponse à votre question est simple. Oui. Ce que vous proposez, c'est une bonne approche. Mais alors, ce que je pense que vous voulez demander, c'est si c'est une meilleure approche, et malheureusement, aucun de nous ne peut y répondre pour vous. Les facteurs impliqués couvrent trop de facettes. Sans divulguer tout sur votre organisation et les exigences du produit, aucune conclusion réelle ne peut être tirée. Je pense que vous savez déjà quoi faire de toute façon.
la source
Normal avec des mises en garde.
les frameworks javascript frontaux sont limités dans ce qu'ils peuvent faire. Si vous créez des API brutes à utiliser par plusieurs applications, elles nécessitent généralement un certain traitement côté serveur des appels d'API bruts dans les modèles de vue qui fonctionnent avec cette application particulière.
Par conséquent, une architecture «normale» pourrait être:
Maintenant, si vous ne disposez que d'une seule application Web, vous pouvez couper la couche «API exposant la logique métier» et demander au code Web côté serveur d'appeler directement la logique métier.
Parce que vous avez séparé la logique métier dans sa propre bibliothèque, elle est toujours découplée de la logique d'interface utilisateur et vous pouvez toujours ajouter une couche de service plus tard.
De même, comme le service api est appelé par le code côté serveur, vous n'êtes pas limité par la communication http. (bien que ce soit à peu près universel maintenant)
De plus, le fait que javascript appelle le même hôte à partir duquel il est servi signifie que vous n'avez pas à vous promener avec des cors
la source