我正在使用asp.net C#制作一个网页。
我希望人们登录并输入报价请求。然后将报价请求通过电子邮件发送给所有相关人员(可能是100多人)。
显然,我不能让用户坐下来等待100多人通过电子邮件发送,因为网页会冻结。
我考虑过在服务器上实现后端程序。检查文本文件或其他内容的perhapes以及何时存在该文本文件。在数据库中搜索任何未通过电子邮件发送的报价。并向相关人员发送电子邮件。然后将记录标记为通过电子邮件发送。
但必须有更好的方法吗?有没有一个que系统或设计用来做这样的事情?
答案 0 :(得分:0)
您可以使用
ThreadPool.QueueUserWorkItem
在循环中排队发送电子邮件。有关信息,请参阅http://msdn.microsoft.com/en-us/library/system.threading.threadpool.queueuserworkitem.aspx。
答案 1 :(得分:0)
我会使用类似Microsoft消息队列的东西,然后有一个定期扫描队列的任务。
我会让网站推送到队列,因为队列设置为持久性,所以如果盒子崩溃,重启等等,没有任何东西丢失。
答案 2 :(得分:0)
简单。只需发送它。如果冻结超过0.1秒左右,则需要更好的硬件和配置。
Noo网络invovlved,只有100个文件生成左右。甚至10个文件,每个包含10个密件抄送收件人。结束。
生成10个小文件应该很胖。如果你的光盘超载得到一个小SSD;)它们几乎没有成本。
其余的都是大量的编程工作,并引入更多内容来监视您的系统。
答案 3 :(得分:0)
你可以将两者结合起来,虽然这不是我使用的方法。
但是使用您的示例,您可以为后端(服务器)应用程序创建静态侦听器接口,而不是定期检查文件并检查,您可以ping后端操作以启动操作。
答案 4 :(得分:0)
在“收件人”或“抄送”字段中生成包含100个人的1封电子邮件不会导致页面冻结。你真的看到过这种行为吗?如果是这样,请检查您的SMTP配置,因为听起来不错。
但是,我看到的解决方案很好用,就是拥有一个SQL数据库来保存所有待发送的消息,然后让SQL Server每十分钟运行一个作业来运行该挂起的表并执行电子邮件(而不是直接从.NET应用程序发送电子邮件)。