我使用ASP.NET中的MVC模式使用服务(BLL)和存储库层进行数据管理.在某些情况下,我想在通过我们的网站发送新请求时发送自动电子邮件.在这个架构的哪一层应该发送这封电子邮件?在控制器层还是服务层?我在考虑服务层,因为那是"业务逻辑"应该去的地方,但是如果这在语义上是正确的,我不能100%确定.
编辑:当我说"新请求"时,我的意思是用户采取保存到某种数据存储区的操作.作为一个例子,他们在网站上创建了一个新的"项目".因此请求将通过controller> service> repository层.
我总是设计我的业务层,以便无论数据呈现的媒介如何,它都能够工作.因此,例如,如果我在创建新帐户时发送电子邮件,我希望无论用户是通过网站还是桌面应用程序创建帐户,都会发生这种情况.在这种情况下,电子邮件的发送将发生在业务层中,因为它对两种媒体都是通用的.
大多数情况下,如果您在BLL而不是Web应用程序前面有Web服务层或Windows应用程序,那么可以通过思考您希望发生什么来澄清这类问题.你还想要同样的电子邮件出去吗?如果答案是肯定的,那么发送电子邮件是您商业模式的一部分,它应该在BLL中.如果答案是否定的,那么发送电子邮件确实是应用程序逻辑,它应该放在你的应用层.