¿Cuál es la diferencia entre "capas" y "niveles"?

214

¿Cuál es la diferencia entre "Capas" y "Niveles"?

Cretzel
fuente
3
Casi todos los que he conocido en el mundo del software usan estos dos términos indistintamente como si fueran exactamente lo mismo.
RBT

Respuestas:

260

Las capas lógicas son simplemente una forma de organizar su código. Las capas típicas incluyen Presentación, Negocios y Datos, lo mismo que el modelo tradicional de 3 niveles. Pero cuando hablamos de capas, solo hablamos de la organización lógica del código. De ninguna manera está implícito que estas capas puedan ejecutarse en diferentes computadoras o en diferentes procesos en una sola computadora o incluso en un solo proceso en una sola computadora. Todo lo que estamos haciendo es discutir una forma de organizar un código en un conjunto de capas definidas por una función específica.

Sin embargo, los niveles físicos solo se refieren a dónde se ejecuta el código. Específicamente, los niveles son lugares donde se despliegan las capas y donde se ejecutan las capas. En otras palabras, los niveles son el despliegue físico de capas.

Fuente: Rockford Lhotka, ¿Todas las aplicaciones deberían ser n-tier?

Panos
fuente
43

Lea la publicación de Scott Hanselman sobre el tema: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

Sin embargo, recuerde que en "Scott World" (que con suerte es su mundo también :)) un "Nivel" es una unidad de despliegue, mientras que una "Capa" es una separación lógica de responsabilidad dentro del código. Puede decir que tiene un sistema de "3 niveles", pero lo está ejecutando en una computadora portátil. Puede decir que tiene un sistema de "3 capas", pero solo tiene páginas ASP.NET que se comunican con una base de datos. Hay poder en la precisión, amigos.

Josh
fuente
36

Las capas se refieren a la separación lógica del código. Las capas lógicas lo ayudan a organizar mejor su código. Por ejemplo, una aplicación puede tener las siguientes capas.

1) Capa de presentación o Capa de IU 2) Capa empresarial o Capa de lógica empresarial 3) Capa de acceso a datos o Capa de datos

Las tres capas anteriores residen en sus propios proyectos, pueden ser 3 proyectos o incluso más. Cuando compilamos los proyectos obtenemos la DLL de capa respectiva. Entonces tenemos 3 DLL's ahora.

Dependiendo de cómo implementemos nuestra aplicación, podemos tener de 1 a 3 niveles. Como ahora tenemos 3 DLL, si implementamos todas las DLL en la misma máquina, entonces solo tenemos 1 nivel físico pero 3 capas lógicas.

Si elegimos implementar cada DLL en una máquina separada, entonces tenemos 3 niveles y 3 capas.

Entonces, las capas son una separación lógica y los niveles son una separación física. También podemos decir que los niveles son el despliegue físico de capas.

Satish
fuente
Lo que entendí de su respuesta es que podemos implementar 3 capas (DLL) en tres servidores diferentes. Derecho ? ¿Puede decirme cómo puedo dar una referencia de la capa Business Logic en la capa de presentación?
Mazhar Khan
@MazharKhan Es posible que desee utilizar un servicio para exponer la funcionalidad de la capa empresarial a la capa de presentación
Amit Saxena
32

¿Por qué siempre intenta usar palabras complejas?

Una capa = una parte de su código , si su aplicación es un pastel, esta es una porción.

Un nivel = una máquina física , un servidor.

Un nivel aloja una o más capas.


Ejemplo de capas:

  • Capa de presentación = generalmente todo el código relacionado con la interfaz de usuario
  • Capa de acceso a datos = todo el código relacionado con el acceso a su base de datos

Nivel:

Su código está alojado en un servidor = Su código está alojado en un nivel.

Su código está alojado en 2 servidores = Su código está alojado en 2 niveles.

Por ejemplo, una máquina que aloja el sitio web en sí (la capa Presentación), otra máquina más segura que aloja el código más sensible a la seguridad (código comercial real: capa comercial, capa de acceso a la base de datos, etc.).


Hay tantos beneficios para implementar una arquitectura en capas. Esto es complicado y la implementación adecuada de una aplicación en capas lleva tiempo. Si tiene alguno, eche un vistazo a esta publicación de Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx

Andrés
fuente
13

He encontrado una definición que dice que las capas son una separación lógica y los niveles son una separación física.

Cretzel
fuente
10
  1. En inglés simple, se Tierrefiere a "cada uno en una serie de filas o niveles de una estructura colocada una encima de la otra", mientras que se Layerrefiere a "una hoja, cantidad o espesor de material, típicamente uno de varios, que cubre una superficie o cuerpo ".

  2. El nivel es una unidad física , donde se ejecuta el código / proceso. Por ejemplo: cliente, servidor de aplicaciones, servidor de bases de datos;

    La capa es una unidad lógica , cómo organizar el código. Por ejemplo: presentación (vista), controlador, modelos, repositorio, acceso a datos.

  3. Los niveles representan la separación física de la presentación, el negocio, los servicios y la funcionalidad de datos de su diseño en computadoras y sistemas separados.

    Las capas son las agrupaciones lógicas de los componentes de software que componen la aplicación o el servicio. Ayudan a diferenciar entre los diferentes tipos de tareas realizadas por los componentes, lo que facilita la creación de un diseño que admita la reutilización de los componentes. Cada capa lógica contiene varios tipos de componentes discretos agrupados en subcapas, y cada subcapa realiza un tipo específico de tarea.

El patrón de dos niveles representa un cliente y un servidor.

En este escenario, el cliente y el servidor pueden existir en la misma máquina, o pueden estar ubicados en dos máquinas diferentes. La siguiente figura ilustra un escenario de aplicación web común en el que el cliente interactúa con un servidor web ubicado en el nivel de cliente. Este nivel contiene la lógica de la capa de presentación y cualquier lógica de capa empresarial requerida. La aplicación web se comunica con una máquina separada que aloja el nivel de base de datos, que contiene la lógica de la capa de datos.

Capas vs niveles

Ventajas de capas y niveles:

  • La estratificación lo ayuda a maximizar la capacidad de mantenimiento del código, optimizar la forma en que funciona la aplicación cuando se implementa de diferentes maneras y proporcionar una delimitación clara entre las ubicaciones donde se deben tomar ciertas decisiones tecnológicas o de diseño.

  • Colocar sus capas en niveles físicos separados puede ayudar al rendimiento al distribuir la carga en varios servidores. También puede ayudar con la seguridad al segregar componentes y capas más sensibles en diferentes redes o en Internet en comparación con una intranet.

Una aplicación de 1 nivel podría ser una aplicación de 3 capas.

TryinHard
fuente
6

Sí, mis queridos amigos dijeron correctamente. La capa es una partición lógica de la aplicación, mientras que el nivel es una partición física de la partición del nivel del sistema depende de la partición de la capa. Al igual que una aplicación ejecutada en una sola máquina, pero sigue una arquitectura de 3 capas, por lo que podemos decir que la arquitectura de capa podría existir en una arquitectura de niveles. En términos simples, la arquitectura de 3 capas puede implementarse en una sola máquina, entonces podemos decir que es una arquitectura de 1 nivel. Si implementamos cada capa en una máquina separada, entonces se llama arquitectura de 3 niveles. Una capa también puede ejecutar varios niveles. Componente relacionado con la arquitectura de capa para comunicarse entre sí fácilmente.
Al igual que seguimos la arquitectura dada a continuación

  1. Capa de presentación
  2. capa de lógica de negocios
  3. capa de acceso a datos

Un cliente puede interactuar con la "capa de presentación", pero accede al componente público de la capa inferior (como el componente público de la capa de lógica de negocios) a la "capa de lógica de negocios" debido a razones de seguridad.
P * ¿por qué usamos la arquitectura de capa? porque si implementamos la arquitectura de capa, entonces aumentamos la eficiencia de nuestras aplicaciones como

==> seguridad

==> manejabilidad

==> escalabilidad

otra necesidad, como después de desarrollar la aplicación, necesitamos cambiar dbms o modificar la lógica de negocios, etc., entonces es necesario para todos.

P * ¿por qué usamos la arquitectura de niveles?

Debido a que la implementación física de cada capa brinda una mejor eficiencia, sin la arquitectura de capa no podemos implementar la arquitectura de niveles. una máquina separada para implementar un nivel separado y un nivel separado es implementar una o más capas, por eso la usamos.
Se utiliza con fines de tolerancia a fallos. ==> fácil de mantener.

Ejemplo simple

Al igual que un banco abierto en una cámara, en qué categorías el empleado:

  1. portero
  2. una persona por dinero en efectivo
  3. una persona responsable de introducir el esquema bancario
  4. gerente

Todos ellos son los componentes relacionados del sistema.

Si vamos al banco para fines de préstamo, primero un encargado de la puerta abre la puerta con una sonrisa y luego nos acercamos a una persona que presenta todos los esquemas de préstamo después de eso, vamos a la cabina del gerente y aprobamos el préstamo. Después de eso finalmente vamos al mostrador del cajero y tomamos el préstamo. Estas son la arquitectura de capa del banco.

¿Qué pasa con el nivel? La sucursal de un banco abre en una ciudad, luego en otra ciudad, luego en otra, pero ¿cuál es el requisito básico de cada sucursal?

  1. portero
  2. una persona por dinero en efectivo
  3. una persona responsable de introducir el esquema bancario
  4. gerente

exactamente el mismo concepto de capa y nivel.

atul
fuente
Gran explicación querida
Dulaj Kulathunga
6

Las capas son una separación lógica related-functionality[code] dentro de una aplicación, la comunicación entre capas es explícita y está débilmente acoplada. [Lógica de presentación, lógica de aplicación, lógica de acceso a datos]

Los niveles son la separación física de layers[que se alojan en servidores individuales] en una computadora individual (proceso).

ingrese la descripción de la imagen aquí

Como se muestra en el diagrama:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

n- Ventajas de nivel :
mejor
escalabilidad de seguridad : a medida que su organización crece Puede ampliar su nivel de base de datos con agrupación de bases de datos sin tocar otros niveles.
Mantenimiento : el diseñador web puede cambiar el código de vista, sin tocar las otras capas en los otros niveles. Actualice o mejore
fácilmente [Ej: puede agregar código de aplicación adicional, actualizar el área de almacenamiento o incluso agregar múltiples capas de presentación para dispositivos separados como dispositivos móviles, tabletas, PC]

Yash
fuente
6

Me gusta la siguiente descripción de Microsoft Application Architecture Guide 2

Las capas describen las agrupaciones lógicas de la funcionalidad y los componentes en una aplicación; mientras que los niveles describen la distribución física de la funcionalidad y los componentes en servidores, computadoras, redes o ubicaciones remotas separadas. Aunque tanto las capas como los niveles usan el mismo conjunto de nombres (presentación, negocio, servicios y datos), recuerde que solo los niveles implican una separación física.

sanjaykumar81
fuente
5

Utilizo capas para describir el arquitecto o la pila de tecnología dentro de un componente de mis soluciones. Utilizo niveles para agrupar lógicamente esos componentes típicamente cuando la red o la comunicación entre procesos están involucrados.

Brian Matthews
fuente
1

Técnicamente, un Nivel puede ser un tipo de entorno mínimo requerido para que se ejecute el código.

Por ejemplo, hipotéticamente se puede ejecutar una aplicación de 3 niveles

  1. 3 máquinas físicas sin sistema operativo.
  2. 1 máquina física con 3 máquinas virtuales sin sistema operativo.

    (Esa fue una aplicación de nivel 3- (hardware))

  3. 1 máquina física con 3 máquinas virtuales con 3 sistemas operativos diferentes / iguales

    (Esa era una aplicación de nivel 3- (OS))

  4. 1 máquina física con 1 máquina virtual con 1 sistema operativo pero 3 servidores de aplicaciones

    (Esa era una aplicación de nivel 3- (AppServer))

  5. 1 máquina física con 1 máquina virtual con 1 SO con 1 AppServer pero 3 DBMS

    (Esa era una aplicación de nivel 3- (DBMS))

  6. 1 máquina física con 1 máquina virtual con 1 SO con 1 AppServers y 1 DBMS pero 3 libros de Excel.

    (Esa era una aplicación de nivel 3- (AppServer))

El libro de Excel es el entorno mínimo requerido para que se ejecute el código VBA.

Esos 3 libros pueden sentarse en una sola computadora física o en varias.

He notado que, en la práctica, las personas quieren decir "Nivel de SO" cuando dicen "Nivel" en el contexto de descripción de la aplicación.

Es decir, si una aplicación se ejecuta en 3 sistemas operativos separados, entonces es una aplicación de 3 niveles.

Entonces, una forma pedagógicamente correcta de describir una aplicación sería

Apto para "1 a 3 niveles, que se ejecuta en 2 niveles".

:)


Las capas son solo tipos de código con respecto a la separación funcional de tareas dentro de la aplicación (por ejemplo, Presentación, Datos, Seguridad, etc.)

Dimitri KOH
fuente
0

Las capas son entidades conceptuales y se utilizan para separar la funcionalidad del sistema de software desde un punto de vista lógico; cuando implementa el sistema, organiza estas capas utilizando diferentes métodos; en esta condición nos referimos a ellos no como capas sino como niveles.

gst
fuente
0

Cuando habla de presentación, servicio, datos, capa de red, está hablando de capas. Cuando los "despliegas por separado", hablas de niveles.

Los niveles tienen que ver con el despliegue. Tómelo de esta manera: tenemos una aplicación que tiene una interfaz creada en Angular, tiene un servidor como MongoDB y una capa intermedia que interactúa entre la interfaz y el servidor. Entonces, cuando esta aplicación frontend, la aplicación de base de datos y la capa intermedia se implementan por separado, decimos que es una aplicación de 3 niveles.

Beneficio: si necesitamos escalar nuestro backend en el futuro, solo necesitamos escalar el backend de forma independiente y no hay necesidad de escalar el frontend.

Aarzoo Trehan
fuente