En ingeniería de software , los términos front-end y back-end se refieren a la separación de preocupaciones entre la capa de presentación ( front-end ) y la capa de acceso a datos ( back-end ) de una pieza de software , o la infraestructura física o hardware . En el modelo cliente-servidor , el cliente generalmente se considera el front-end y el servidor generalmente se considera el back-end, incluso cuando parte del trabajo de presentación se realiza en el servidor mismo.
Introducción
En la arquitectura de software , puede haber muchas capas entre el hardware y el usuario final . El frente es una abstracción, que simplifica el componente subyacente al proporcionar una interfaz fácil de usar , mientras que la parte posterior generalmente maneja el almacenamiento de datos y la lógica comercial .
En telecomunicaciones , el frente puede considerarse un dispositivo o servicio, mientras que el reverso es la infraestructura que soporta la prestación del servicio.
Una regla general es que el lado del cliente (o "interfaz") es cualquier componente manipulado por el usuario. El código del lado del servidor (o "back-end") generalmente reside en el servidor , a menudo lejos físicamente del usuario.
Definiciones de software
- En los sistemas de gestión de contenido , los términos front-end y back-end pueden referirse a las vistas del CMS y las vistas administrativas del usuario final, respectivamente. [1]
- En la síntesis de voz , el front-end se refiere a la parte del sistema de síntesis que convierte el texto de entrada en una representación fonética simbólica , y el back-end convierte la representación fonética simbólica en sonidos reales. [2]
- Para los principales subsistemas de computadoras, un administrador de archivos gráfico es una interfaz para el sistema de archivos de la computadora y una interfaz de shell con el sistema operativo . El front-end se enfrenta al usuario y el back-end lanza los programas del sistema operativo en respuesta. [ cita requerida ]
- En los compiladores , el front-end traduce un código fuente de programación de computadora en una representación intermedia , y el back-end trabaja con la representación intermedia para producir código en un lenguaje de salida de computadora. El back-end generalmente se optimiza para producir código que se ejecuta más rápido. La distinción front-end / back-end puede separar la sección del analizador que se ocupa del código fuente y el back-end que genera código y optimiza . Algunos diseños, como GCC , ofrecen opciones entre múltiples interfaces (analizando diferentes lenguajes de origen ) o backends (generando código para diferentes procesadores de destino ). [3]
- El uso de la interfaz de línea de comandos (CLI) requiere la adquisición de terminología especial y la memorización de comandos , por lo que una interfaz gráfica de usuario (GUI) actúa como un entorno de escritorio de front-end .
Desarrollo web como ejemplo
Otra forma de comprender la diferencia entre los dos es comprender el conocimiento que se requiere de un desarrollador de software de front-end frente a uno de back-end . La siguiente lista se centra en el desarrollo web como ejemplo.
Ambas cosas
- Herramientas de control de versiones como Git , Mercurial o Subversion
- Herramientas y protocolos de transferencia de archivos como FTP o rsync
Centrado en el front-end
- Lenguajes de marcado y web como HTML , CSS , JavaScript y bibliotecas auxiliares que se utilizan comúnmente en esos lenguajes como Sass o jQuery
- Manejo de solicitudes asincrónicas y AJAX
- Aplicaciones de una sola página (con marcos como React , AngularJS o Vue.js )
- Rendimiento web (pintura con mayor contenido, tiempo para interactuar, animaciones e interacciones de 60 FPS , uso de memoria, etc.)
- Diseño web adaptable
- Problemas de compatibilidad entre navegadores y soluciones alternativas
- Pruebas de un extremo a otro con un navegador sin cabeza
- Cree automatización para transformar y agrupar archivos JavaScript, reducir el tamaño de las imágenes ... con herramientas como Webpack o Gulp.js
- Optimización de motores de búsqueda
- Preocupaciones de accesibilidad
- Uso básico de herramientas de edición de imágenes como GIMP o Photoshop
- Interfaz de usuario
- RetroArch
Centrado en el back-end
- Lenguajes de secuencias de comandos como PHP , Python , Ruby , Perl , Node.js o lenguajes compilados como C # , Java o Go
- Marcos de prueba automatizados para el lenguaje que se está utilizando
- Acceso a los datos de la aplicación
- Lógica empresarial de la aplicación
- Administración de base de datos
- Escalabilidad
- Alta disponibilidad
- Problemas de seguridad, autenticación y autorización
- Arquitectura de software
- Transformación de datos
- Métodos y software de respaldo
Tenga en cuenta que ambos puestos, a pesar de que posiblemente trabajen en un producto, tienen un conjunto de habilidades muy distinto.
Definiciones de hardware
En la informática de red , el front-end puede referirse a cualquier hardware que optimice o proteja el tráfico de red . [4] Se denomina hardware de interfaz de usuario de la aplicación porque se coloca en el límite o el interfaz de usuario orientado hacia el exterior de la red . El tráfico de red pasa a través del hardware de front-end antes de ingresar a la red.
En el diseño de procesadores , el diseño de front-end sería la descripción inicial del comportamiento de un circuito en un lenguaje de descripción de hardware como Verilog , mientras que el diseño de back-end sería el proceso de mapear ese comportamiento a transistores físicos en un dado. [5]
Ver también
- Desarrollo web front-end
- Modelo cliente-servidor
- Experiencia lista para usar
- Programación modular
- Patrón de observador
- Patrón de publicación-suscripción
- Tecnología de tracción
- Tecnología de empuje
- Llamada a procedimiento remoto
- Interfaz del programa de aplicación (API)
Referencias
- ^ Thapliyal, Vimal. "Diferencia entre Frontend y Backend MVC - Joomlatuts" . joomlatuts.net . Archivado desde el original el 30 de diciembre de 2016 . Consultado el 30 de diciembre de 2016 .
- ^ Gutiérrez - Osuna, Ricardo. "L18: Síntesis de voz (back-end)" (PDF) . tamu.edu . Universidad de Texas A&M . Consultado el 29 de diciembre de 2016 .
- ^ Bin Muhammad, Rashid. "Notas sobre sistemas operativos" . www.personal.kent.edu . Universidad Estatal de Kent . Consultado el 30 de diciembre de 2016 .
- ^ O'Dell, Mike. "Procesadores de front-end de red, una vez más | Junio de 2009 | Comunicaciones del ACM" . cacm.acm.org . Consultado el 30 de diciembre de 2016 .
- ^ "Diseño Front-End | Documentación en línea para productos Altium" . techdocs.altium.com . Consultado el 30 de diciembre de 2016 .