2013-04-11 159 views
3

我想围绕领域驱动的服务层的设计理念,包括应用程序服务和域服务。几乎所有我遇到的例子都与使用数据库的CRUD应用程序有关。我无法理解这些概念如何映射到图形应用程序,例如我为这个问题选择的示例应用程序,即在.NET/C#中开发的Microsoft Paint的克隆。基于图形的应用程序的域服务和应用程序服务

我看了basic concept of a service layer in DDDexpanded 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架构是不适合的绘图应用程序。任何建议的替代?

+4

imho绘图应用程序不是一个非常适合DDD。它会使用别的东西。 – jgauffin 2013-04-11 14:47:02

+2

我同意。绘图是一个很好理解和模拟的领域,没有理由尝试去适应DDD战术工具。这样做会产生摩擦;主要原因是大多数DDD工具都是针对客户端 - 服务器体系结构,复杂的持久性方法,这些都与绘图程序无关。 – eulerfx 2013-04-11 15:13:40

+1

大多数时候,如果你不需要域专家,你不需要DDD。 – 2013-04-11 17:20:32

回答

0

如果一个绘图应用程序不适合DDD。它会使用别的东西