HttpHandler是可重用的,无论是真还是假,一次发送~75封电子邮件

时间:2011-04-19 03:59:11

标签: c# httphandler ihttphandler

我正试图了解isReusable界面的IHttpHandler属性,但需要你的帮助。

每次将文档保存在我正在使用的CMS中时,我都会发起一个事件,我希望该事件能够向HttpHandler发起一个动作,该动作将向订阅该文档的用户发送电子邮件。将大致 75封电子邮件,并使用我的电子邮件递送服务(邮戳)每个电子邮件 1-5秒,所以总共大约2- <5分钟

处理程序将只接收1个参数(文档ID),然后确定将电子邮件发送给谁,当然还要发送给他们。

在这种情况下,将isReusable属性设置为true是明智的吗?为什么?

非常感谢。

2 个答案:

答案 0 :(得分:3)

如果您只是想使用。实现自己的HttpHandler  IHttpHandler接口你必须实现一个函数和一个属性  的界面。 ProcessRequest()函数用于实现  您自己的自定义请求处理程序,它根据返回响应  你的代码。

IsReusable用于汇集处理程序对象。所以,如果您的处理程序不是  持有任何请求特定状态然后你可以返回true来询问它  汇集。这通常在您的处理程序执行非常昂贵的初始化时完成,  否则,如果你返回真假,它可能无关紧要(因为  简单的对象分配在.NET中相当便宜。页面永远不会  汇集,BTW。

答案 1 :(得分:1)

如果处理程序是线程安全的,则一个简单的测试是IsReusable返回true。因此亚当指出处理程序应该是无状态的。

关于长期发送电子邮件过程的重点。你将在网络服务器上咀嚼线程 - 这是你可能不想做的事情,以保持你的网站的响应。

如果可能的话,您可以考虑使用服务总线,并通过这样做将工作交给单独的流程。 e.g:

bus.Send(new SendEMailCommand { id = theId });

这将对您的电子邮件请求进行排队,允许您控制允许此处理的并发线程数 - 在自己的AppDomain中在IIS外部运行的线程:)

只是一个想法。