Buenas foreros,
A ver si alguien puede resolverme esta duda sobre Arquitectura con el patrón repositorio el cual estoy estudiando ahora mismo.
Bueno, para mis estudios me he creado un proyecto Web (MVC) y un proyecto de tipo Libreria donde tendré el Dominio.
- HSoft.Samples.Library.Domain (Proyecto de tipo Libreria)
* Abstract (Carpeta donde tengo las interfaces)
* Entities (Carpeta donde tengo mis entidades)
* Repository (Carpeta donde tengo los Repositorios)
- HSoft.Samples.Web (Aplicativo MVC)
Bien, pues mostrando esto, y esperando ser claro, me surgen tres pequeñas dudas.
1-. En mis repositorios, por ejemplo, en un método que fuera AddClient(), si quisiera validar ciertos casos previamente respecto a la BBDD, o respecto a la entidad misma.. ¿Estaría bien, arquitectónicamente hablando, si introduzco estas validaciones dentro del mismo AddClient() ?
Es decir, yo sé que en mi Aplicación MVC tendré que hacer las validaciones correspondientes de mi Model antes de mandarlos al AddClient del repositorio. Pero.. hay ciertas validaciones del Dominio (Como por ejemplo, si la entidad tiene la Propiedad Sexo=Mujer y la propiedad Profesion=Futbolista, mandar Excepcion) que obviamente quiero que se hagan en el dominio, y así tanto mi aplicativo MVC, como un aplicativo Windows, usando directamente la librería del Dominio, ya no tenga que preocuparse de esto. Entonces.. ¿Es correcto meter estas validaciones en el AddClient() o no?
2.- Doy por echo que un Repositorio no tiene por que ser un reflejo de una tabla, ¿Verdad? Es decir, si tengo la tabla Orders y la tabla Details, perfectamente podría tener un Repositorio que fuera OrdersRepository, y que ahí el método AddOrder() recibiera una entidad de tipo Order con una propiedad Details, y que se almacenase todo desde AddOrder(). ¿Eso estaría bien, verdad?
3.- Entiendo que la librería de Dominio, es donde está toda la lógica y el corazón de la aplicación. Entidades que se usarán y demás. Hasta ahí correcto. Entonces... si quiero desarrollar un WebService tipo WCF... ¿Estaría correcto que estas entidades les metiera ahí los DataMember y demás atributos aun que estas entidades luego también se vayan a usar desde un AppWindows, o desde mi propia app MVC?
En fin... espero haberme explicado, y alguien que se le de bien el tema de Arquitectura me pueda orientar un poco.
Gracias por todo, y especialmente al que se haya tomado la molestia de leer todo lo que acabo de poner, que sé que es mucho, jeje.
Un Saludo !!!!!