Diferencia entre frontend, backend y middleware en desarrollo web


Me preguntaba si alguien puede comparar / contrastar las diferencias entre frontend, backend y middleware ("middle-end"?) sucintamente.

¿Hay casos en los que se superponen? ¿Hay casos en los que deben superponerse, y frontend/backend no pueden separarse? En términos de cuellos de botella, ¿qué extremo está asociado con qué tipo de cuellos de botella?

Author: Braiam, 2009-03-12

5 answers

Aquí hay un desglose:

Nivel Front-end - > Capa de interfaz de usuario que generalmente consiste en una mezcla de HTML, Javascript, CSS, Flash y varios códigos del lado del servidor como ASP.Net, ASP clásico, PHP, etc. Piense en esto como lo más cercano al usuario en términos de código.

Middleware, middle-tier -> One tier back, generalmente conocido como la parte de "plomería" de un sistema. Java y C# son lenguajes comunes para escribir esta parte que podrían verse como el pegamento entre la interfaz de usuario y los datos y pueden ser servicios web o componentes WCF u otros componentes SOA posiblemente.

Nivel de back-end -> Las bases de datos y otros almacenes de datos están generalmente en este nivel. Oracle, MS-SQL, MySQL, SAP y varias piezas de software listas para usar vienen a la mente para esta pieza de software que es el procesamiento final de los datos.

La superposición puede existir entre cualquiera de estos como usted podría tener todo vertido en una capa como un ASP.Net sitio web que utiliza la funcionalidad AJAX incorporada que genera Javascript mientras que el código detrás puede contener comandos de base de datos haciendo que el código detrás contenga niveles medios y de back-end. Alternativamente, se podría usar VBScript para actuar como todas las capas usando objetos ADO y fusionando los tres niveles en uno.

Del mismo modo, tomar middleware y ya sea front o back-end se puede combinar en algunos casos.

Los cuellos de botella generalmente tienen varios niveles diferentes:

1) Procesamiento de base de datos o back-end - > Esto puede variar de nómina o ventas u otras tareas donde el rendimiento a la base de datos está empantanando las cosas.

2) Cuellos de botella de Middleware -> Aquí sería donde algunos servicios web pueden estar golpeando la capacidad, pero los extremos frontal y posterior tienen ancho de banda para manejar más tráfico. Alternativamente, puede haber algún servidor que sea parte de un sistema que no sea la parte de la interfaz de usuario o los datos sin procesar que pueden ser un cuello de botella usando algo como Biztalk o MSMQ.

3) Cuellos de botella Front-end - > Esto podría cliente o problemas del lado del servidor. Por ejemplo, si tomó un PC de gama baja y lo hizo cargar una página web que consistía en una gran cantidad de datos que se descargaban, el cliente podría ser donde está el cuello de botella. Del mismo modo, el servidor podría estar haciendo cola de solicitudes si se está martilleando con solicitudes como Amazon.com u otros sitios web de alto tráfico pueden llegar a veces.

Algo de esto está sujeto a interpretación, por lo que no es perfecto de ninguna manera e YMMV.


EDITAR: Algo a considerar es que algunos los sistemas pueden tener múltiples front-ends o back-ends. Por ejemplo, un sistema de gestión de contenido probablemente tendrá una forma para que los visitantes del sitio vean el contenido que es un front-end, pero ¿qué pasa con la forma en que los editores de contenido son capaces de cambiar los datos en el sitio? La capacidad de extraer estos datos podría verse como front-end, ya que es un componente de interfaz de usuario o podría verse como un back-end, ya que es utilizado por los usuarios internos en lugar de que el público en general vea el sitio. Por lo tanto, hay algo que decir contexto aquí.

 54
Author: JB King,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-14 16:40:24

En términos generales, la gente se refiere a la capa de presentación de una aplicación como su front end, su capa de persistencia (base de datos, por lo general) como el back end, y cualquier cosa entre como middle tier. Este conjunto de ideas a menudo se conoce como arquitectura de 3 niveles. Le permiten separar su aplicación en más fácilmente comprensible (y comprobable!) fragmentos; también puede reutilizar código de nivel inferior más fácilmente en niveles superiores.

Qué código es parte de qué nivel es algo subjetivo; los diseñadores gráficos tienden a pensar en todo lo que no es la presentación como el back-end, la gente de la base de datos piensa en todo lo que está delante de la base de datos como el front-end, y así sucesivamente.

Sin embargo, no todas las aplicaciones necesitan separarse de esta manera. Ciertamente es más trabajo tener 3 subproyectos separados que simplemente abrir index.php y get cracking; dependiendo de (1) cuánto tiempo espera tener para mantener la aplicación (2) qué tan compleja espera que la aplicación se vuelva, puede renunciar a la complejidad.

 7
Author: Dan Davies Brackett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-11 23:43:19

De hecho hay 3 preguntas en tu pregunta :

  • Define frontend, middle y back end
  • ¿Cómo y cuándo se superponen ?
  • Sus cuellos de botella habituales asociados.

Lo que JB King ha descrito es correcto, pero es una versión particular y simple, donde de hecho mapeó front, middle y bacn a una capa MVC. Mapeó M hacia atrás, V hacia adelante y C hacia el medio.

Para muchas personas, está bien, ya que vienen del mundo feo donde incluso MVC no se aplicó, y podría tener llamadas directas a la base de datos en una vista.

Sin embargo, en aplicaciones web reales y complejas, de hecho tiene dos o tres capas diferentes, llamadas front, middle y back. Cada uno de ellos puede tener una base de datos asociada y un controlador.

El front-end será visible por el usuario final. No debe confundirse con el front-office, que es la interfaz de usuario para los parámetros y la administración del front. El front-end generalmente será algún tipo de CMS o plataforma de comercio electrónico (Magento, etc.)

El extremo medio no es obligatorio y es donde está la lógica de negocio. Se basará en un PIM, una herramienta MDM, o algún tipo de base de datos personalizada donde enriquezcas tus productos o tus artículos (para CMS). También será el lugar donde codificará las funciones de negocio que deben compartirse entre diferentes interfaces (por ejemplo, entre la interfaz de PC y la aplicación móvil basada en API). A veces, un ESB o una herramienta como ActiveMQ será su extremo medio

El back-end será una 3ra capa, rodeando su base de datos de origen o su ERP. Puede ser jsut la API wrting y lectura de su ERP. Puede ser su proveedor DB, si usted está haciendo e-commerce. De hecho, realmente depende de los proyectos web, pero siempre es un repositorio central. Se accederá a él a través de una llamada a la base de datos, a través de una API, o una capa de Hibernación, o una aplicación de back-end con todas las funciones

Esta descripción significa que responder a las otras 2 preguntas es no es posible en este hilo, ya que los cuellos de botella realmente dependen de lo que contengan sus 3 extremos: lo que JB King escribió sigue siendo cierto para arquitecturas MVC simples

En el momento en que se hizo la pregunta (hace 5 años), tal vez el patrón MVC aún no estaba tan ampliamente adoptado. Ahora, no hay absolutamente ninguna razón por la que el patrón MVC no se seguiría y una vista estaría vinculada a las llamadas a DB. Si lee la pregunta " ¿Hay casos en los que deben superponerse, y frontend/backend no pueden separarse?"en un sentido más amplio, con 3 componentes diferentes, entonces hay veces en que la arquitectura de 3 capas es inútil, por supuesto. Piense en un simple blog personal, no necesitará extraer datos externos o sondear colas de RabbitMQ.

 5
Author: spiritoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-17 09:46:26

Aquí hay un ejemplo del mundo real que muestra front/mid/back end.

Descripción general:

  • Frontend es responsable de presentar los datos al usuario. Tenga en cuenta peculiaridad interesante que usted puede tener dos diferentes front ends asociados con un solo backend
  • Backend proporciona lógica de negocio/persistencia de datos.
  • El Middleware (activemq en la imagen) es responsable de system to system. integración entre backends. Por lo general, se instala como separado aplicación introduzca la descripción de la imagen aquí

Superposición:

Es posible tener superposición entre frontend y backend. Esto generalmente conduce a problemas a largo plazo con el mantenimiento y la escalabilidad de las aplicaciones. Bastante común en aplicaciones heredadas.

La mayoría de las pilas de tecnología moderna alientan a los desarrolladores a tener una separación estricta. Por ejemplo, en la imagen se puede ver que el backend del primer sistema tiene rest web service que es una clara separación alinear.

Cuellos de botella

La mayoría de los cuellos de botella en grandes son causados por la base de datos/red. Las bases de datos se encuentran en el backend. En cuanto a los problemas de red, cada conexión pasa por netowrk, por lo que cada conexión tiene potencial para ser lenta. Con un buen diseño de la aplicación, estos problemas son evitables en gran medida.

 3
Author: Marcin Szymczak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-13 13:36:39

En términos de redes y seguridad, el Backend es, con mucho, el nodo más seguro (debería ser).

La porción de extremo medio, generalmente siendo un servidor web, estará algo en la naturaleza y cortada en muchos aspectos de la red de una empresa. El nodo de extremo medio generalmente se coloca en la zona desmilitarizada y se segmenta desde la red con la configuración del firewall. La mayor parte del análisis de código del lado del servidor de las páginas web se maneja en el servidor web de gama media.

Llegar al backend significa pasar por el extremo medio, que tiene un conjunto cuidadosamente diseñado de reglas que permiten / no permiten el acceso a los nummies vitales que se almacenan en el servidor de base de datos (backend).

 1
Author: m42,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-11 23:56:45