Если вы делаете DDD, мне кажется странным, что у вас нет модели домена. У вас есть так называемый движок, который имеет множество проблем. Он реализует вашу бизнес-логику и знает о размещении вашей бизнес-логики в качестве службы Windows.
Я бы предложил следующую структуру проекта:
MyProject.Model : Определяет абстрактные репозитории, сущности, объекты значений, сервисы (термин DDD) и другую логику домена. Нет ссылок на другие проекты
MyProject.DataAccess : реализация репозиториев с использованием linq2sql. Имеет ссылку на MyProject.Model
MyProject.ServiceModel : Содержит контракты на обслуживание и другие материалы, связанные с представлением модели вашего домена в качестве сервисов WCF. этот проект также будет содержать специфичные для службы представления тех объектов вашего домена, которые служба обслуживает и принимает. Причиной этого может быть то, что вам, вероятно, не следует украшать свои доменные классы атрибутами, необходимыми в контрактах данных WCF. Этот проект ссылается на MyProject.Model.
MyProject.Service : Содержит app.config для вашей службы и выполняет внедрение зависимостей через пользовательские ServiceHost и ServiceHostFactory. Он ссылается на MyProject.Model MyProject.ServiceModel и MyProject.DataAccess + ваш любимый каркас DI (например, Виндзорский замок)
MyProject.PresentationModel : Определяет различные модели представлений и команды для использования в вашем пользовательском интерфейсе. Он содержит ссылки на сервисы, предоставляемые MyProject.Service
MyProject.WinUI : Ваше приложение WPF. Ссылки MyProject.PresentationModel.
Обратите внимание, что большая часть того, что вы, вероятно, читали в книге Эрика Эванса о DDD, касается только содержимого MyProject.Model. Другие проекты составляют дополнительные слои, которые напрямую не рассматриваются в MR. Книга Эванса.
Помните, что, имея четкое разделение задач и используя внедрение зависимостей, вы получите код, который легко тестируется. С предложенной выше структурой вы сможете протестировать практически все, поскольку ваш пользовательский интерфейс будет содержать только XAML.
В любом случае, это только мое мнение. Пожалуйста, не стесняйтесь спрашивать, нуждается ли это в разъяснении.
Удачи в проекте.
/ Klaus