Gui*_*rez 3 service domain-driven-design layered
我正在尝试使用分层模式和DDD.但我找不到在哪里加载用于在单个模型实体的编辑视图中填充组合框和列表框的目录.我应该在应用程序服务层中创建单个方法,以便在viewmodel包装器中获取单个视图所需的所有列表吗?或者我应该为每个我需要的列表创建一个方法?或者它根本不属于服务层?
从表示层访问您的数据有两种主要策略,它们都有自己的优点和缺点.总结一下:
应用程序服务层用作下面层的表示层的API.这意味着应用程序服务是边界对象.您仍然可以通过应用程序服务公开实体和值对象,但服务和存储库仍然完全隐藏在表示层中.
优点:
缺点:
我看到的一个子策略是在表示层中使用了应用程序服务和域服务,例如,请参阅本文.虽然我同意作者的立场,即应用程序服务和域服务根本不同,但我不同意这两者应该可以在表示层中使用.当应用程序服务充当边界时,最好地提供具有应用程序层的目的.这确实增加了布线代码的数量,但可以在以后更容易地添加应用程序逻辑.因此,我认为,如果你选择这种战术,你就会一路走下去.
您只需在表示层中调用存储库和/或服务即可.
优点:
缺点:
另一个分策略我在野外看到的是域服务充当表示层的边界对象.因此,表示层无法访问存储库.这我称之为反模式,因为应用程序逻辑,存储库逻辑和域逻辑显然是不同类型的逻辑(对某些人来说这不是很清楚).如果域服务需要满足表示层的所有需求,域服务将成为存储库的委托(坏),应用程序逻辑将最终出现在表示层(可能是可接受的)或/和应用程序逻辑将最终在域服务(坏).DDD中的域服务从不作为边界对象,而只是作为与不是实体或值对象的自然部分的域概念相关的操作的容器.再次,
我希望我已经减少了这个相当复杂和多方面的讨论,以便您可以选择哪种策略最适合您的使用.软件行业对这些事情没有明确的共识.我通常会选择第一种软件,这种软件可以保证很长时间,或者有多次演示,第二种是软件,未来仍然有些不确定并且只有一个演示文稿.
| 归档时间: |
|
| 查看次数: |
2084 次 |
| 最近记录: |