2010-04-06 7 views
1

Je suis en train d'écrire un service C# windows qui effectuera un traitement en arrière-plan - il s'agit essentiellement d'un consommateur pour une file d'attente de travail.Considérations de conception pour un service de haute fiabilité

Il ne doit pas baisser (arrêter le traitement de nouveaux éléments), et si elle descend, j'ai besoin d'être notifié. Quelles sont les lignes directrices de conception et les considérations pour a) s'assurer qu'un tel service est aussi fiable que possible, et b) envoyer une notification si quelque chose ne va pas? J'ai considéré, par exemple, créer un thread observateur dont le seul travail est de s'assurer que le thread de travail est encore en train de traiter les jobs.

Répondre

1

Il y a un certain nombre de choses que vous pouvez faire ici pour aider à améliorer la fiabilité, ainsi que d'évaluer que vous avez une solution qui va répondre à vos besoins.

Test

D'abord et avant tout bien, le processus de test que vous passez par devra être très solide, test pour les situations « inattendues », la perte de connexion réseau, etc. Assurez-vous que vous testez ceux-ci, et voyez ce qui se passe. Notification sur l'échec, peut être un peu d'un "sac mélangé". Par exemple, vous ne pouvez pas vous envoyer un e-mail si vous n'avez pas de connexion réseau disponible.

Code de bonne conception

En plus de mettre en place des scénarios de test valides, assurez-vous que votre code est une preuve de balle que possible, puisque vous créez un service Windows, assurez-vous que vous capturez, l'exploitation forestière et en traitant toutes les erreurs possibles, comme si une erreur montait à l'OS, votre service va tomber.

Surveillance

Envisager de mettre la surveillance, dans mon emploi de jour, nous avons deux types de surveillance utilisés, les erreurs sont signalées au journal d'événements Windows dans certains cas et Microsoft MOM est utilisé pour nous informer de tout/toutes les questions qui se passent dans l'environnement. Un deuxième processus que nous utilisons est un deuxième travail planifié qui chaque X minutes valide que le travail critique est dans un état "Démarré", s'il n'est pas dans un état démarré, il le redémarrera. Pas élégant, mais ça marche.

0

Je pense que maman et/ou des vents solaires ou une autre application de surveillance que votre administrateur système peut être utilise pour surveiller la machine sur laquelle le service est déployé & prendre des mesures appropriées (envoyez un email, téléphones ring :)

Questions connexes