none
tres capas (3-layer) vs MVC RRS feed

  • Pregunta

  • Hola :)

    Lamentablemente después de tanto buscar y preguntar, aun no logro comprender la diferencia entre el modelo de tres capas (presentación, lógica de negocio y acceso a datos) y el patrón MVC.

    He encontrado muchas fuentes que indican que el MVC concierne solamente a la capa de presentación, pero también he encontrado opiniones que indican que si tengo una aplicación MVC, esta ya seria de 3 capas(presentación, lógica de negocio y acceso a datos).

    Como puede el MVC estar solo en la capa de presentación,  si el espacio de nombres "Model" contiene clases con el CRUD y también el ORM?

    Quisiera saber cual es la relación entre estos tres conceptos: cliente-servidor, 3 - layer  y MVC.

    Estoy muy confundida a pesar de ya haber desarrollado aplicaciones con el framework MVC esta duda persiste.

    Estaré muy agradecida si pueden ayudarme a absolver mis dudas.

    Saludillos :)

    sábado, 14 de septiembre de 2013 15:59

Todas las respuestas

  • aun no logro comprender la diferencia entre el modelo de tres capas

    es que no hay diferencia, porque no se pueden comparar

    la idea es que debs complementarlos entre si, mvc es un patron de presentacion y solo eso

    Como puede el MVC estar solo en la capa de presentación,  si el espacio de nombres "Model" contiene clases con el CRUD y también el ORM?

    eso es lo que implementan los ejemplos simples, pero en una arquitectura real ni loco pones orm en el controlador

    el orm se queda en el repositorio en la capa de datos, nunca una entidad de dominio llega al controlador

    Quisiera saber cual es la relación entre estos tres conceptos: cliente-servidor, 3 - layer  y MVC.

    la relacion es que desde el controlador debes invocar al metodo de la capa de negocio (servicio, aplicacion, etc) que definas y a partir de alli modelas las entidades de dominio

    entre mvc y la capa de negocio debes definir otro tipo de entidad y seguramente usarias AutoMapper para facilitar la conversion de una a otra

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 14 de septiembre de 2013 16:36
  • aun no logro comprender la diferencia entre el modelo de tres capas

    es que no hay diferencia, porque no se pueden comparar

    la idea es que debs complementarlos entre si, mvc es un patron de presentacion y solo eso

    Como puede el MVC estar solo en la capa de presentación,  si el espacio de nombres "Model" contiene clases con el CRUD y también el ORM?

    eso es lo que implementan los ejemplos simples, pero en una arquitectura real ni loco pones orm en el controlador

    el orm se queda en el repositorio en la capa de datos, nunca una entidad de dominio llega al controlador

    Quisiera saber cual es la relación entre estos tres conceptos: cliente-servidor, 3 - layer  y MVC.

    la relacion es que desde el controlador debes invocar al metodo de la capa de negocio (servicio, aplicacion, etc) que definas y a partir de alli modelas las entidades de dominio

    entre mvc y la capa de negocio debes definir otro tipo de entidad y seguramente usarias AutoMapper para facilitar la conversion de una a otra

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Hola Leandro y gracias por responder

    bueno entonces tu confirmas que el MVC se aplica solamente a la capa de presentación?

    Entonces por favor corrígeme si me equivoco; la capa de Lógica del negocio debería ir en una librería(proyecto tipo librería) aparte y la capa de acceso a datos en otra librería (proyecto tipo librería); y para para poder tener una aplicación en 3 capas con MVC en la capa de presentación (que seria un proyecto tipo aplicacion web) se debería invocar desde esta ultima aplicación a las otras dos librerias?

    En mis aplicaciones tengo toda la lógica del negocio definida en clases en el espacio de nombres MODELS, ahí también esta el ORM y mi clase repositorio que contiene las sentencias LINQ, entonces mi arquitectura se podría mapear a 3 capas o considerarse como una arquitectura de 3 capas?

    Sera posible que pudieras subir algun gráfico explicando este tema?


    De antemano muuuuchas gracias por atenderme.


    • Editado Juanita.net sábado, 14 de septiembre de 2013 22:03
    sábado, 14 de septiembre de 2013 21:58
  • entonces tu confirmas que el MVC se aplica solamente a la capa de presentación?

    exacto

    la capa de Lógica del negocio debería ir en una librería(proyecto tipo librería) aparte y la capa de acceso a datos en otra librería (proyecto tipo librería); y para para poder tener una aplicación en 3 capas con MVC en la capa de presentación (que seria un proyecto tipo aplicacion web) se debería invocar desde esta ultima aplicación a las otras dos librerias?

    a las dos no, desde el controlador solo invocas a la capa de negocio

    y el negocio invoca al acceso a datos

    entonces mi arquitectura se podría mapear a 3 capas o considerarse como una arquitectura de 3 capas?

    si esta todo en la carpeta "models" en el proyecto web eso no es 3 capas, solo tienes una la de presentacion

    quizas si somos menos puristas podriamos decir que son dos capas la web y los repositorios tomarlos como capa de datos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 14 de septiembre de 2013 22:28
  • a las dos no, desde el controlador solo invocas a la capa de negocio

    Desde le controlador?

    Donde entra la participación del modelo? solo para contener las clases Viewmodels? o para representar las entidades (ejem: trabajador) y sus propiedades?

    Las clases repositorio con las sentencias LINQ, deben ir en la capa de negocio? o en la carpeta models?

    La ORM debería ir entonces en la librería de acceso a datos?

    Gracias por tu paciencia

    sábado, 14 de septiembre de 2013 22:55
  • Desde le controlador?

    bueno si vamos a lo especifico seria desde el action que esta en el controlador, igual creo que se entendia la idea

    Donde entra la participación del modelo? solo para contener las clases Viewmodels?

    si por modelo te refieres a las clases que pondrias en la carpeta "Models" seguramente deje de tener sentido esa carpeta

    ya que el modelo puede pasar a ser las entidades que uses para comunicar mvc con el negocio, alli entra en juego automapper para convertir de tipos

    si una vista es muy compleja quizas si debas crear un viewmodel en la carpeta "Models", sino podrias usar directamente la clase que provea el negocio

    Las clases repositorio con las sentencias LINQ, deben ir en la capa de negocio? o en la carpeta models?

    en la capa de negocio

    si quieres abstraer de forma completa tu dominio no deberia llegar nunca a la vista, las entidades de dominio se queda en la puerta del negocio pero nunca pasan

    La ORM debería ir entonces en la librería de acceso a datos?

    exacto

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    domingo, 15 de septiembre de 2013 3:02
  • Ok

    Entonces resumiendo, mi aplicacion tiene en la carpeta MODELS  toda la logica de negocio, que incluye las sentencias LINQ para el CRUD, la declaracion de las entidades (ejem: la clase Empleado) la validación y también en esta carpeta tengo la ORM.

    Bajo esa figura y considerando que se trata de una aplicación WEB MVC, estariamos hablando de una arquitectura cliente-servidor que en el lado del servidor tiene separación de responsabilidades entre la vista y la logica de negocio debido al patron MVC ???

    y ademas, ¿hablariamos de una sola capa en el servidor?, ¿la de presentación?


    • Editado Juanita.net martes, 17 de septiembre de 2013 0:38
    lunes, 16 de septiembre de 2013 21:39