1
6
你所说的域服务就是我所说的应用服务。对三种不同类型的服务(应用程序、域和基础设施)的这种混淆导致了“任务”一词在Who Can Help Me中的使用?(而不是应用程序服务)。 广义地说,我将域服务视为域内不属于任何单个实体的操作/行为—这与Evans DDD书中描述的非常相似。应用程序服务更像是域上的编排层/门面,它允许应用程序与域进行交互,而不需要知道它如何工作的全部细节。 因此,我认为您需要一个应用程序服务层来消除控制器中的膨胀。这是WCHM中展示的方法,也是我现在在应用程序中遵循的方法。 关于他们应该住在哪里-我想说你应该在他们自己的项目中有他们。如果您对它是纯粹的,那么契约也应该存在于它们自己的程序集中,这意味着如果您愿意,您可以从您的控制器中删除域的所有知识。然而,WCHM方法将契约放在域项目中,并允许控制器了解实体。有些人对此表示不满,但这基本上只是一种妥协。 乔恩 |
2
3
就我个人而言,我不喜欢S#arp架构(至少在他们的演示项目中)如何让控制器直接与存储库通信。我的$0.02是域服务应该是控制器和存储库之间的接口。存储库的存在严格是为了抽象出数据库(例如,这样您就可以在测试期间用LINQ to对象替换它)。域服务实现您的业务逻辑。您希望能够在不连接到数据库或不必模拟整个会话的情况下测试它们。 我认为正确的一个例子是在马克·西曼的书中开发的MVC项目, |
3
3
我们构建了一个基于夏普架构的真实世界的生态游戏平台,并创建了一个演示项目来展示我们所构建的架构。这增加了ViewModels、Mappers和一个有助于分离关注点的任务层。这将形成夏普架构v2.0的核心架构 |
Kazi · 如何让两个用户同时登录Laravel应用程序 6 年前 |
Mahdi GB · 如何在MVC中通过控制器将模型数据发送到视图# 6 年前 |
Denis Liger · 一个API两个通道 6 年前 |
codematix · 利用gRPC构建解决方案 6 年前 |
Filip T · 流量与全局变量(服务中) 6 年前 |
user3429660 · 如何使用RabbitMQ实现可靠性? 6 年前 |