2010-06-28 11 views
1

Je suis en train de créer un système où les utilisateurs peuvent configurer les mailings pour sortir à des moments précis. Avant d'être je voulais obtenir un conseil. Premièrement, existe-t-il déjà un composant .Net qui gérera les tâches de planification (soit en exécutant une autre application ou en appelant une URL) qui fera ce que je suggère (Open Source serait cool)? Si ce n'est pas le cas, est-il préférable de planifier un travail en SQL et d'exécuter un script, de créer un service .Net qui examinera un fichier xml ou un db pour les plannings, ou une application créer des tâches planifiées? Il pourrait y avoir une tonne de tâches, donc je pense que créer des tâches planifiées ou des tâches SQL pourrait ne pas être une bonne idée. Voici un scénario typique; un utilisateur veut envoyer une newsletter à ses clients. L'utilisateur crée le bulletin d'information un samedi, mais ne veut pas le sortir avant lundi. L'utilisateur veut que ce même courriel sorte tous les lundis pendant un mois. Merci de votre visite!Tâches de planification Conseils? .Net, travail SQL?

Répondre

1

Découvrez Quartz.NET

Quartz.NET est un système de programmation complet, open source de travail qui peut être utilisé de plus petites applications aux grands systèmes d'entreprise à grande échelle .

1

Si vous souhaitez utiliser les services facilement disponibles dans Windows lui-même, consultez cet article sur A New Task Scheduler Task Library CodeProject sur la façon de créer des tâches scheuled dans Windows de votre C# application.

Vous avez probablement plus de flexibilité et de puissance si vous utilisez des tâches C# et planifiées dans Windows, plutôt que de vous limiter à ce qui peut être fait dans SQL Server. Les tâches de l'Agent SQL Server sont excellentes - pour les tâches spécifiques à la base de données, principalement - les plans de maintenance, etc.

1

Vous pouvez créer votre propre service Windows qui planifie et exécute les tâches. Assurez-vous de faire de bonnes abstractions. Dans un projet similaire, j'ai utilisé une abstraction où les éléments de planification sont abstraits comme des Jobs composés de tâches. Par exemple, l'envoi d'une newsletter peut être un travail alors que l'envoi d'une newsletter à chaque abonné peut être considéré comme une tâche. Ensuite, vous devez exécuter le travail et les tâches dans des modèles de threads définis de préférence en utilisant des threads Threadpool ou une bibliothèque parallèle de tâches. Assurez-vous d'utiliser une API asynchrone pour IO chaque fois que cela est possible. Séparez également votre logique d'ordonnancement des abstractions. de sorte que la logique d'ordonnancement puisse exécuter des types arbitraires de tâches et ses tâches inclusives.