CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Framework client-side ou server-side ?

astro788
astro788
Niveau 6
04 novembre 2015 à 20:05:10

Bonjour,

Je suis actuellement en train de plancher sur un projet perso pour me forger une expérience, et j'ai de gros doutes concernant la techno que je dois utiliser, je m'explique :

Mon projet serait un genre de leboncoin-like, en gros un site sur lequel les utilisateurs inscrits pourrait poster des petites annonces. Donc système d'authentification, page de profil, création de contenu, affichage des annonces dans un flux etc...

J'ai déjà développé une très grosse partie du backend : j'ai une api RESTful en architecture trois-tier développée en java. Celle-ci se charge de dialoguer avec la bdd, de me fournir différents points d'entrées et de me renvoyer le JSON correspondant.

Exemple de point d'entrée :

http://api.monsite.fr/user?userid=1 me retourne :

{"user": {"username": "toto1234","email" : "toto1234@gmail.com" }}

J'ai des points d'entrée pour toutes les actions effectuées sur l'ensemble du site ( Création d'annonces, mise à jours de données... bref tout, et j'ai fait attention à bien les déclarer en POST, GET, UPDATE, DELETE etc... ). Il a également une surcouche oAuth pour protéger l'api des requêtes de n'importe qui .

Voilà pour l'aspect « serveur », à mon sens ça ne devrait pas poser de problèmes, à vous de me dire. :hap:

Seulement voilà, je me dis que si absolument toutes les actions sont gérées par ce webservice, je n'arrive pas à voir l'intérêt que pourrait m'apporter de gros framework server-side comme Symfony, pour venir faire des requêtes HTTP sur mes différents points d'entrée, récupérer le JSON et peupler le HTML. Ce serait sortir la grosse artillerie pour n'exploiter au final que très peu de ses fonctionnalités.

Je me suis du coup penché sur des framework client, du style Angular, Ember et compagnie. A première vue ça me semblait très adapté pour mon cas : possibilité de faire des requêtes http, de gérer quoi faire en cas de succès ou d'erreur de celles-ci, exploiter directement le JSON obtenu pour peupler la vue etc.. Des outils très puissants, avec une bonne courbe d'apprentissage ! :p)

Mais au fur et à mesure de mes recherches pour essayer de savoir si vraiment c'était ce qu'il me fallait, je doute de plus en plus. Je n'arrive déjà pas à faire mon choix entre AngularJS et Ember, les deux étant au final très similaires, mais avec l'arrivée d'Angular v2, j'ai peur de la maintenabilité de la v1 ( si je choisis Angular, ça sera en v1, du fait que la majorité des tutos, questions etc portent sur Angular 1.X ).

Je ne sais pas si je fais le bon choix en me portant sur les framework client, j'ai peur qu'ils me « brident », et étant entièrement instancié dans le navigateur, l’utilisateur peut modifier absolument tout le code et les données que je lui fournis. :(

Si je tiens autant à être absolument certain de la technologie que je dois utiliser, c'est que je me projette dans le cas où je devrai rendre cette application disponible au public par exemple. Je tiens à faire les choses correctement, pour ne pas avoir de problèmes de maintenabilité ou de sécurité.

En résumé : Au vu de ce que j'ai déjà (webservice/api), est-ce une bonne idée d'utiliser un framework client comme Angular ? Ou bien dois-je rester sur de gros framework serveur tels que Symfony. Sachant que je me poste dans l'optique où cette plate-forme serait massivement utilisée ( un trafic comparable à leboncoin admettons ).

Merci de bien vouloir m'éclairer, et de m'avoir lu :)

Pseudo supprimé
Pseudo supprimé 04 novembre 2015 à 21:09:09

La solution est d'utiliser les deux [[sticker:p/1kki]]

Darkandgel
Darkandgel
Niveau 10
04 novembre 2015 à 21:12:21

Salut !

Histoire de compliquer le truc, tu as Backbone qui fait le même boulot... Mais je le déconseille.

Pour en revenir a ton problème deja... Tu dis avoir développé toute ton archi en JAVA, pourquoi vouloir faire du symphony ?

Ensuite, vu l'état du projet, et le fait que tu as deja une API REST, il me parait assez logique de partir sur un framework front. De toutes façons, si ton webService est bien fait, si un jour tu veux casser la partie front, ton WS ne bougera pas.

De plus, si tu dois gerer une grosse charge, c'est un modèle ideal, dans le sens ou toutes les opérations de rendu sont gérés par le client et pas par ton serveur.

étant entièrement instancié dans le navigateur, l’utilisateur peut modifier absolument tout le code et les données que je lui fournis. :(

Euh... il faut toujours faire ses check coté serveur. Toujours. Les seuls que tu fais coté client sont des check d'ergonomie, et n'ont aucune valeur coté sécurité.

astro788
astro788
Niveau 6
05 novembre 2015 à 11:23:47

La solution est d'utiliser les deux [[sticker:p/1kki]]

Tu portes bien ton pseudo :hap:

Backbone a l'air beaucoup moins structuré qu'angular ou ember, et j'ai pas envie de mettre les mains trop profondément dans le camboui :ok:

L'API est en java + slax + hibernate + OAuth. Mais je considère ça comme une "bulle", une entité à part qui fonctionne d'elle même, donc je me disais que je pourrai peut-être me servir de Symfony pour faire les requêtes sur l'API, et réorganiser le JSON dans le model. Mais ça fait vraiment usine à gaz..

Euh... il faut toujours faire ses check coté serveur. Toujours. Les seuls que tu fais coté client sont des check d'ergonomie, et n'ont aucune valeur coté sécurité.

Oui ça je le sais bien :hap: Je parlais plus d'injection de XSS ou ce genre de conneries. Je me demandais juste si y'avait déjà des mécanismes de sécurité embarqué dans Ember ou Angular, style data sanitization, CORS ou CSP.

Ces framework sont dit "Single page application", mais concrètement ça veut dire quoi ? Je peux quand même créer des routes style www.monsite/profile/userid ?

Et entre Ember ou Angular mon coeur balance, je sais pas lequel choisir. D'un côté Angular a une grosse communauté, plein de tutos, de questions qui ont trouvées des réponses, mais Ember semble plus mature. J'ai beaucoup fouillé le net pour essayer de faire mon choix, mais c'est sans cesse une guerre entre ces deux là, qui me pousse un coup dans le camp de l'un, puis dans le camp de l'autre :-(

Message édité le 05 novembre 2015 à 11:27:09 par astro788
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment