Vamos a desarrollar una gran aplicación de escritorio empresarial muy pronto y he estado estudiando el enfoque WPF + PRISM + MVVM, tengo una buena comprensión de la mayoría de los conceptos y me encanta la modularidad que proporciona.WPF WCF Prism y MVVM - forma correcta de exponer entidades
Donde estoy teniendo problemas es con cómo diseñar la capa de servicios para obtener datos dentro y fuera, especialmente cuando este servicio es presentado por un módulo con la idea de que el módulo dependiente puede usarlo.
Quería resumir mis servicios de datos WCF dentro de los servicios de aplicaciones y usar ServiceLocator
para resolver instancias concretas desde mis modelos de vista, sin embargo, estoy teniendo dificultades para encontrar la forma de hacerlo, principalmente debido a que mi estado es parte del servicio WCF.
Por ejemplo
Module1 Contiene Servicio WCF + Hormigón de servicios de aplicaciones (ISearchService) + Servicio WCF generado entidades (modelo)
Module1.Infastructure - contiene la siguiente interfaz para el servicio de aplicación
public interface ISearchService
{
ObservableCollection<Person> Search(string search);
}
esto se registrarían en el UnityContainer de manera que cualquier otro módulo puede obtener la implementación concreta introducida por el módulo.
Mi problema es que las Entidades (Person
) se definen en el propio módulo (en el servicio WCF), por lo que introducir un servicio y esperar que otros módulos puedan usarlo significa que necesitan hacer referencia al módulo mismo no solo la infraestructura de los módulos, a menos que saque los servicios a otro ensamblado.
¿Debería exponer mis entidades que se generan automáticamente desde mi modelo EF de esta manera?
¿Alguien tiene una mejor solución?
Puede que le interese [esta pregunta mía] (http://stackoverflow.com/q/4824058/302677) acerca de si el servicio WCF debe devolver los objetos 'Modelo', o un objeto de transferencia de datos. Terminé yendo con un DTO, y me resultó mucho más fácil hacer que devolviera un objeto de transferencia de datos y usar algo como [AutoMapper] (http://automapper.codeplex.com/) para asignar 'DTOs' a' Modelos' y viceversa – Rachel
Me gusta esa idea, ¿usaría POCO's en Entity Framework básicamente sería lo mismo? –