这是一个理论问题。
想象一个aspnet网站。通过单击按钮站点发送mail.now:以上解决方案都没有等待邮件操作完成。所以它们没问题。
我的问题是为什么我应该使用服务解决方案而不是其他解决方案。有优势吗?
第4个解决方案增加额外的tcpip流量来使用服务效率不高吗?
如果是这样,使用同一网站下的服务(第三个解决方案)也会产生额外的流量。那是对的吗?
我需要了解为什么人们在同一网站下使用服务?除了为ajax调用提供一些东西之外还有什么理由吗?
任何信息都会很棒。我真的需要得到意见。 最好
答案 0 :(得分:2)
最合适的架构取决于几个因素:
需要发送的电子邮件量
需要重复使用电子邮件发送功能,而不是
代码的实施,部署和维护的简单性
在同一个或另一个Web应用程序中分离服务中的电子邮件发送将使其可供其他应用程序和客户端代码使用。它还为调用服务的代码增加了一些复杂性,因为它需要处理服务不可用时的情况并处理拨打电话时可能发生的错误。
如果发送的电子邮件数量非常大,则使用单独的Web应用程序服务非常有用,因为它允许在需要时将工作卸载到一个或多个服务器。鉴于给出的用例(用户点击按钮),这似乎不太可能,除非该网站将有非常大的流量。创建单独的Web应用程序最初会随着时间的推移添加重要的开发,部署和维护工作。
除非要发送的电子邮件数量非常大(每天数百万),或者需要在其他系统中重复使用电子邮件功能,否则在同一个Web应用程序中创建电子邮件发送功能(前两个选项列在问题)几乎可以肯定是最好的方式。它将导致最少量的初始工作,易于部署,并且(可能最重要的)将是最容易维护的。
在实施电子邮件发送功能时要特别注意的一个重要问题是健壮性问题。任何可能的架构都可以实现稳健性,并且与问题强调的问题有些不同。但是,如果(1)接收SMTP拒绝接收消息(例如,邮箱已满;不存在的帐户;拒绝为垃圾邮件)和(2)在生成后生成NDR,则必须考虑所需的正确操作。消息被发送(例如,拒绝为垃圾邮件)。根据发送的电子邮件的类型,可以忽略这些错误或者可能需要一些纠正措施(例如,重试发送,在发送电子邮件时提醒用户,......)