La raison en est la stabilité .
Côté serveur, je peux choisir des composants stables. Habituellement, cela signifie que je choisis Java et un tas de bibliothèques soigneusement sélectionnées telles que FreeMarker. Inutile de dire que chaque bibliothèque, à l'exception des bibliothèques standard de Java, est traitée comme jetable, donc j'accède aux bibliothèques externes via un wrapper self-made. Cela signifie que je peux facilement passer d'une bibliothèque à l'autre si l'exigence se présente.
Chaque fois que je mets à jour Java vers une nouvelle version, cela fonctionne généralement bien car Java est un composant extrêmement stable, même sur les principales mises à jour de version. Et aussi, chaque serveur que j'ai utilise la même version Java. Tous les clients n'exécutent pas la même implémentation JavaScript.
Côté client, je ne peux pas choisir de composants stables. Les créateurs de navigateurs me forceront à choisir JavaScript, un langage que je n'aime pas particulièrement, mais que je suis obligé d'utiliser. (Et ne me parlez pas des langages compilés en JavaScript, ils sont horribles!) L'implémentation JavaScript de chaque navigateur est différente. Cela signifie que c'est un enfer total de tester mon produit avec toutes les versions de navigateur prises en charge.
Ma solution? J'effectue autant de traitement que possible du côté serveur, et le côté client n'est qu'un wrapper léger qui envoie des données au serveur et reçoit des données du serveur sous forme de fragments JSON et HTML. Évitez XML; utilisez plutôt JSON.
Je ne fais pas de modèles côté client; Je rend le contenu sur le serveur dans un fragment HTML que j'attribue ensuite en utilisant l' .innerHTML
attribut à divers éléments d'espace réservé côté client. Cela permet de garder la pile technologique aussi simple que possible, car je n'ai pas besoin de deux moteurs de modèle (un Java et un JavaScript).
L'inconvénient est évidemment la latence de la vitesse de la lumière; une demi-seconde de latence n'est pas rare entre les continents.
Considérez que vos clients de nos jours peuvent être des smartphones. Les smartphones ont une autonomie de batterie limitée, donc si vous effectuez des calculs lourds, il vaut mieux les décharger sur vos serveurs. Cependant, les choses simples peuvent être plus éconergétiques lorsqu'elles sont effectuées du côté client, car vous pouvez alors éviter l'accès radio. Mais l'argument principal, la stabilité, peut signifier qu'il peut être judicieux de décharger même un simple calcul sur le serveur.
En complément, comme déjà observé dans certaines réponses, vous gagnez également en sécurité . Si la logique d'application est entièrement du côté client, quelqu'un peut, par exemple, fixer un prix pour tout ce qu'il va acheter dans votre boutique en ligne.