He visto preguntas (principalmente sobre Stack Overflow), que carecen de este conocimiento básico. El objetivo de esta pregunta es proporcionar buena información para quienes la buscan y para quienes hacen referencia a ella.
En el contexto de la programación web, ¿cuáles son las diferencias entre la programación del lado del servidor y la programación del lado del cliente? ¿Qué idiomas pertenecen a cuáles y cuándo utiliza cada uno de ellos?
web-development
server-side
client-side
Madara Uchiha
fuente
fuente
Respuestas:
Antecedentes
El desarrollo web tiene que ver con la comunicación. En este caso, comunicación entre dos (2) partes, a través del protocolo HTTP:
La programación de cada lado se refiere al código que se ejecuta en la máquina específica, el servidor o el cliente.
Ejemplo básico
Programación
Programación del lado del servidor
La programación del lado del servidor es el nombre general de los tipos de programas que se ejecutan en el servidor .
Usos
Idiomas de ejemplo
Programación del lado del cliente
Al igual que en el lado del servidor, la programación del lado del Cliente es el nombre de todos los programas que se ejecutan en el Cliente .
Usos
Idiomas de ejemplo
* HTML y CSS no son realmente "lenguajes de programación" per-se. Son una sintaxis de marcado por la cual el Cliente representa la página para el Usuario .
fuente
En palabras simples:
Aquí solo hablaré sobre programación web.
La programación del lado del cliente tiene que ver principalmente con la interfaz de usuario, con la cual el usuario interactúa. En el desarrollo web, es el navegador, en la máquina del usuario, el que ejecuta el código, y se realiza principalmente en javascript, flash, etc. Este código debe ejecutarse en una variedad de navegadores.
Sus tareas principales son:
La persona a cargo de la programación frontal debe saber :
La programación del lado del servidor tiene que ver con la generación de contenido dinámico. Se ejecuta en servidores. Muchos de estos servidores son "sin cabeza". La mayoría de las páginas web no son estáticas, buscan en una base de datos para mostrar al usuario información personalizada actualizada. Este lado interactúa con el back-end, como digamos, la base de datos.
Esta programación se puede hacer en muchos idiomas:
Este código tiene que ver con:
La persona a cargo de la programación del lado del servidor debe saber:
fuente
Otras respuestas se han centrado en lo que es la programación del lado del cliente y del lado del servidor: qué lenguajes se utilizan principalmente, qué tareas deben realizarse, etc.
Esto es absolutamente correcto, pero extraño un poco el enfoque en cuáles son las diferencias entre ambos tipos de programación, en el contexto de la programación web. Déjame intentar abordar eso.
Seguridad y permisos
En la programación del lado del cliente, no tiene acceso al sistema completo debido a problemas de seguridad. El usuario no necesariamente confía en todos y cada uno de los códigos que se descargan de la web y se ejecutan en su máquina, y este es el objetivo principal del diseño del entorno del lado del cliente (el navegador y el motor de JavaScript): proporcionar un entorno aislado donde el código del cliente puede ejecutarse pero no puede acceder a nada fuera del alcance permitido.
En la programación del lado del servidor, es una buena práctica limitar también el acceso de cada aplicación al sistema subyacente, pero esto es mucho menos obligatorio para usted, ya que al final, usted o su empresa tienen el control de ese sistema. Este diseño de 'jaula aislada' no está integrado en las herramientas y lenguajes de programación del lado del servidor, sino que se logra a través de la configuración de la instalación (utilizando usuarios dedicados con permisos restringidos, eligiendo puertos que requieren o no requieren permisos de root, etc.).
Despliegue y plataforma
En la programación del lado del servidor, la implementación debe realizarse desde fuera de su código, utilizando algún tipo de herramienta (incluso si es
make install
o unagit clone
), y esta implementación generalmente es manual, o al menos, se espera que ocurra en un sistema semi-supervisado camino. El sistema (es decir, el sistema operativo) en el que se implementa generalmente es uniforme en varias máquinas, pero se puede personalizar en gran medida según sus necesidades.En la programación del lado del cliente, la implementación se realiza desde el código del lado del servidor, que sirve a los clientes automáticamente y sin supervisión. El sistema subyacente (es decir, principalmente el navegador) puede ser muy diferente en un número mucho mayor de máquinas. Para que la implementación sea factible, se deben mantener los estándares y existe una tendencia mucho más fuerte hacia un solo idioma y entorno.
Es por eso que copiar el código del lado del servidor de una máquina a otra puede llevar semanas, mientras que el código del lado del cliente generalmente es trivial para ejecutarse en diferentes máquinas.
Estado y efectos secundarios
(Descargo de responsabilidad: este es, con mucho, el punto más subjetivo de todos. Probablemente hay muchos aspectos erróneos en mi argumentación. En mi opinión, es solo una hipótesis interesante).
En la programación del lado del servidor, el estado es una preocupación mucho mayor, es decir, cómo recuperar y actualizar datos a solicitud del usuario con la posibilidad de conflictos debido a la concurrencia. Incluso si la mayor parte de esta complejidad se descarga a un servidor de base de datos, es responsabilidad del código del lado del servidor permitir que la base de datos mantenga sus garantías sobre la integridad de los datos mediante el uso correcto de su interfaz (por ejemplo, no use un caché para actualizaciones que nunca son vistas por DB), mientras que también es un objetivo del código del lado del servidor no sobrecargar la base de datos con trabajo y mantener al usuario esperando respuesta.
En la programación del lado del cliente, presentar los resultados al usuario es una preocupación mucho mayor, y esto implica efectos secundarios (principalmente imprimir en la pantalla). Esto no quiere decir que no haya un estado involucrado (por ejemplo, cookies), solo que el objetivo principal del código es realmente interactuar con el usuario, y esto no puede suceder sin efectos secundarios.
Esta es la razón por la cual la programación del lado del cliente generalmente requiere (en algún momento) mirar la pantalla con una demostración, para verificar que todos los colores y el diseño sean correctos, mientras que la programación del lado del servidor puede ocurrir casi exclusivamente en un entorno orientado a texto, donde automatizado Las pruebas verifican que la lógica sigue haciendo lo que se supone que debe hacer.
fuente
Esto de ninguna manera pretende ser una respuesta aceptada; más bien lo ofrezco como un punto complementario (en respuesta a la
when do you use each of them
pregunta) que aún no se ha mencionado en las otras respuestas hasta ahora, a saber:Protección de la propiedad intelectual.
El código fuente que se encuentra en el lado del cliente (como en Javascript) es fácilmente legible y / o capaz de ingeniería inversa si se ha ofuscado.
Sin embargo, el código fuente que se encuentra en el lado del servidor puede proteger de manera segura los algoritmos propietarios y solo devolver el resultado; una especie de caja negra.
fuente