Отдельные темы в веб-сервисе после его завершения
Если это было задано до моих извинений, а это веб-сервисы .NET 2.0 ASMX, еще раз мои извинения = D
Приложение .NET, которое предоставляет только веб-сервисы. Примерно 10 миллионов сообщений в день с балансировкой нагрузки между несколькими IIS-серверами. Каждое входящее сообщение является XML, а исходящее сообщение - XML. (XMLElement) (у нас есть мощные серверы, которые работают на стероидах).
У меня есть SLA, в котором все сообщения обрабатываются в течение X секунд.
Одна функция, Linking Methods, в этом процессе теперь занимает 10-20 секунд, она требуется для каждой транзакции, однако не критично, что это происходит до того, как веб-служба возвращает результаты. Из-за этого я предложил добавить его в другой поток, но теперь понимаю, что мои слова и разработчики, стоящие за ними, возможно, не до конца продумали это.
В приведенном ниже примере слева показан текущий поток. Справа то, что пытаются
По сути, мне нужно, чтобы веб-служба порождала длительный (10-20 секунд) поток, который будет выполняться даже после завершения веб-службы.
Вот что, по сути, происходит:
Thread linkThread= new Thread(delegate()
{
Linkmembers(GetContext(), ID1, ID2, SomeOtherThing, XMLOrSomething);
});
linkThread.Start();
Используя это, мы сократили время с 19 секунд до 2,1 секунд на наших устройствах разработки, что весьма существенно.
Я обеспокоен тем, что с количеством трафика, который мы получаем, и если поставщик / сторонняя сторона решит нас ограничить, IIS может решить перезапустить / уничтожить эти потоки, прежде чем они закончат обработку. Я согласен, что наше решение может быть не самым лучшим, однако у нас нет времени для того, чтобы встроить систему очередей или другую службу Windows для этого.
Есть лучший способ сделать это? Любые предостережения, которые следует учитывать?
Благодарю.