sty
26
2012

ASP.NET : wykonywanie zadania co pewien czas

Często zdarza się, że dostawca udostępniający nam hosting nie daje możliwości zainstalowania na swojej maszynie naszej własnej usługi Windows. A taka usługa przydałaby się nam, np. do okresowego wykonywania jakiejś czynności (przykładowo aktualizowanie statusu jakichś produktów co 5 min). Możemy się oczywiście podpiąć do "normalnego" requestu i wykonać nasze zadanie ale ma to pewne wady. Po pierwsze wymaga dużego ruchu na serwerze (o co np. w godzinach nocnych może być ciężko). Po drugie, rozkład żądań jest niedeterministyczny i trudno tu oczekiwać wykonania zadania o ściśle określonej porze. I po trzecie, wykonanie jakiegoś "ciężkiego" zadania znacznie spowolni odpowiedź na request który miał nieszczęście zostać nim obdarowany. Pozostają do rozważenia inne sposoby, nad którymi się ostatnio zastanawiałem. Należy tu zaznaczyć, że wszystkie one stoją w pewnej sprzeczności z samą zasadą działania serwera WWW. Jego zadaniem jest w końcu odebranie requesta od klienta, przetworzenia go i wygenerowania odpowiedzi a nie do ciągłego wykonywania jakichś zadań w tle. Na pewno wydajność takiego rozwiązania będzie dużo niższa niż w przypadku dedykowanego serwera aplikacyjnego z zainstalowaną usługą. No ale jeśli takiego serwera nie mamy to pozostaje kilka sposobów na obejście problemu. [Więcej]