J'ai vu des questions (principalement sur Stack Overflow), qui manquent de ces connaissances de base. Le but de cette question est de fournir de bonnes informations à ceux qui le recherchent et à ceux qui s'y réfèrent.
Dans le contexte de la programmation Web, quelles sont les différences entre la programmation côté serveur et la programmation côté client? À quelles langues appartiennent-elles et quand les utilisez-vous?
Le développement Web est une question de communication. Dans ce cas, communication entre deux (2) parties, via le protocole HTTP:
La programmation de chaque côté fait référence au code qui s'exécute sur la machine spécifique, sur le serveur ou sur le client.
La programmation côté serveur est le nom général des types de programmes exécutés sur le serveur .
Tout comme le côté serveur, la programmation côté client est le nom de tous les programmes exécutés sur le client .
* HTML et CSS ne sont pas vraiment des "langages de programmation" en soi. Il s'agit de la syntaxe de balisage par laquelle le client affiche la page pour l'utilisateur .
Dans les mots du profane:
Ici, je ne parlerai que de la programmation Web.
côté client la programmation est principalement liée à l'interface utilisateur avec laquelle l'utilisateur interagit. Dans le développement Web, c'est le navigateur, dans la machine de l'utilisateur, qui exécute le code, et cela se fait principalement en javascript, flash, etc. Ce code doit fonctionner dans une variété de navigateurs.
Ses tâches principales sont:
Le responsable de la programmation frontale doit savoir:
Côté serveur la programmation a à voir avec la génération de contenu dynamique. Il fonctionne sur des serveurs. Beaucoup de ces serveurs sont "sans tête". La plupart des pages Web ne sont pas statiques, elles recherchent une base de données afin de montrer à l'utilisateur des informations personnalisées mises à jour. Ce côté interagit avec le back-end, comme disons la base de données.
Cette programmation peut se faire dans de nombreux langages:
Ce code a à voir avec:
Le responsable de la programmation côté serveur doit savoir:
D'autres réponses se sont concentrées sur quoi est la programmation côté client et côté serveur: quels langages sont principalement utilisés, quelles tâches doivent être accomplies, etc.
C'est tout à fait vrai, mais je manque un peu de concentration sur quelles sont les différences entre les deux types de programmation, dans le contexte de la programmation Web. Permettez-moi d'essayer de répondre à cela.
Dans la programmation côté client, vous n'avez pas accès au système complet, pour des raisons de sécurité. L'utilisateur ne fait pas nécessairement confiance à chaque morceau de code téléchargé à partir du Web et exécuté sur sa machine, et c'est le 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.
Dans la programmation côté serveur, il est recommandé de limiter également l'accès de chaque application au système sous-jacent, mais cela vous est beaucoup moins imposé, car en fin de compte, vous ou votre entreprise contrôlez ce système. Cette conception de `` cage isolée '' est pas intégrée dans les outils et langages de programmation côté serveur, mais est accomplie via la configuration de l'installation (en utilisant des utilisateurs dédiés avec des autorisations restreintes, en choisissant des ports qui nécessitent ou ne nécessitent pas autorisations root, etc.).
Dans la programmation côté serveur, le déploiement doit avoir lieu depuis l'extérieur de votre code, à l'aide d'une sorte d'outil (même s'il s'agit de make install
ou un git clone
), et ce déploiement est généralement manuel - ou du moins, il devrait se produire de manière semi-supervisée. Le système (c'est-à-dire le système d'exploitation) sur lequel vous déployez est généralement uniforme sur un certain nombre de machines, mais il peut être fortement personnalisé en fonction de 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 plus grand nombre de machines. Afin de rendre le déploiement possible, les normes doivent être conservées et il existe une tendance beaucoup plus forte vers un langage et un environnement uniques.
C'est pourquoi la copie de code côté serveur d'une machine à une autre peut prendre des semaines, tandis que le code côté client est généralement trivial à exécuter sur différentes machines.
(Avertissement: c'est de loin le point le plus subjectif de tous. Il y a probablement beaucoup de mauvais aspects à 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 importante, c'est-à-dire comment récupérer et mettre à jour les données à la demande de l'utilisateur avec la possibilité de conflits dus à la concurrence. Même si la majeure partie de cette complexité est déchargée sur un serveur de base de données, il est de la responsabilité du 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 de cache pour les mises à jour qui ne sont jamais vues par la base de données), alors 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, la présentation des résultats à l'utilisateur est une préoccupation beaucoup plus importante, 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 seulement que le principal objectif du code est de réellement interagir avec l'utilisateur, et cela ne peut pas 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émo, pour vérifier que toutes les couleurs et la mise en page sont correctes, tandis que la programmation côté serveur peut se produire presque exclusivement dans un environnement orienté texte, où automatisé les tests vérifient que la logique fait toujours ce qu'elle est censée faire.
Il ne s'agit en aucun cas d'une réponse acceptée; je l’offre plutôt comme point complémentaire (en réponse au when do you use each of them
question) qui n'a pas encore été mentionné dans les autres réponses, à savoir:
Protection de la propriété intellectuelle
Le code source qui se trouve du côté client (comme en Javascript) est facilement lisible et/ou peut être rétroconçu s'il a été obscurci.
Le code source qui se trouve côté serveur peut cependant protéger en toute sécurité les algorithmes propriétaires et ne renvoyer que le résultat; une sorte de boîte noire.