【发布时间】:2011-05-06 17:00:24
【问题描述】:
这是一个 ASP.NET MVC 网站。
按照领域驱动设计,我们有一个服务层。我们的控制器要求应用程序服务类执行各种任务,然后将结果路由到视图。
业务逻辑由服务类执行。
例如,我可能有一个 AccountTasks 类,它负责注册用户、编辑他们的偏好等。现在我还需要能够在用户注册后立即自动订阅时事通讯或更新他们的用户偏好(然后我会更改时事通讯订阅)。
因此,时事通讯订阅功能与帐户注册/修改密切相关。
但是,我觉得最好有一个单独的 NewsletterTasks 服务类来处理订阅/更新/取消订阅操作。
但是控制器不会使用这个类,而是AccountTasks 类。
所以,工作流程是这样的:
-> request made to controller action
-> controller calls AccountTasks
-> AccountTasks creates a user acoount
-> AccountTasks calls NewsletterTasks
-> NewsletterTasks subscribes the user to the newsletter
-> AccountTasks returns the result to the controller
-> controller fetches the appropriate view and sends it to the client
或者,我会让控制器首先调用AccountTasks,然后使用结果调用NewsletterTasks。但是通过这种方法,我觉得控制器对工作流了解太多,而它应该只是传递数据和结果。
任务是应用程序服务类,该项目基于 S#arp 架构,并进行了来自Who Can Help Me 的一些修改 - 其中包括某些事物的命名约定。
可以从AccountTasks 调用NewsletterTasks 吗?你会怎么做?
【问题讨论】:
标签: domain-driven-design service