Lors de la cueillette d'une technologie, je pense qu'il est utile de considérer non seulement peut la technologie répondre à vos besoins, mais aussi si elle était conçu pour répondre à vos besoins. Par ceci je veux dire que vous devriez choisir la meilleure option plutôt que juste la première option qui semble assez bonne. Vous pourriez probablement résoudre ce problème avec des fichiers de journalisation ou de texte ou d'autres moyens, mais cela ne veut pas dire que vous devriez le faire.
Mon ordre de préférence dans cette situation serait
base de données
- MSMQ
- tout le reste
S'il est impossible d'enregistrer les transactions à base de données pour une raison quelconque, puis MSMQ peut probablement vous aider ici. Il devrait fonctionner mieux qu'une ouverture d'une connexion à la base de données & en fournissant pourtant une couche de «bonne» persistance. L'inconvénient est que c'est plus de code et un autre point d'échec pour votre application (pas que cela échouera s'il est écrit correctement, mais plus de code signifie plus d'endroits pour les bogues).
Vous pouvez jeter vos transactions dans une file d'attente très facilement en utilisant quelque chose comme ça
private string queuePath = @".\Private$\myQueue";
MessageQueue queue = new MessageQueue(queuePath);
Message message = new Messge();
message.Id = "messageId";
message.Body = "my content";
queue.Send(message, transaction);
transaction.Complete();
queue.Close();
puis les récupérer plus tard dans des propriétés d'interrogation: MSMQ querying for a specific message. Il y a beaucoup d'autres fonctionnalités hors de la boîte, mais gardez les choses simples.
Quelques questions relevent:
MSMQ pour le président! – stefan