estoy empezando a usar MVVM Light versión 4, y no puedo entender:¿Cuál es el propósito de DataService y IDataService en MVVM Light
- Por qué debería usar DataService y IDataService?
- ¿Debo crear un servicio de datos para cualquier clase en el modelo?
estoy empezando a usar MVVM Light versión 4, y no puedo entender:¿Cuál es el propósito de DataService y IDataService en MVVM Light
En primer lugar - como de costumbre - en MVVM no hacer tienen hacer algo, es una recomendación o mejores prácticas. En general, usted es libre de codificar el acceso a los datos en su modelo de visualización, y hacerlo podría ser una buena práctica para proyectos pequeños o implementaciones prototípicas.
Sin embargo, debe tener en cuenta que esto también tiene algunos inconvenientes. La razón para implementar un servicio de datos es que este componente es reutilizable e incluso podría usarse en otros escenarios, como una aplicación MVC. Además, separa la preocupación de obtener un modelo de un almacén de datos.
El motivo para implementar un IDataService es que puede intercambiar la implementación cuando lo necesite, p. para el suministro de datos de tiempo de diseño. Cuando lo necesite, también debe considerar la inversión del patrón de control que depende en gran medida de las interfaces. En este caso, también un contenedor de IOC podría ser interesante, aunque no necesario.
Pero, en primer lugar, lo anterior son recomendaciones, patrones, pautas de diseño y mejores prácticas que le dan la libertad de diseñar una aplicación que mejor se adapte a sus necesidades.
Editar: tamaño de la administración de datos
El diseño y el alcance de su servicio de datos depende de la aplicación y es requisitos. Puede ir desde un único servicio de datos para todos los modelos hasta un servicio de datos por modelo. Además, el diseño de sus interfaces de servicios de datos puede ser una decisión separada. Una clase de servicio puede implementar varias interfaces de servicio, lo que permite ocultar ciertos aspectos (métodos) de la implementación del usuario.
Al diseñar un servicio de datos, debe consultar los patrones unit of work y repository. Hay varias implementaciones de muestra alrededor.
Si solo necesita un patrón de unidad de trabajo muy simple que se basa en una sola consulta, puede echar un vistazo a mi blog, donde escribí sobre convertir un IQueryable
en un patrón de unidad de trabajo. Sin embargo, esto solo se aplica a casos muy simples, por lo general, una implementación completa con un repositorio y una unidad de trabajo adecuada es más conveniente.
Obalix: gracias. Pero, ¿debo crear un servicio de datos para cualquier clase en el modelo? –
@raha: ver edición. – AxelEckenberger
Obalix: gracias, muy útiles :). Realmente lo aprecio. –