Лучший способ, чем XmlSerialization для кэширования автономных таблиц - PullRequest
0 голосов
/ 10 июня 2019

В большом клиенте FAT мы используем справочные таблицы. Они имеют одинаковые характеристики:

  • Они не изменяются пользователем приложения (только администраторами)
  • Они могут быть сериализованы
  • Они могут быть использованы в автономном режиме
  • Они имеют общий набор полей (Id, Description, Version, IsActive)
  • У каждого из них есть несколько полей, уникальных для каждой таблицы
  • Они могут быть удалены в любое время и будут обновлены с сервера
  • Они загружаются в кэш ленивым образом, только когда это необходимо

В настоящее время они реализованы в виде файлов gz-Serial, XML-Serialized в определенной папке кэширования. Они часто используются в комбинированных списках или для поиска одного или нескольких значений предопределенного набора. Их более 100.

Проблема с этой реализацией:

  • Это замедляет интерфейс пользователя: экран ввода данных может иметь несколько справочных таблиц. Когда он открывается в первый раз, он замедляет процесс открытия
  • Пользовательские классы XmlSerializer (предварительно) создаются, но в режиме отладки они в основном создаются на лету, что может задержать запуск маски ввода данных на несколько минут. В цикле разработки, когда вы часто запускаете приложение, оно может немного замедлить процесс.

Я заметил, что могу ускорить загрузку справочной таблицы, сохранив их в виде файлов XML вместо сжатого файла GZ (с Xml в нем). Теперь мне было интересно, есть ли лучшие способы хранения и получения справочных таблиц для преодоления проблем.

Я разместил пример решения в своем репозитории github, чтобы проиллюстрировать текущий подход: https://github.com/tbremeyer/CodeTableCaching

...