Si está haciendo DDD me parece extraño que no tenga un modelo de dominio. Usted tiene un llamado motor, que tiene múltiples preocupaciones. Implementa su lógica de negocios y sabe cómo alojar su lógica de negocios como un servicio de Windows.
propondría una estructura de proyecto de la siguiente manera:
MyProject.Model: Define repositorios abstractos, entidades, objetos de valor, servicios (plazo DDD) y otra lógica de dominio. No tiene referencias a otros proyectos
MyProject.DataAccess: implementación de repositorios utilizando linq2sql. Tiene una referencia a MyProject.Model
MyProject.ServiceModel: Contiene contratos de servicio y otras cosas relacionadas que exponen su modelo de dominio como servicios WCF. este proyecto también contendría representaciones específicas del servicio de aquellos objetos de su dominio que el servicio sirve y acepta. La razón de esto sería que probablemente no debería decorar sus clases de dominio con los atributos necesarios en los contratos de datos de WCF. Este proyecto hace referencia a MyProject.Model.
MyProject.Service: Contiene app.config para su servicio y realiza la inyección de dependencia, a través de ServiceHost y ServiceHostFactory personalizados. Hace referencia a MyProject.Model MyProject.ServiceModel y MyProject.DataAccess + su marco DI preferido (Windsor Castle, por ejemplo)
MyProject.PresentationModel: define varios modelos de vista y comandos para usar en su UI. Tiene referencias de servicio a los servicios expuestos por MyProject.Service
MyProject.WinUI: Su aplicación WPF. Referencias MyProject.PresentationModel.
Tenga en cuenta que la mayoría de lo que probablemente haya leído en el libro de Eric Evans sobre DDD solo se relaciona con los contenidos de MyProject.Model. Los otros proyectos están formando capas adicionales que no se abordan directamente en mr. El libro de Evans.
Recuerde que al tener una clara separación de preocupaciones y al usar la inyección de dependencia, obtendrá un código que se puede probar fácilmente. Con la estructura que he propuesto anteriormente, debería poder probar casi todo, ya que su UI contendrá solo XAML.
De todos modos, esto es solo mi opinión. Por favor, siéntase libre de preguntar si algo de esto necesita aclaración.
Buena suerte con el proyecto.
/Klaus
+1 bien escrito. –