首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发送电子邮件属于应用程序的表示层还是业务层?

发送电子邮件属于应用程序的表示层还是业务层?
EN

Stack Overflow用户
提问于 2011-04-21 05:31:00
回答 5查看 2.9K关注 0票数 7

我正在尝试找出在我的Asp.net MVC应用程序中放置发送电子邮件的代码的最佳区域。现在,我的应用程序设置在2个VS项目中,将业务层与表示层分开。我正在尝试设置这样一种情况:当用户重置其密码时,在业务逻辑更改密码后,服务器将使用新生成的密码向用户发送一封电子邮件。

我应该调用代码从业务层(在业务层重置密码之后)还是在表示层(在业务层返回成功结果之后)发送电子邮件(包括有关电子邮件外观的数据)?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-21 09:20:25

我部分同意BobTodd的观点,因为他建议你把它抽象出来。我(部分地)不同意的唯一部分是关于它在业务层的应用。

发送电子邮件依赖于某种物理实现-并且您不希望将BL绑定到与某些电子邮件提供商相关的外部依赖项。

在一个小项目中,我想你可以将它包含在BL中,以使事情变得简单,但我倾向于将它完全抽象出来,在这种情况下,我会像对待数据访问一样对待它。

在我看来,你可以把它放在两个地方:

  • 作为共享服务,您可能希望从任何地方调用它-因为它将被抽象出来,所以您可以这样做。
  • 作为/通过“外部服务适配器”,它也是抽象出来的,但只能从BL访问-它可能反过来公开任何东西(如UI)可以调用的方法(如果您真的想要的话)。

注意:自我推广提醒!-摘自我自己的一篇文章:http://morphological.wordpress.com/2011/08/29/5-layer-architecture/

票数 4
EN

Stack Overflow用户

发布于 2011-04-21 06:00:37

发送电子邮件应该是业务层的一部分。

几周前我遇到了同样的问题,我正在使用asp.net MVC3构建一个web应用程序,它由三个项目组成:存储库(DAL),服务(BLL),演示(Web)

我的应用程序逻辑是在服务层实现的,所以我正在寻找在服务层实现一个完全独立的模块的最佳方法,该模块用于将HTML email发送给用户,这样我的服务层功能就可以直接使用它,而不必将它带到表示层。

经过一番搜索,我发现了一个由Kazi Manzur完成的优雅的解决方案,他创建了一个电子邮件子系统,利用Razor视图在web项目之外发送HTML/文本电子邮件。

Use Razor for Email Template outside ASP.NET MVC

从那时起,我一直在使用他的子系统,它一直在做着很好的工作。

票数 7
EN

Stack Overflow用户

发布于 2011-04-21 05:34:17

发送电子邮件不属于表示层,但是可以使用“专用表示层”来确定电子邮件的外观(设计、主题等)。

每个“层”实际上可以由几个独立的程序集组成。

例如,你可以有多个视图。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5736885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档