¿Cuáles son las diferencias entre la programación del lado del servidor y del lado del cliente?

101
  

He visto preguntas (principalmente en Stack Overflow), que carecen de esta base   conocimiento. El punto de esta pregunta es proporcionar buena información.   para aquellos que lo buscan, y aquellos que hacen referencia a él.

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 los utiliza?

    
pregunta Madara Uchiha 24.10.2012 - 16:08

4 respuestas

118

Fondo

El desarrollo web tiene que ver con la comunicación. En este caso, la comunicación entre dos (2) partes, a través del protocolo HTTP:

  • El Servidor : esta parte es responsable de servir páginas.
  • El Cliente : esta parte solicita páginas del Servidor , y las muestra al usuario. En la mayoría de los casos, el cliente es un navegador web .
    • El Usuario : el usuario utiliza el Cliente para navegar por la web, completar formularios, ver videos en línea, etc.

La programación de cada lado, se refiere al código que se ejecuta en la máquina específica, la del servidor o la del cliente.

Ejemplo básico

  1. El Usuario abre su navegador web (el Cliente ).
  2. El Usuario navega hasta enlace .
  3. El Cliente (en nombre del Usuario ), envía una solicitud a enlace (el Servidor ), para su página de inicio.
  4. El Servidor luego reconoce la solicitud y responde al cliente con algunos metadatos (llamados encabezados ), seguido de la fuente de la página.
  5. El Cliente luego recibe la fuente de la página, y la convierte en un sitio web visible para humanos.
  6. El usuario escribe Desbordamiento de pila en la barra de búsqueda y presiona Ingresar
  7. El Cliente envía esos datos al Servidor .
  8. El Servidor procesa esos datos y responde con una página que coincide con los resultados de la búsqueda.
  9. El Cliente , una vez más, muestra esa página para que el Usuario la vea.

Programación

Programación del lado del servidor

Programación del lado del servidor, es el nombre general de los tipos de programas que se ejecutan en el Servidor .

Usos

  • procesar la entrada del usuario.
  • Compila páginas.
  • Estructurar aplicaciones web.
  • Interactúa con el almacenamiento permanente (SQL, archivos).

Idiomas de ejemplo

  • PHP
  • Python
  • ASP.Net en C #, C ++ o Visual Basic.
  • Casi cualquier idioma (C ++, C #, Java). Estos no fueron diseñados específicamente para la tarea, pero ahora se usan a menudo para servicios web de nivel de aplicación.

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

  • Hacer páginas web interactivas.
  • Haz que las cosas sucedan dinámicamente en la página web.
  • Interactúe con el almacenamiento temporal y el almacenamiento local (cookies, almacenamiento local).
  • Envíe solicitudes al servidor y recupere datos de él.
  • Proporcionar un servicio remoto para aplicaciones del lado del cliente, como el registro de software, la entrega de contenido o los juegos de múltiples jugadores remotos.

Idiomas de ejemplo

  • JavaScript (principalmente)
  • HTML *
  • CSS *
  • Cualquier idioma que se ejecute en un dispositivo cliente que interactúe con un servicio remoto es un idioma del lado del cliente.

* HTML y CSS no son realmente "lenguajes de programación" por sí mismos. Son una sintaxis de marcado por la cual el cliente representa la página para el Usuario.

    
respondido por el Madara Uchiha 07.08.2018 - 20:54
27

En palabras sencillas:

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 que 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:

  • entrada de validación (la validación se debe realizar en el servidor. Se puede usar una validación redundante en el cliente para evitar llamadas al servidor cuando la velocidad es muy importante).
  • animación
  • manipular elementos de la interfaz de usuario
  • aplicar estilos
  • algunos cálculos se realizan cuando no desea que la página se actualice con tanta frecuencia

El responsable a cargo de la programación de front-end debe saber :

  • javascript
  • css
  • HTML
  • diseño gráfico básico
  • Ajax
  • quizás Flash
  • algunas bibliotecas javascript de terceros como JQuery
  • diseño de interfaz de usuario
  • diseño de información, etc.
La programación de

lado del servidor tiene que ver con generar 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. Estos lados interactúan con el back-end, como por ejemplo, la base de datos.

Esta programación se puede hacer en muchos lenguajes:

  • PHP
  • Java y jsp
  • asp
  • Perl
  • Python
  • Ruby on Rails, etc.

Este código tiene que ver con:

  • Consultar la base de datos
  • Codifique los datos en html
  • Insertar y actualizar información en la base de datos
  • Reglas y cálculos de negocios

La persona a cargo de la programación del lado del servidor debe saber:

  • algunos de los idiomas mencionados anteriormente
  • HTML
  • SQL,
  • scripts shell de Linux / UNIX
  • OOP
  • reglas de negocio, etc.
respondido por el Tulains Córdova 24.10.2012 - 16:36
13

Otras respuestas se han centrado en lo que es la programación del lado del cliente y del servidor: qué lenguajes se utilizan en su mayoría, qué tareas deben realizarse, etc.

Esto es absolutamente correcto, pero me falta un poco de enfoque en cuáles son las diferencias entre ambos tipos de programación, en el contexto de la programación web. Déjame tratar de abordar eso.

Seguridad y permisos

En la programación del lado del cliente, no tiene acceso a todo el sistema, 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 principal objetivo de 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 que esté fuera del alcance permitido.

En la programación del lado del servidor, es una buena práctica también limitar el acceso de cada aplicación al sistema subyacente, pero esto se aplica mucho menos a usted, ya que al final, usted o su empresa tienen el control de ese sistema. . Este diseño de 'jaula aislada' no está incorporado en las herramientas de programación y lenguajes del lado del servidor, sino que se logra a través de la configuración de la instalación (usando usuarios dedicados con permisos restringidos, eligiendo puertos que requieren o no requieren permisos de root, etc).

Implementación 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 un git clone ), y esta implementación suele ser manual, o al menos, Se espera que suceda de forma semi-supervisada. El sistema (es decir, el sistema operativo) en el que se implementa es generalmente uniforme en una cantidad de máquinas, pero puede ser altamente personalizado para 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 hacer que la implementación sea factible en todo, se deben mantener los estándares, y hay una tendencia mucho más fuerte a un solo idioma y entorno.

Esta es la razón por la 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 suele ser trivial para ejecutar en diferentes máquinas.

Efectos secundarios y estatales

(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 los datos a petición 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 servidor permitir que la base de datos mantenga sus garantías sobre la integridad de los datos utilizando su interfaz correctamente (por ejemplo, no utilice un caché para actualizaciones que nunca son vistas por La base de datos), aunque también es un objetivo del código del lado del servidor no sobrecargar la base de datos con el trabajo y mantener al usuario en espera de 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 (en su mayoría, impresión 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 ocurrir sin efectos secundarios.

Esta es la razón por la que 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 son correctos, mientras que la programación del lado del servidor puede realizarse casi exclusivamente en un entorno orientado a texto , donde las pruebas automatizadas comprueban que la lógica sigue haciendo lo que se supone que debe hacer.

    
respondido por el logc 12.01.2015 - 13:37
1

Esto de ninguna manera pretende ser una respuesta aceptada; más bien lo ofrezco como un punto complementario (en respuesta a la pregunta when do you use each of them ) que aún no se ha mencionado en las otras respuestas hasta el momento, 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ácil de leer y / o puede ser diseñado por ingeniería inversa si se ha ofuscado.

El código fuente que se encuentra en el lado del servidor, sin embargo, puede proteger de forma segura los algoritmos propietarios y solo devolver el resultado; una caja negra de todo tipo.

    
respondido por el Kosta Kontos 16.03.2016 - 20:00

Lea otras preguntas en las etiquetas

Comentarios Recientes

ES6: ProtocolosELM: ES6 Ejemplo ¿Es usted un autor de cargadores de fuentes o es más probable que prefiera la sintaxis de ES6 sobre la sintaxis familiar de ES5? Puede ser parte de agregar una nueva fuente o implementar características de fuente. Cada parte del scripter debe ir junto con el linting y la verificación del compilador. Si está utilizando características de lenguaje puro, debe estar en los sistemas de producción para tener una flexibilidad completa, pero si su especificación solo se aplica a JavaScript,... Lee mas