D' autres réponses ont mis l' accent sur ce qui est côté client et la programmation côté serveur: quelles langues sont le plus souvent utilisées, quelles tâches doivent être accomplies, etc.
C’est tout à fait vrai, mais je manque un peu d’attention sur les différences entre les deux types de programmation, dans le contexte de la programmation Web. Laissez-moi essayer de répondre à cela.
Sécurité et autorisations
Dans la programmation côté client, vous n’avez pas accès au système complet en raison de problèmes de sécurité. L'utilisateur ne fait pas nécessairement confiance à tous les éléments de code téléchargés sur le Web et exécutés sur sa machine. Il s'agit là du principal objectif de conception de l'environnement côté client (le navigateur et le moteur JavaScript): fournir un environnement isolé. où le code client peut s'exécuter mais ne peut accéder à rien en dehors de la portée autorisée.
En programmation côté serveur, il est judicieux de limiter également l'accès de chaque application au système sous-jacent, mais cela est beaucoup moins contraignant, car à la fin, vous ou votre entreprise maîtrisez ce système. Cette conception de «cage isolée» n'est pas intégrée aux outils de programmation et aux langages côté serveur, mais s'effectue via la configuration de l'installation (utilisateurs dédiés disposant d'autorisations restreintes, choix des ports nécessitant ou non des autorisations root, etc.).
Déploiement et plateforme
Dans la programmation côté serveur, le déploiement doit se faire de l'extérieur du code, à l'aide d'un outil (même s'il est make install
ou non git clone
), et ce déploiement est généralement manuel - ou du moins, il est prévu qu'il se produise de manière semi-supervisée. façon. Le système (c'est-à-dire le système d'exploitation) sur lequel vous déployez est généralement uniforme sur plusieurs machines, mais il peut être fortement personnalisé selon vos besoins.
Dans la programmation côté client, le déploiement s'effectue à partir de votre code côté serveur, qui sert les clients automatiquement et sans supervision. Le système sous-jacent (c'est-à-dire principalement le navigateur) peut être très différent sur un nombre beaucoup plus important de machines. Pour que le déploiement soit réalisable, il faut respecter des normes et la tendance à adopter un langage et un environnement uniques est bien plus forte.
C'est pourquoi la copie du code côté serveur d'un ordinateur à un autre peut prendre des semaines, alors que le code côté client est généralement facile à exécuter sur différentes machines.
Etat et effets secondaires
(Avertissement: c'est de loin le point le plus subjectif de tous. Il y a probablement beaucoup d'aspects faux dans mon argumentation. C'est juste une hypothèse intéressante, à mon avis.)
Dans la programmation côté serveur, l'état est une préoccupation beaucoup plus grande, ce qui signifie comment récupérer et mettre à jour des données à la demande de l'utilisateur avec la possibilité de conflits dus à la simultanéité. Même si la plus grande partie de cette complexité est déchargée sur un serveur de base de données, il appartient au code côté serveur de permettre à la base de données de conserver ses garanties sur l'intégrité des données en utilisant correctement son interface (par exemple, ne pas utiliser un cache pour des mises à jour jamais vues par la base de données), tandis que le code côté serveur a également pour objectif de ne pas surcharger la base de données de travail et de laisser l’utilisateur en attente de réponse.
Dans la programmation côté client, présenter les résultats à l'utilisateur est une préoccupation beaucoup plus grande, ce qui implique des effets secondaires (principalement l'impression à l'écran). Cela ne veut pas dire qu'il n'y a pas d'état impliqué (par exemple, les cookies), mais que l'objectif principal du code est d'interfacer réellement avec l'utilisateur, ce qui ne peut se produire sans effets secondaires.
C’est pourquoi la programmation côté client nécessite généralement (à un moment donné) de regarder l’écran avec une démonstration pour vérifier que toutes les couleurs et la disposition sont correctes, tandis que la programmation côté serveur peut avoir lieu presque exclusivement dans un environnement orienté texte, où des tests vérifient que la logique fait toujours ce qu'elle est supposée faire.