3-tier,3-layer,MVC?
-
sábado, 09 de julio de 2011 22:00
Hola gente, bueno mi pregunta talvez es muy basica pero si no la consigo resolver aqui pues no se donde, quisiera pedirles que me aclaren (En Español) cual es la diferencia entre 3-tier, 3-layer y MVC, digo en español porque encontre material en ingles y segun entiendo es de la traduccion al español de donde surge el conflicto para todos, entonces esperare sus respuestas.
Un abrazo enorme a todos y muchas gracias ;)
Todas las respuestas
-
domingo, 10 de julio de 2011 6:29
"Tier" y "Layer" con frecuencia se usan de forma intercambiable, y se traducen ambos al español como "capa". En rigor, cuando se habla de "tier" se hace referencia a una separación física de los componentes (por ejemplo, usando varias DLLs), mientras que cuando se habla de "layer" se refiere a una separación lógica, es decir, la estructura interna del código divide el mismo en áreas de funcionalidad (típicamente presentación, reglas de negocio y acceso a datos). Por supuesto, nada impide, y a menudo así se hace, que cada layer se guarde en un tier, es decir, que se realice una separación física que coincida con la lógica; pero también podría, por ejemplo, compilarse los tres layers en un único tier que fuese un .exe monolítico.
MVC no tiene nada que ver con lo anterior. A grandes rasgos, se trata de un patrón que permite estructurar internamente la capa de presentación, de forma que se separa el aspecto de la pantalla que se presenta al usuario (Vista) de los datos que se muestran en la misma (Modelo) y la lógica que determina cuándo mostrar cada cosa (Controlador). Desde luego nada impide (si así se desea estructurar la aplicación) que el Controlador llame a una capa de reglas de negocio que a su vez llame a una capa de acceso a datos con el fin de recuperar la información que se va a cargar en el Modelo. Y cualquiera de esas capas podría ser no sólo lógica (layer) sino también física (tier).
- Propuesto como respuesta eduard tomàsMVP lunes, 11 de julio de 2011 14:24
-
viernes, 29 de julio de 2011 12:04
"Tier" y "Layer" con frecuencia se usan de forma intercambiable, y se traducen ambos al español como "capa". En rigor, cuando se habla de "tier" se hace referencia a una separación física de los componentes (por ejemplo, usando varias DLLs), mientras que cuando se habla de "layer" se refiere a una separación lógica, es decir, la estructura interna del código divide el mismo en áreas de funcionalidad (típicamente presentación, reglas de negocio y acceso a datos). Por supuesto, nada impide, y a menudo así se hace, que cada layer se guarde en un tier, es decir, que se realice una separación física que coincida con la lógica; pero también podría, por ejemplo, compilarse los tres layers en un único tier que fuese un .exe monolítico.
MVC no tiene nada que ver con lo anterior. A grandes rasgos, se trata de un patrón que permite estructurar internamente la capa de presentación, de forma que se separa el aspecto de la pantalla que se presenta al usuario (Vista) de los datos que se muestran en la misma (Modelo) y la lógica que determina cuándo mostrar cada cosa (Controlador). Desde luego nada impide (si así se desea estructurar la aplicación) que el Controlador llame a una capa de reglas de negocio que a su vez llame a una capa de acceso a datos con el fin de recuperar la información que se va a cargar en el Modelo. Y cualquiera de esas capas podría ser no sólo lógica (layer) sino también física (tier).
entonces si como es mi caso, tengo la aplicacion con los archivos: Model/modelo.cs, Controller/controlador.cs y View/vista.aspx , estaria trabajando todo sobre una sola capa? y como podria estructurar la app para que trabaje en 3 capas?, lo pregunto porque yo con el MVC veo 3 capas quiza mis conocimientos estan errados, siento las molestias pero quisiera tenerlo bien claro :(
-
viernes, 29 de julio de 2011 12:36
Hola,
Como bien comenta Alberto ambos terminos se conocen comunmente como "capas".
En el caso de aplicaciones N-Tier se refiere a una separación física (esto implica necesariamente DLLs diferentes). Normalmente la separación física se realiza en servidores diferenciados por razones de escalabilidad, seguridad, o simplemente necesidad.
En el saco de una arquitectura N-Layer se refiere más a una distribución jerárquica de los roles y las responsabilidades para proporcionar una división efectiva de los problemas a resolver. Los roles indican el tipo y forma de interacción con otras capas y las responsabilidades la funcionalidad que implementan. En este caso pueden existir DLLs diferentes o simplemente pueden estar ubicadas en carpetas diferentes, por ejemplo. Lo que si es importante es que cada capa solo se ocupe de sus propias responsabilidades, y que estas no estén mezcladas.
El caso de MVC es totalmente diferente a todo lo anteriormente comentado. MVC es un patrón de diseño correspondiente a la Capa de Presentación y puede ser utilizado en arquitecturas N-Tier o N-Layer indistintamente.
Quizas con este enlace puedas hacerte una idea más clara de todo lo comentado:
http://icomparable.blogspot.com/2008/10/arquitectura-n-tier-o-arquitectura-n.html
Saludos,
JA Reyes.
Please remember to Vote & "Mark As Answer" if this post is helpful to you.
Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil. -
jueves, 04 de agosto de 2011 21:07Moderador
Hola...
Los términos se confunden mucho... pero tened cuidado porque no es lo mismo..
El libro de arquitectura N Capas orientada al dominio (http://blogs.msdn.com/b/cesardelatorre/archive/2010/03/11/our-new-net-4-0-ddd-n-layer-architecture-app-example.aspx) deja bien claro estos conceptos:
"Las capas (Layers) se ocupan de la división lógica de componentes y funcionalidad y no tiene en cuenta la localización física de componentes en diferentes servidores o lugares. Por lo contrario, los Niveles (Tiers) se ocupan de la distribución física de componentes y funcionalidad en servidores separados, teniendo en cuenta la topología de redes y localizaciones remotas"
Esto no quiere decir que porque tengamos 4 dll, ya estamos implementando Tiers (Niveles).. si esas 4 dll no se pueden distribuir físicamente, entonces lo que tenemos son Layers (Capas)...
MVC es un patrón de arquitectura.. si representas el Modelo, la Vistas y el Controlador en un mismo servidor, estaremos hablando de Layers, pero el patrón MVC también lo podrías representar en Tiers (Niveles) introduciendo capas de servicios que permitan la comunicación remota (WCF, por ejemplo)
Por cierto, MVC no es solo aplicable a la capa de presentación.. ASP.NET MVC es una variante del patrón MVC aplicada solo a la capa de presentación.. pero a nivel de arquitectura, este patrón va mucho más allá..
salu2
MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise NET 3.5.
Mi perfil: My geeks
Colaborador: www.secondnug.com -
lunes, 12 de septiembre de 2011 12:29
Chicos gracias por responder, entonces me queda una duda si implemento una aplicacion con MVC2 o 3 con la estructura que viene por defecto, es decir las carpetas View,Controller y Model, ademas claro pongo mi BD en la carpeta App_Data como archivo adjunto a la aplicacion, estariamos hablando de una aplicacion de 3 capas?. Ademas si considero que el cliente accede a la aplicacion a travez de la web es decir de forma remota, estaria tratandose de una aplicacion 2Tier?
La verdad ando confundida con este tema, a pesar de todas las respuestas jijiji, pero porfavor sigan aportando a este tema porque me parece muy interesante ademas de necesario para los que estamos empezando con este asunto.
Saludillos =)
-
lunes, 12 de septiembre de 2011 13:18
Hola de nuevo,
Para terminar de aclarar conceptos te recomiendo que des un vistazo a la aplicación de ejemplo de MVC denominada NerdDinner:
El código fuente lo puedes encontrar en Code Plex.
NerdDinner es una aplicación con un único proyecto en el que puedes encontrar las tipicas carpetas View, Controller, Model y algunas más. En este caso estaríamos hablando de una aplicación dividida en capas lógicas, pero en ningún caso se trataría de una aplicación dividida en niveles físicos, ya que de hecho todo el proyecto se compilaría a una única DLL.
En el caso de 3 capas hablariamos de Capa de Presentación, Capa de Negocio y Capa de Datos.
En el caso de 2 capas se trataría más bien de una aplicación de tipo Cliente/Servidor.
El número de capas depende de la forma en cada caso de como se organice el código y de la "separación de conceptos" del mismo, pudiendo llegar a hablarse de arquitecturas a N-Capas.
Saludos,
JA Reyes.
Please remember to Vote & "Mark As Answer" if this post is helpful to you.
Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil. -
lunes, 12 de septiembre de 2011 14:48ModeradorExcelente resumen Reyes..
MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise NET 3.5.
Mi perfil: My geeks
Colaborador: www.secondnug.com -
lunes, 12 de septiembre de 2011 21:00
Hola de nuevo,
Para terminar de aclarar conceptos te recomiendo que des un vistazo a la aplicación de ejemplo de MVC denominada NerdDinner:
El código fuente lo puedes encontrar en Code Plex.
NerdDinner es una aplicación con un único proyecto en el que puedes encontrar las tipicas carpetas View, Controller, Model y algunas más. En este caso estaríamos hablando de una aplicación dividida en capas lógicas, pero en ningún caso se trataría de una aplicación dividida en niveles físicos, ya que de hecho todo el proyecto se compilaría a una única DLL.
En el caso de 3 capas hablariamos de Capa de Presentación, Capa de Negocio y Capa de Datos.
En el caso de 2 capas se trataría más bien de una aplicación de tipo Cliente/Servidor.
El número de capas depende de la forma en cada caso de como se organice el código y de la "separación de conceptos" del mismo, pudiendo llegar a hablarse de arquitecturas a N-Capas.
Saludos,
JA Reyes.
Please remember to Vote & "Mark As Answer" if this post is helpful to you.
Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil.Hola JA Reyes cuando dices que el nerddinner seria un modelo dividido en capas logicas, hablamos de 3 capas?, y tambien mencionas que 3 capas seria capas de presentacion,de negocio, de datos, entonces el nerddinner seria de 3 capas?
señores espero no estarlos aburriendo con esto, pero quiero estar bien segura del asunto =(
abrazos =)

