我的要求是从外部服务器发送Web应用程序中的电子邮件,平均需要大约4到5秒来处理和发送确认电子邮件。我不希望用户等待这个,所以我用Process()触发一个控制台应用程序.StartInfo.Start()它在后台执行。问题是我可以依赖多少,因为在正常的日子里,应用程序每天发送大约1万封电子邮件,在高流量的日子里,它可能会超过8万封。应用程序或服务器可能遇到哪些问题?有没有更好的解决方案?
答案 0 :(得分:1)
您可以使用以下方法来实现此目的:
创建.aspx
页面并在此处为您编写业务代码(例如电子邮件
发送)
如果需要,请使用Javascript以及querystring中的参数调用此页面。您可以创建一个图像元素并将其源设置为该页面。
var img = new Image();
img.scr = "perform-operation.aspx?[parametervalues]";
谢谢
答案 1 :(得分:0)
控制台应用程序有缺点,如果你计划分别为每个电子邮件调用控制台应用程序,任何新进程都需要很长时间来加载和清理,这对cpu来说是太多的开销。相反,最好的选择是在IIS中托管另一个网站,这个新网站将拥有自己的应用程序池,它将创建和托管进程。如果没有提供请求,IIS将关闭该进程。您可以通过为每个应用程序运行更多工作进程来设置Web Farm。
其他替代方法是始终运行控制台或Windows服务,让它在内存中,但有一个Web服务主机监听电子邮件请求,如果从您的Web应用程序收到请求,此后台服务将发送电子邮件新线程并返回等待状态。基本上它是一个自托管的WCF服务。这与在IIS上托管另一个网站完全相同。
我更喜欢基于IIS的托管,因为它易于设置,不需要任何额外的权限,并且将来,为了横向扩展,您可以轻松地将此邮件服务移动到其他服务器。