vista ventajas tutorial net mvc modelo framework ejemplos controlador asp asp.net-mvc nhibernate design-patterns n-tier

asp.net-mvc - tutorial - ventajas de mvc



¿Dónde deberían vivir mis modelos? ¿Nivel web o Nivel de datos?(MVC+NHibernate) (5)

Con MVC, tiene sus modelos que están en la carpeta "Modelos". Parece necesario poner mis modelos aquí para crear vistas fuertemente tipadas y, en general, mantener la filosofía de MVC.

Ningún modelo puede ser lo que quieras. Todavía usaría un modelo de presentación si fuera necesario, pero no tengo inconveniente en usar sus entidades nhibernate en sus puntos de vista.

Con NHibernate, realmente no necesita un nivel de datos, ya que la propia sesión es el nivel de datos.

El nivel de servicio parece una idea válida, pero solo si planea tener varios clientes para esta capa.

De lo contrario, solo tendría 1 proyecto y usar espacios de nombres para separar mis capas. Se construye más rápido y es más fácil de implementar.

Estoy configurando una aplicación de n niveles con MVC, Ninject y NHibernate (mi primer uso de estas tecnologías). En aras de la claridad, los niveles son un nivel de "Datos", un nivel de "Servicios" y un nivel "Web" (todos son proyectos separados).

Con MVC, tiene sus modelos que están en la carpeta "Modelos". Parece necesario poner mis modelos aquí para crear vistas fuertemente tipadas y, en general, mantener la filosofía de MVC.

Sin embargo, con NHibernate, también necesito mis modelos en el nivel "Datos" para que la asignación pueda tener lugar y que NHibernate pueda instanciar objetos reales para regresar a la capa de servicios.

Duplicar las clases en los proyectos no es muy seco y abstraerlas en su propia biblioteca no parece funcionar bien con MVC (ni en la práctica ni en la filosofía).

¿Alguna idea? ¿Cómo se estructuran los objetos O / RM frente a los modelos MVC?


Guardo los modelos / clases de Entity Framework en el nivel de datos y uso la carpeta Models del proyecto MVC para los modelos de presentación y los archivos de modelo.


Mantengo todos mis modelos en el nivel de datos debido a NHibernate. Eche un vistazo a S # arp Architecture para una excelente manera de mantener su presentación limpia. No es necesario que los modelos estén físicamente ubicados en su proyecto web para que sus vistas sean fuertemente tipadas.


Tienes razón sobre el principio DRY aquí. Mantengo mis objetos LINQ-to-SQL separados de mis objetos comerciales y tengo algo de duplicación y no me hace sentir bien, pero parece que no hay una solución simple.

Tuve un momento difícil para tomar esta decisión, pero vi el blog de Rob Conery mientras construía MVC Storefront y al final decidí ir por este camino (objetos ORM Y objetos comerciales)


El modelo de datos es propio. El modelo en MVC es algo diferente. Es el modelo de lo que vas a mostrar, que puede ser o no tu modelo de datos. Tu modelo de datos puede trascender las capas, o no.
Tomemos por ejemplo el formulario de inscripción estándar. El modelo de datos puede incluir el nombre de usuario, la contraseña y un conjunto de clases de historial de inicio de sesión, un indicador que indica que está activo y muchas otras cosas. El modelo en MVC, realmente solo se preocupa por el nombre de usuario y la contraseña, y porque el usuario escribe la contraseña dos veces. ¿Su modelo de datos realmente necesita dos campos de contraseña? No. Sin embargo, el modelo en el MVC sí lo hace. Por lo tanto, dos criaturas diferentes.