Question

Je ne suis pas vraiment à l'aise avec ce sujet depuis que j'ai toujours écrit mon propre enregistreur jusqu'à présent.

J'ai un service Web WCF REST. Ce besoin de service de collecter des informations d'erreurs qui l'utilise et quand.

Pour ce faire Logging Application Block d'Enterprise Library (5.0) a été choisi. Afin de maintenir une bonne performance, nous avons décidé d'utiliser MSMQ. L'objectif est de stocker les journaux là-bas jusqu'à ce que nous arrivons à le mettre dans le fichier à un moment donné.

J'ai vu sur plusieurs sites que nous pouvons utiliser WCF pour transmettre le message à un MSMQ et ensuite utiliser une autre entité à travailler avec la file d'attente ou que nous pouvons utiliser MSMQ comme protocole de transport pour communiquer avec WCF. En ce moment, je viens d'utiliser la classe Logger de LAB pour insérer les journaux dans la file d'attente.

Je veux seulement utiliser MSMQ pour désynchronisation mon webservice de la fonctionnalité d'enregistrement.

Alors, voici mes questions: Quels sont les cas où MSMQ est utile avec WCF? Dans le cas que je décris est-il pas exagéré d'utiliser une autre application WCF juste pour connecter certaines choses dans un fichier?

Était-ce utile?

La solution

Je pense que vous confondez deux choses ici. Le transport MSMQ dans WCF est juste que, un mécanisme de transport qui peut être utilisé au lieu de HTTP ou TCP. Votre problème est que (je suppose) que vous voulez vous connecter de manière asynchrone de le service WCF, ce qui est une bonne idée. EntLib comprend le service de distribution MSMQ, qui reprendra l'enregistrement des événements écrits à partir de votre application à une file d'attente en supposant une configuration de bloc journalisation correctement configuré qui spécifie MSMQ comme destination. Le distributeur va alors écrire en fait à la base de données.

exploitation forestière asynchrone est une chose très intelligente à faire, car il garantit que vos événements sont dans un milieu persistant dans des situations catastrophiques où la DB a fait disparaître, par exemple. Sans parler de la base de données ne sont pas accessible dans le cadre des opérations normales d'application, ce qui élimine un point de défaillance potentiel.

Je travaille sur une application web qui utilisait une fois un mécanisme d'enregistrement de base de données personnalisée. Il y avait des endroits où une opération DB aurait lieu dans une transaction et en cas d'échec (par exemple une erreur de contrainte relationnelle de ADO) écrirait un message dans le journal ... pour avoir rouler en arrière le long de l'opération principale. Voilà le genre de problème que vous pouvez vous mettre dans si vous écrivez directement à la base de données dans le cadre de votre stratégie gestion des exceptions.

De toute façon, je ne sais pas si cela répond à votre question. est un bon aperçu de la façon dont cette tous les travaux en EntLib.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top