В большом клиенте FAT мы используем справочные таблицы. Они имеют одинаковые характеристики:
- Они не изменяются пользователем приложения (только администраторами)
- Они могут быть сериализованы
- Они могут быть использованы в автономном режиме
- Они имеют общий набор полей (Id, Description, Version, IsActive)
- У каждого из них есть несколько полей, уникальных для каждой таблицы
- Они могут быть удалены в любое время и будут обновлены с сервера
- Они загружаются в кэш ленивым образом, только когда это необходимо
В настоящее время они реализованы в виде файлов gz-Serial, XML-Serialized в определенной папке кэширования. Они часто используются в комбинированных списках или для поиска одного или нескольких значений предопределенного набора. Их более 100.
Проблема с этой реализацией:
- Это замедляет интерфейс пользователя: экран ввода данных может иметь несколько справочных таблиц. Когда он открывается в первый раз, он замедляет процесс открытия
- Пользовательские классы XmlSerializer (предварительно) создаются, но в режиме отладки они в основном создаются на лету, что может задержать запуск маски ввода данных на несколько минут. В цикле разработки, когда вы часто запускаете приложение, оно может немного замедлить процесс.
Я заметил, что могу ускорить загрузку справочной таблицы, сохранив их в виде файлов XML вместо сжатого файла GZ (с Xml в нем).
Теперь мне было интересно, есть ли лучшие способы хранения и получения справочных таблиц для преодоления проблем.
Я разместил пример решения в своем репозитории github, чтобы проиллюстрировать текущий подход: https://github.com/tbremeyer/CodeTableCaching