2010-09-16 10 views
9

No deseo almacenar las clases de mi modelo de dominio en el mismo ensamblaje que mi plataforma web. La carpeta de Modelos en la estructura del proyecto es, por lo tanto, inútil para mí. Sin embargo, acabo de terminar el Tutorial de Music Store y noté cómo crean una carpeta "ViewModels" que tiene mucho sentido para mí.De MVC a MVVM

¿Tiene sentido tratar la carpeta Modelos como una carpeta ViewModels? ¿Mucha gente hace esto? ¿Existe un patrón como MVVM?

Respuesta

15

Un modelo de vista es algo para agregar otro nivel de abstracción en caso de que no confíe completamente en su código de presentación (o simplemente encuentre este tipo de encapsulado más elegante).

Es decir, si su clase Person tiene un método Delete o una propiedad SSNumber, es posible que desee dejar pasar este objeto a una vista, ya que, conceptualmente, le permite llamar Eliminar o visualizar el número de seguro social, que debe no ser capaz de.
Para evitar esta situación, crea otra clase, PersonViewModel, que solo contiene información/métodos que se pueden llamar sin peligro desde una vista.

Esto tiene poco que ver con sacar la lógica del modelo de una aplicación MVC. Puede crear un proyecto separado para su modelo y hacer referencia a él desde su aplicación web, independientemente de si usa la encapsulación de ViewModel. Hacerlo es alentado por los libros que he leído hasta ahora.

4

El modelo de dominio está diseñado en términos de lógica empresarial y abstracción de negocios, está dirigido a resolver problemas de negocios utilizando técnicas orientadas a objetos, el resultado es un modelo de dominio con entidades y objetos de valor que se referencian e interactúan con otros lograr los objetivos de la lógica de negocios.

Por otro lado, la presentación es una perspectiva diferente, principalmente necesita aplanar los objetos de dominio para facilitar el enlace, también puede no estar interesado en algunos atributos y propiedades de las entidades de modelo de dominio en la capa de presentación. por lo tanto, el modelo de presentación (Ver modelo) es una personalización más del modelo para fines de vista, la estructura podría ser diferente, puede eliminar algunos campos que no son necesarios para la presentación y también agregar algunos campos solo para fines de presentación (como "IsIdEnabled" o SliderWidth, ...)

0

Como dice Dx_ anteriormente, no hay nada como MVVC.

Pero, esta charla fina describe MVVM muy bien: Deep Dive MVVM