Oddziel wątki w usłudze internetowej po jej zakończeniu

Jeśli zostało to zadane przed moimi przeprosinami, a to jest .NET 2.0 ASMX Web services, znowu moje przeprosiny = D

Aplikacja .NET, która udostępnia tylko usługi internetowe. Około 10 milionów wiadomości dziennie równoważonych obciążeniem między wieloma serwerami IIS. Każda przychodząca wiadomość to XML, a wiadomość wychodząca to XML. (XMLElement) (mamy solidne serwery działające na sterydach).

Mam umowę SLA, która przetwarza wszystkie wiadomości w X sekund.

Jedna z funkcji, Linking Methods, trwa obecnie 10-20 sekund, jest wymagana dla każdej transakcji, jednak nie jest krytyczna, aby zdarzyła się, zanim usługa internetowa zwróci wyniki. Z tego powodu zasugerowałem, aby rzucić go na inny wątek, ale teraz zdaję sobie sprawę, że moje słowa i chętni deweloperzy, którzy za nimi stoją, nie przeszli do końca.

Poniższy przykład pokazuje po lewej przepływ prądu. Po prawej próba

Właściwie to, czego szukam, to zrobienie usługi internetowej z długim wątkiem (10-20 sekund), który zostanie wykonany nawet po zakończeniu usługi internetowej.

Tak właśnie się dzieje:

        Thread linkThread= new Thread(delegate()
        {
            Linkmembers(GetContext(), ID1, ID2, SomeOtherThing, XMLOrSomething);
        });
        linkThread.Start();

Dzięki temu skróciliśmy czas z 19 sekund do 2,1 sekundy w naszych urządzeniach dev, co jest dość znaczące.

Obawiam się, że przy ilości ruchu, który otrzymujemy, i jeśli dostawca / strona zewnętrzna zdecyduje się nas zdławić, usługi IIS mogą zdecydować o ponownym przetworzeniu / zabiciu tych wątków przed ich przetworzeniem. Zgadzam się, że nasze rozwiązanie może nie być „najlepsze”, jednak nie mamy czasu na zbudowanie systemu kolejki lub innej usługi Windows, aby to obsłużyć.

Czy jest lepszy sposób, aby to zrobić? Wszelkie zastrzeżenia, które należy rozważyć?

Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion