我想围绕领域驱动的服务层的设计理念,包括应用程序服务和域服务。几乎所有我遇到的例子都与使用数据库的CRUD应用程序有关。我无法理解这些概念如何映射到图形应用程序,例如我为这个问题选择的示例应用程序,即在.NET/C#中开发的Microsoft Paint的克隆。基于图形的应用程序的域服务和应用程序服务
我看了basic concept of a service layer in DDD和expanded explanation。我所选择的以下应用层:
基础设施(交叉)
- 测井
数据(文件系统)
- 的BitmapImage,PngImage等
域名
- 帆布,图像,选择,形状,刷等
应用
演示(本地客户端WPF)
- 浏览
- 的ViewModels
我试图设计的一个用例是用户在画布上绘制矩形。 From what I've read,由于用例需要几个域对象的合作,所以域服务DrawingService是合理的。
另一个用例是用户加载要显示的文件。再次,from what I've read,因为这个用例是一个命令和一个工作流,所以应用服务FileLoadingService是有意义的。
As Martin Fowler describes,我相信Microsoft Paint足够复杂以保证服务子系统,这里基于主题行为。然而,随着应用程序的增长,服务层可能被重构成属于域模型的分区,例如, CanvasService,SelectionService等等,那么现在需要另一层抽象层perhaps an application facade,现在多个服务必须合作?
更新1:
的初步意见建议DDD架构是不适合的绘图应用程序。任何建议的替代?
imho绘图应用程序不是一个非常适合DDD。它会使用别的东西。 – jgauffin 2013-04-11 14:47:02
我同意。绘图是一个很好理解和模拟的领域,没有理由尝试去适应DDD战术工具。这样做会产生摩擦;主要原因是大多数DDD工具都是针对客户端 - 服务器体系结构,复杂的持久性方法,这些都与绘图程序无关。 – eulerfx 2013-04-11 15:13:40
大多数时候,如果你不需要域专家,你不需要DDD。 – 2013-04-11 17:20:32