При выборе технологии, я думаю, полезно учитывать не только может технологию удовлетворить ваши потребности, но и то, была ли она разработана для удовлетворения ваших потребностей.Под этим я подразумеваю, что вы должны выбрать лучший вариант, а не только первый, который кажется достаточно хорошим.Вероятно, вы могли бы решить эту проблему с помощью ведения журнала или текстовых файлов или с помощью различных других средств, но это не значит, что вы должны.
Мой порядок предпочтений в этой ситуации будет
- база данных
- MSMQ
- все остальное
Если по какой-либо причине невозможно сохранить транзакции в базе данных, MSMQ, возможно, поможет вам в этом.Он должен работать лучше, чем открытие соединения с базой данных и фиксация, но обеспечивает «хороший» уровень персистентности.Недостатком является то, что это больше кода и еще одна точка сбоя для вашего приложения (не то, что оно потерпит неудачу, если написано правильно, но больше кода означает больше мест для ошибок).
Вы можете бросить свои транзакции в очередь оченьлегко использовать что-то вроде этого
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();
, а затем получить их позже с помощью запроса свойств: MSMQ-запрос определенного сообщения .Есть много других функциональных возможностей, но не усложняйте их.
Некоторые соответствующие вопросы: