ASMX服务加工繁重

时间:2014-01-23 19:41:15

标签: c# ajax smtp asmx

我有一个网站调用在服务器上运行的ASMX服务(相对较旧)。我正在努力解决有关ajax请求的问题,如果没有超时,则需要大约10-20秒才能触发成功方法。

用户基本上填写一组信息并自定义和图像。完成后,用户单击将图像base64发送到服务器的按钮和带有它的巨大json对象。 (这是用户选择的信息)。无论如何,该服务负责执行以下操作:

  • 从base64字符串
  • 创建图像
  • 解析Json对象并对其进行组织,然后创建一个包含该图像的4页pdf文档。
  • 创建所有请求信息的Excel表格。
  • 发送电子邮件给附有pdf的用户
  • 向公司发送包含所有其他附件的电子邮件(pdf,excel和图片)

这是一个巨大的负载,特别是当使用SMTP对象发送一个而不是两封电子邮件时。

基本上,我们可以异步执行此操作而不会让用户等待“成功!!”消息?

谢谢你们。

1 个答案:

答案 0 :(得分:1)

您可以在服务器上实现标准队列任务,存储调用参数并让后台任务从队列中执行作业。

当一份工作和你描述的一样沉重时,这可能是一个非常好的主意。

通过将成功的消息发布到客户端邮件地址,或者写入用户特定的Web应用程序日志(可从其他网页读取)来完成任务。

您应该牢记IIS回收。 如果任务需要在回收开始之前完成,那么繁重的服务器任务可能会延迟回收。有关详细信息,请参阅http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/

它需要更多工作,但Web服务器可以调用作为Windows服务运行的自托管WCF服务,该服务又执行排队作业。