2010-12-09 55 views
2

Je travaille sur la conception d'un cache de données d'application pour un grand système dans .NET.Application Data Cache - Quartz.NET vs Liste des tâches?

Le cache de données d'application sera interrogé à partir de plusieurs (10+) systèmes ou bases de données différents. Il faudra également rafraîchir à certains intervalles (30 minutes).

Deux options s'offrent à moi.

La première consiste à utiliser Quartz.NET (ou un autre framework de planificateur) pour déclencher le générateur de cache à un certain intervalle. Il semble que je peux facilement contrôler les intervalles dans le fichier de configuration et la planification est très flexible.

La deuxième option consiste à utiliser la liste des tâches, où une ou plusieurs tâches extraient des données et construisent le cache, et la dernière sera en sommeil pendant une période configurable. Ensuite, je peux déclencher la liste des tâches et la laisser s'exécuter jusqu'à la fermeture de l'application.

En ce moment, je suis plus enclin à la deuxième option où je peux passer en jeton d'annulation afin qu'il y ait plus de contrôle sur le processus de démarrage et d'arrêt. En outre, une tâche individuelle peut être décomposée pour définir des dépendances telles que la hiérarchie des tâches.

Quel est le meilleur moyen ci-dessus? Y a-t-il une meilleure façon?

Répondre

1

Bien, s'il s'agit d'un serveur Asp.Net et SQL standard, explorez SQLCacheDependency. Son événement est basé et sera déclenché chaque fois qu'il y a un changement dans les tables de bases de données non-existantes. Vous n'avez pas à interroger la base de données à chaque fois.

+0

Les sources sont variées, y compris (sans s'y limiter) XML, SQL Server et Oracle. – tonyjy

3

Sur les deux options que vous envisagez, je recommande un planificateur, parce que:

  1. Il est quelque chose que vous n'avez pas à écrire et vous entretenir.
  2. Les planificateurs peuvent conserver les planifications. Par conséquent, si l'application redémarre ou redémarre, le planificateur la gère.
  3. Les tâches sont appelées des tâches dans les planificateurs (dans Quartz.net de toute façon) et vous pouvez les configurer pour exécuter à intervalles séparés. Vous pouvez également avoir un travail qui déclenche d'autres tâches.
  4. Les planificateurs offrent un accès par programmation aux plannings et aux travaux, ce qui vous permet de suspendre, d'ajouter ou de supprimer des tâches si nécessaire.