我试图找出放置代码以在我的
Asp.net MVC应用程序中发送电子邮件的最佳区域.现在我的应用程序设置在2个VS项目中,将业务层与表示层分开.我试图设置一种情况,当用户重置其密码时,在业务逻辑更改密码后,服务器将使用新生成的密码向用户发送电子邮件.
我是否应该调用代码从业务层(业务层重置密码之后)或在表示层(业务层返回成功结果之后)发送电子邮件(包括电子邮件的外观数据)?
解决方法
我部分同意BobTodd,因为他建议你把它抽象出来.我(部分)不同意的唯一部分是关于它进入业务层.
发送电子邮件取决于某种物理实现 – 并且您不希望将BL绑定到与某些电子邮件提供商相关的外部依赖项.
在一个小项目中,你可以将它包含在BL中,我想,为了简单起见,但我赞成完全抽象出来,在这种情况下,我会像处理数据访问一样对待它.
在我对世界的看法中,你可以把它放在两个地方:
>作为您可能希望从任何地方呼叫的共享服务 – 并且因为它将被抽象出来,您将能够.
>作为/通过“外部服务适配器”,它也被抽象出来但只能从BL访问 – 这可能反过来暴露任何东西(如UI)可以调用的方法(如果你真的想要).
注意:自我推销提醒! – 取自我自己的一篇文章:http://morphological.wordpress.com/2011/08/29/5-layer-architecture/