Usługa Windows lub Harmonogram zadań systemu Windows?

10

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?

Pavan GR
źródło
3
Myślę, że to pytanie jest bardziej odpowiednie dla SO
Naveen
1
Naprawdę, to dobre pytanie dotyczące projektowania oprogramowania i prawdopodobnie uzyskasz co najmniej pięć dobrych odpowiedzi w ciągu pięciu godzin po zadaniu go na SO.
sharptooth
1
Głosowałem za zamknięciem, to faktycznie należy do SO
Jaco Pretorius
2
To pytanie wywołuje subiektywną i / lub rozszerzoną dyskusję na temat zalet każdego z nich. Tu jest bardzo na temat, a tam subiektywne i kłótliwe.
2
Nie jestem pewien, myślę ostatnie zdanie „Które wolisz i dlaczego?” wywoływałby tamtejszych botów. Tutaj jest lepiej, ponieważ można tu znaleźć aktualne odpowiedzi
TheLQ

Odpowiedzi:

2

Komentarze mojego kolegi z wczoraj dotyczące tego samego tematu

„zawsze będzie różna opinia na ten temat ... Moją ogólną zasadą byłoby, gdybyś potrzebował czegoś, co działa co pięć minut (i nie obchodzi cię, ile czasu to trwa i jak długo trwa bieg) lub czegoś takiego reaguje na zdarzenia, skorzystaj z usługi. Jeśli potrzebujesz czegoś do uruchomienia o określonej godzinie każdego dnia i masz pewność, że nie dojdzie do przekroczenia, skorzystaj z harmonogramu dostarczonego z systemem operacyjnym. Jeśli potrzebujesz hybrydy, użyj obu rozwiązania dla różnych skrzynek lub znajdź coś z półki. (prawdopodobnie Quartz .Net) "

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.

Ahmad
źródło
4

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ń.

Tamara Wijsman
źródło
3

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.

Walter
źródło
0

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/

aleo
źródło
2
-1 To wcale nie odpowiada na pytanie i lepiej pasowałoby jako komentarz.
Tamara Wijsman
0

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.

JeffO
źródło