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 cherchent et à ceux qui y font référence.
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 à quelles langues et quand les utilisez-vous?
web-development
server-side
client-side
Madara Uchiha
la source
la source
Réponses:
Contexte
Le développement Web est tout au sujet de la 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, celle du serveur ou celle du client.
Exemple de base
Programmation
Programmation côté serveur
La programmation côté serveur est le nom général des types de programmes exécutés sur le serveur .
Les usages
Exemple de langues
Programmation côté client
Tout comme le côté serveur, la programmation côté client est le nom de tous les programmes exécutés sur le client .
Les usages
Exemple de langues
* HTML et CSS ne sont pas vraiment des "langages de programmation" en soi. Il s’agit d’une syntaxe de balisage par laquelle le client rend la page pour l’ utilisateur .
la source
En termes simples:
Ici, je ne parlerai que de la programmation Web.
La programmation côté client concerne principalement l'interface utilisateur avec laquelle l'utilisateur interagit. En développement Web, c'est le navigateur, sur la machine de l'utilisateur, qui exécute le code, principalement en javascript, en flash, etc. Ce code doit être exécuté dans divers navigateurs.
Ses tâches principales sont:
Le responsable de la programmation initiale doit savoir :
La programmation côté serveur concerne 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 effectuent une recherche dans 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 par exemple la base de données.
Cette programmation peut être faite dans beaucoup de langages:
Ce code a à voir avec:
Le responsable de la programmation côté serveur doit savoir:
la source
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 nongit 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.
la source
Ceci n’est nullement destiné à être une réponse acceptée; je le présente plutôt comme un point complémentaire (en réponse à la
when do you use each of them
question) qui n’a pas encore été mentionné dans les autres réponses à ce jour, à savoir:Protection de la propriété intellectuelle
Le code source situé côté client (comme en Javascript) est facilement lisible et / ou peut être inversé s'il a été masqué.
Le code source situé côté serveur peut toutefois protéger en toute sécurité des algorithmes propriétaires et ne renvoyer que le résultat; une boîte noire de toutes sortes.
la source