Я работаю в системе, которая должна демонстрировать следующее поведение:
- Контрольный журнал
- Отмена / возврат к определенной версии (такое действие само будет записано в журнал аудита)
Я видел немного похожий вопрос здесь , но он касается только части того, что я пытаюсь сделать.Более того, я хочу захватить весь жизненный цикл объекта (например, CRUD).
Способ, которым я намереваюсь реализовать это следующим образом:
- Основан на классе ChangeManagerв шаблоне наблюдателя
- Извлечение моих объектов из базового объекта, который «оборачивает» изменения в шаблоне команды
- Уведомление ChangeManager с помощью объекта команды о любом из событий CRUD
Примечание. Команда 'change' будет состоять из:
- (упорядоченного) набора из двух кортежей, подробно описывающих изменение поля (prev, new)
- idпользователя, который внес изменение
- отметка времени изменения
Это просто "от макушки головы" - и могут быть дыры в подходе, о котором я думаюпринятие - я был бы признателен за некоторую помощь от людей, которые ранее реализовывали такого рода поведение, а также за общие советы, плюсы и минусы в отношении подхода, который я обрисовал в общих чертах выше, - или, возможно, лучший / альтернативный подход.Фрагмент или два, которые укажут мне правильное направление, также будут с благодарностью!.
Я буду использовать C # в качестве языка реализации.