我在ASP.NET中使用MVC模式,使用服务(BLL)和存储库层进行数据管理。在某些情况下,当通过我们的网站发送新请求时,我想自动发送一封电子邮件。应该在体系结构的哪一层发送此电子邮件?是在控制器层还是在服务层?我考虑的是服务层,因为“业务逻辑”应该放在服务层,但我不能百分之百确定这在语义上是否正确。
编辑:当我说“新请求”时,我的意思是用户执行保存到某种类型的数据存储的操作。例如,他们在网站上创建了一个新的“项目”。因此,请求将通过控制器>服务>存储库层。
发布于 2009-04-27 18:39:33
同意。它们属于服务层。控制器应该只是非常瘦的;只需调用适当的业务/数据/任何类,并将数据放在一致的视图中。
发布于 2009-04-27 18:50:07
大多数时候,你可以通过思考如果你的BLL前面有一个web服务层或一个windows应用程序而不是你的web应用程序,你会希望发生什么来澄清这样的问题。您还想让相同的电子邮件发送出去吗?如果答案是肯定的,那么发送电子邮件是你的商业模式的一部分,它应该放在BLL中。如果答案是否定的,那么发送电子邮件实际上是应用程序逻辑,它应该放在你的应用层。
发布于 2009-04-27 18:41:41
我总是设计我的业务层,使它能够工作,而不管数据是通过什么媒介呈现的。因此,例如,如果我要在创建新帐户时发送电子邮件,则无论用户是通过网站还是桌面应用程序创建帐户,我都希望发生这种情况。在这种情况下,电子邮件的发送将发生在业务层中,因为这两种介质都是通用的。
https://stackoverflow.com/questions/794735
复制相似问题