Model view controller 我们应该将应用层与HTTP分离吗?

Model view controller 我们应该将应用层与HTTP分离吗?,model-view-controller,domain-driven-design,Model View Controller,Domain Driven Design,假设您遵循DDD,并且您有自己的域、应用程序和表示(控制器)层,那么应用程序层是否应该与了解HTTP请求和所有其他相关信息(如cookie、会话等)完全分离 举例来说,假设应用层中的CommentingService需要来自名为guestId的cookie的值。这个值应该作为参数传递给我们的服务,还是我们可以传递整个请求(HttpContext)对象,让我们的服务从中提取它 Commons sense告诉我,如果我想在其他地方重用此应用程序层,我希望它与web分离。服务 是的,您将希望将应用程序

假设您遵循DDD,并且您有自己的域、应用程序和表示(控制器)层,那么应用程序层是否应该与了解HTTP请求和所有其他相关信息(如cookie、会话等)完全分离

举例来说,假设应用层中的
CommentingService
需要来自名为
guestId
的cookie的值。这个值应该作为参数传递给我们的服务,还是我们可以传递整个
请求
HttpContext
)对象,让我们的服务从中提取它

Commons sense告诉我,如果我想在其他地方重用此应用程序层,我希望它与web分离。

服务 是的,您将希望
将应用程序层与任何web问题解耦。
应用层
负责管理聚合、存储库等域对象(编排)

大多数情况下,您将使用提供RESTAPI功能的下一层

如果您这样分解它,您可以将API与CLI、Rest、Soap或您的企业希望您提供的任何东西一起使用

交叉关注点 您将希望在
应用程序层
中实现
横切关注点
,因为您不希望为每一个外部层重新设计轮子。 例如:安全性、缓存、事务管理日志记录。 它不向您提供
业务功能
,因此您不在
域层
中实现它们,但您可以在
应用层
中实现它