Windows Hizmeti mi, Windows Görev Zamanlayıcısı mı?


10

Ben veritabanını sorgulamak ve bazı bilgileri (veritabanındaki başka bir tablo) depolayacak bir yardımcı program oluşturmayı planlıyorum. Çok iş parçacıklı bir yardımcı programdır ve her 5 veya 10 dakika / daha sonra çalıştırmak gerekir, günde üç kez olabilir.

Bunu başarmak için iki seçenek C # / DotNet programlama görüyorum.

  • içinde zamanlayıcı yaklaşımı olan windows hizmeti oluşturma.
  • bir konsol programı ve Windows görev zamanlayıcı kullanarak programlayın.

Hangisini tercih edersiniz ve neden?


3
Bu soru SO için daha uygun olduğunu düşünüyorum
Naveen

1
Gerçekten, bu iyi bir yazılım tasarımı sorusudur ve SO'ya sorduğunuzda muhtemelen beş saat içinde en az beş iyi cevabınız olacaktır.
sharptooth

1
Kapatmaya oy verdim, bu aslında SO'ya ait
Jaco Pretorius

2
Bu soru ikisinden birinin esası hakkında öznel ve / veya genişletilmiş bir tartışma ortaya çıkarır. Burada çok konu var ve orada öznel ve tartışmacı.

2
Emin değilim, sanırım son cümle "Hangisini tercih edersin ve neden?" oradaki yakın botları tetikleyecekti. Gerçek cevaplar burada bulunabileceğinden burada daha iyi
TheLQ

Yanıtlar:


2

Aynı konuyla ilgili dünden bir meslektaşımın yorumları

"Bu konuda her zaman çeşitli bir fikir olacaktır ... Başparmak kuralı, her beş dakikada bir çalışan bir şeye ihtiyacınız varsa (ve ne zaman çalıştığını veya ne kadar sürdüğünü umursamıyorsanız) veya her gün belirli bir saatte çalıştırmak için bir şeye ihtiyacınız varsa ve aşırı tur olmayacağından eminseniz, işletim sistemiyle birlikte verilen Zamanlayıcı'yı kullanın. çeşitli durumlar için çözümler veya raftan bir şey bulmak. (Muhtemelen Kuvars .Net) "

Jon Galloway'ın 2005 tarihli makalesi "// TODONT: Sadece planlanmış bir işlemi çalıştırmak için bir Windows Hizmeti kullan" iyi bir okuma. Yorumların da okunmasını öneriyorum çünkü tartışma günümüze kadar devam ediyor ve bazı iyi karşı argümanlar da sunuyor.

Şahsen, meslektaşımla bu konuda hemfikirim. Mümkün olduğunca uzun süre basit tutun. Win2008 sunucusuna dağıtıyorsanız, Görev zamanlayıcıya ve standart zamanlayıcının sunduğu tüm özelliklere bakın. Benim için katil, bir olay meydana geldiğinde zamanlanmış bir göreve başlayacaktı.


4

Hizmetler , yönetim amacıyla veya birden fazla uygulamaya hizmet sunmak için kullanılır.

Zamanlamaları , bir görevin birden çok kez çalıştırılması için kullanılır ve bu da ek izin gerektirmez.


3

Windows Zamanlayıcı'yı kullanmakla ilgili argümanları duydum, ancak her zaman uygulamamı bir hizmet olarak yazmayı seçtim. İlk başta kümelenmiş bir ortamda daha iyi bir çözüm olacağını düşündüm ama bu doğru değil. Sonuçta daha iyi bir tasarım gibi "hissettim" dışında iyi bir neden yoktu.


0

Neden Quartz.net'i bir
kez kullanmıyorsunuz ve kendi zamanlayıcınızı oluşturmak için güçlü bir çerçeve olduğunu söyleyebilirim ve planlanan İşinizin (veritabanında veya sadece bir XML dosyasında depolanacak) önceden oluşturulmuş bir Hizmet sağlar ) http://quartznet.sourceforge.net/


2
-1 Bu soruya hiç cevap vermiyor ve yorum olarak daha iyi uyuyor.
Tamara Wijsman

0

Kullanıcının oluşturmanıza gerek kalmadan daha fazla denetime sahip olmasını istiyorsanız, Görev Zamanlayıcı'yı kullanın. Görünüşe göre Google bunu uygulama güncellemeleriyle yapıyor. Kullanıcıya bağlı olarak, görevi yönetmek zor değildir. Kullanıcıyı döngüden çıkarın ve bir hizmet oluşturun. Çoğu insan onlara asla dokunmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.