我正在开发一个 WPF 应用程序,它连接到多个 WCF 服务(与 LINQ-TO-EF 一起使用)。
WPF 以 MVVM 方式设计。
对于每个 WCF 服务,我有以下内容:
- 服务层 DLL - 这包括服务接口、服务实现。服务实现只是创建 BL 对象并在它们上调用方法
- 服务 BL 层 DLL - 这包括一个管理器工厂(工厂创建UserManager、TaskManager等)。每个管理器都有一个接口 + 实现(用于单元测试目的和 DI)。例如 - TaskManager有 'GetTasks'、'CheckTaskIsValid' 等。此外,BL 层有一个 'Trasnlator' 类来从Data-Entity转换为DTO。BL 管理器方法将 DTO 返回到服务层。
除上述内容外,所有服务 BL 均引用数据访问层 DLL,其中包括:
- 带有来自 MS SQL Server 的表的 EDMX 文件
- 自动生成的 DbContext + POCO 实体
- 查询提供程序(由 BL 管理器类使用)。每个查询提供程序都有一个用于单元测试和 DI 目的的接口+实现。
- DbContext 工厂 - 接口+实现,用于单元测试和 DI 目的。
这些服务采用 CQS 设计(Command-Query-Seperation,不与 CQRS 混合),这意味着有一个服务只负责查询,一个服务负责发送命令。
我通过托管所有服务的WCF 主机项目使用 DI(使用 AutoFac) (我实现了 IInstanceProvider,以便可以将依赖项注入服务)。
我没有实现自己的存储库或工作单元,因为 DbContext 已经是UoW 和存储库。
这个设计有缺陷吗?
我看过很多关于 DDD 的帖子,我知道我的设计不是DDD。
我的问题是——我的设计够好吗?我需要将所有代码重构为 DDD 吗?(使用聚合和根聚合等)。
我已尝试提供尽可能多的有关设计的详细信息,因此我希望我不会得到诸如“您的问题太笼统”或“需要一些示例”之类的答案……非常感谢您提供任何有用的信息!