Я пытаюсь найти элегантный способ сбора информации для целей аудита / истории по нескольким вызовам операций / методов, охватывающим несколько классов.У кого-нибудь есть какие-либо идеи / мнения о том, как эти данные должны собираться?
Для моего конкретного примера мне нужно взаимодействовать с веб-сервисом для синхронизации данных между двумя системами.Это включает в себя несколько различных операций, которые потенциально могут предоставить полезную информацию, которая должна быть зарегистрирована.
Для загрузки данных мне необходимо;
- Связь с веб-сервисом для получения данных.
- Данные для сбора ;
- Сводная информация о запросе веб-службы (идентификатор записи, тип, время последнего обновления и т. Д.)
- информация о любых исключениях, которые генерируются во время вызова веб-службы.
- время в секундах, затраченноедля извлечения данных (или исключения) из веб-службы
- Проверка полученных данных с помощью локальных правил проверки
- Данные для сбора ;
- Ошибки валидации.
- Если допустимо, то XML-представление полученных данных и локальное представление одного и того же объекта.
- Сохранить проверенные данные в локальной базе данных
- Данные для сбора ;
- Любые исключения во время вызовов базы данных
- Сохранение записи аудита / истории с подробным описанием всей информации, собранной выше.
Подобный тип данных сохраняется при загрузке информации в веб-сервис, где мы собираем исключения во время обмена данными через веб-сервис / БД, ошибки проверки, полученные от веб-сервиса через FaultException, время, необходимое для связи веб-сервиса и т. Д.
Для моего текущего решения я в настоящее время создал объект AuditHistory с заполнителями для хранения различной информации и передаю ее методам различных классов и заполняю ее во время каждого вызова метода.В конце я просто сохраняю этот объект истории аудита.
Это работает, но кажется уродливым и неуклюжим.
Любые идеи приветствуются.