后,如果这一直是我的歉意问过了,这是.NET 2.0 ASMX Web服务,再次我向你道歉= d单独的线程它完成
.NET应用程序,只有公开的Web服务。每天大约有1000万条消息在多个IIS服务器之间进行负载平衡。每个传入消息都是XML,而传出消息是XML。 (XMLElement)(我们有强大的服务器在类固醇上运行)。
我有一个SLA,所有消息都在X Seconds下处理。
过程中的一个函数Linking Methods现在需要10-20秒,这对每个事务都是必需的,但在Web服务返回结果之前并不重要。正因为如此,我提出了一个建议,将其放在另一个线程上,但现在意识到我的话和他们背后的渴望的开发人员可能没有完全想到这一点。
以下示例在左侧显示当前流程。在右边什么正在尝试
我正在寻找的是有效的Web服务产生长时间运行(10-20秒)的线程,甚至可以在Web服务完成后执行。
这是什么,有效,是怎么回事:
Thread linkThread= new Thread(delegate()
{
Linkmembers(GetContext(), ID1, ID2, SomeOtherThing, XMLOrSomething);
});
linkThread.Start();
使用这个我们减少时间从19秒至2.1秒对我们的开发盒,这是相当可观的。
我担心随着流量的增加,如果供应商/外部团体决定扼杀我们,IIS可能会决定在完成处理之前回收/终止这些线程。我同意我们的解决方案可能不是“最好的”,但我们没有时间在队列系统或其他Windows服务中构建来处理此问题。
有没有更好的方法来做到这一点?任何应该考虑的警告?
谢谢。
你只需要计算响应时间? – pylover
与响应时间无关。我需要在Web服务中调用一个长时间运行(10-20秒)的进程,并且我不希望在Web服务完成后停止该进程 –
我认为你只需要做唯一的解决方案。 – pylover