Mi sitio ASP.NET MVC se conecta a un servicio WCF para obtener datos. El servicio WCF devuelve un contrato de datos de esta manera:Prácticas recomendadas del modelo de vista MVC de ASP.NET
[DataContract]
public class Person
{
[DataMember]
public string First { get; set; }
[DataMember]
public string Last { get; set; }
}
el modelo de vista en mi proyecto MVC se ve así:
public class MyViewModel
{
public string SomeExtraField1 { get; set; }
public string SomeExtraField2 { get; set; }
public string SomeExtraField3 { get; set; }
public Person Person { set; set; }
}
En caso de que mi vista del modelo se hace referencia al contrato de datos "persona" que se devuelve del servicio de datos? ¿O debería crear una nueva clase "Persona" en mi proyecto MVC que refleje las propiedades en el contrato de datos "Persona"?
La llamada de servicio WCF está oculta detrás de una interfaz. Parece ser que tener la referencia de la interfaz del contrato de datos hace que mi interfaz sea una abstracción permeable. Sin embargo, tengo algunas personas que creen que la creación de una clase adicional de "Persona" en mi proyecto MVC que refleja el contrato de datos es un exceso de código.
¿Cuáles son las mejores prácticas que rodean este tipo de estratificación/desacoplamiento?
¿Está bien pasar el objeto de dominio al modelo de vista a través del constructor y usar el objeto de dominio de forma privada? – Fixer
@Fixer, no, el encuadernador de modelo predeterminado se ahogará en eso. –
@Darin, +1 para la introducción de AutoMapper – CjCoax