HttpHandler是可重用的,一次发送75封邮件时为true或false

本文关键字:false true 一次 HttpHandler | 更新日期: 2023-09-27 17:50:27

我正在努力了解IHttpHandler接口的isReusable属性,但需要您的帮助。

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

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

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

感谢。

HttpHandler是可重用的,一次发送75封邮件时为true或false

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

IsReusable用于处理程序对象的池化。所以如果你的联络人不是持有任何请求的特定状态,那么你可以返回true来请求它池。这通常在处理程序进行非常昂贵的初始化时完成,否则,返回true或false可能无关紧要(因为简单的对象分配在。net中相当便宜)。页面永远不会顺便说一句,汇集。

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

只是长时间发送电子邮件过程中的一点。你将在web服务器上咀嚼线程——这是你可能不想做的事情,以保持你的网站响应。

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

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

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

只是一个想法。