【问题标题】:Should we decouple Application Layer from HTTP?我们应该将应用层与 HTTP 解耦吗?
【发布时间】:2016-01-23 09:57:19
【问题描述】:
假设您遵循 DDD 并且您拥有域、应用程序和表示(控制器)层,那么应用程序层是否应该完全脱离对 HTTP 请求和所有其他相关信息(如 cookie、会话等)的了解.
举例来说,假设我们在应用层中的CommentingService 需要一个来自名为guestId 的cookie 的值。是否应该将此值作为参数传递给我们的服务,或者我们可以传递整个 Request (HttpContext) 对象并让我们的服务从那里提取它。
常识告诉我,如果我想在其他地方重用这个应用层,我希望它与网络分离。
【问题讨论】:
标签:
model-view-controller
domain-driven-design
【解决方案1】:
服务
是的,您需要 decouple 处理任何 Web 问题。
Application layer 负责管理您的域对象,例如聚合、存储库等(编排)。
大多数情况下,您将使用提供 Rest Api 功能的下一层。
如果您像这样分解它,您可以将您的 API 与 CLI、Rest、Soap 或您的业务希望您提供的任何东西一起使用。
跨领域关注
您将希望在您的application layer 中实现cross-cutting concerns,因为您不想为每个外部层重新发明轮子。
例如:安全、缓存、事务管理日志记录。
它没有为您提供business capabilities,因此您无需在domain layer 中实现它们,但您可以在application layer 中实现它。