Estoy tratando de configurar la estructura de mi aplicación en VS y quiero "probar" y probarlo en el futuro a un nivel razonable. Esta aplicación será una reescritura de WPF de una vieja aplicación Winform que no había seguido ninguna convención. Sin capas, niveles, siglas, etc.
Es una aplicación empresarial bastante grande. Planeaba usar Linq To SQL como mis bases de datos son y probablemente siempre serán MS SQL. También tengo un conjunto de habilidades existente con él.
Quiero seguir MVVM y DDD lo mejor que pueda, pero me confundo en la estructura de mi aplicación al combinarlos. Déjame intentar e ilustrar con algunos ejemplos.
Cuando sigo MVVM, la estructura de mi carpeta puede verse así:
Views
Models
ViewModels
Helpers
pero ¿cómo encaja eso en un enfoque simplificado en capas DDD donde mi estructura de proyecto podría parecerse a esto:
MyApp.UI
MyApp.Domain
MyApp.Data
¿Pongo el Models
en la capa de dominio o tengo 3 versiones de say Person
? Esto lleva a otra pregunta de dónde colocaría mi repositorio y las asignaciones del objeto DB al objeto de dominio. Supongo que Data ...
Views
Me gustaría ir en la interfaz de usuario pero ViewModels
también?
Finalmente, ¿dónde estaría incrustando mi Business Logic?
Encontré lo siguiente en CodePlex, DDD Example , y ha sido de alguna ayuda, pero parece ser para una aplicación web, aunque eso puede no importar y mi ignorancia está brillando.
No me malinterpretes, sé que puedo tener tantas carpetas y llamarlas como quiera. Estoy tratando de averiguar dónde colocar las cosas para que esto sea escalable, no cómo se llaman necesariamente esos lugares.
El corazón de mi pregunta podría mostrarse así.
Tengo un tblPerson
objeto generado por *.dbml
. Esto es obvio y pertenecería a mi capa "Datos".
Ahora tendría Modelo, DTO, Modelo de dominio, o como se llame en una Capa separada (¿proyecto?) Llamada Person
. Yo necesitaría una Mapper
para Person
a tblPerson
que no estoy seguro de dónde poner.
Entonces, tendré un ViewModel para, por ejemplo, EditPerson
que tendría sus propias propiedades de las que extrae, Person
pero posiblemente también más.
Finalmente tendría una vista que estaba vinculada a ese modelo de vista ...
Para que quede claro que el párrafo está LLENO con mis suposiciones y conjeturas, y espero que alguien me ayude a aclarar el aire u ofrecer ideas para que de 6 meses a un año a partir de ahora no me patee más de lo necesario.