Planuję utworzyć narzędzie, które będzie przeszukiwać bazę danych i przechowywać pewne informacje (w innej tabeli w bazie danych). Jest to wielowątkowe narzędzie, które wymaga działania co 5 lub 10 minut / później może być trzy razy dziennie.
Widzę dwie opcje, aby to osiągnąć w programowaniu w C # / DotNet.
- tworzenie usługi systemu Windows z dostępem do timera.
- program konsoli i zaplanuj go za pomocą harmonogramu zadań systemu Windows.
Który wolisz i dlaczego?
Odpowiedzi:
Komentarze mojego kolegi z wczoraj dotyczące tego samego tematu
Artykuł Jona Gallowaya z 2005 r. „// TODONT: Użyj usługi systemu Windows tylko do uruchomienia zaplanowanego procesu” jest dobrą lekturą. Sugeruję, aby komentarze zostały również przeczytane, ponieważ dyskusja trwa do dziś i dostarcza również dobrych kontrargumentów.
Osobiście zgadzam się z moim kolegą w tej sprawie. Zachowaj prostotę tak długo, jak to możliwe. A jeśli wdrażasz na serwerze Win2008, sprawdź Harmonogram zadań i wszystkie funkcje oferowane przez standardowy harmonogram. Dla mnie zabójcą było rozpoczęcie zaplanowanego zadania, gdy nastąpi zdarzenie.
źródło
Usługi są wykorzystywane do celów administracyjnych lub w celu oferowania usługi dla wielu aplikacji.
Harmonogramy są używane do wielokrotnego uruchamiania zadania, które niekoniecznie wymagają dodatkowych uprawnień.
źródło
Słyszałem argumenty za korzystaniem z Windows Scheduler, ale zawsze wybrałem pisanie mojej aplikacji jako usługi. Na początku myślałem, że będzie to lepsze rozwiązanie w środowisku klastrowym, ale tak naprawdę nie jest to prawdą. Najważniejsze jest to, że nie miałem innego powodu niż „odczuwanie” lepszej konstrukcji.
źródło
dlaczego nie wypróbujesz Quartz.net,
użyłem go raz i mogę powiedzieć, że jest to potężny framework do tworzenia własnego harmonogramu i zapewnia on wstępnie zbudowaną usługę, która uruchomi zaplanowane zadanie (przechowywane w bazie danych lub po prostu w pliku XML ) http://quartznet.sourceforge.net/
źródło
Jeśli chcesz, aby użytkownik miał większą kontrolę bez konieczności jego budowania, użyj Harmonogramu zadań. Wygląda na to, że Google robi to z aktualizacją aplikacji. W zależności od użytkownika zarządzanie zadaniem nie jest trudne. Wyjmij użytkownika z pętli i utwórz usługę. Większość ludzi nigdy ich nie dotknie.
źródło