Если бы я реализовал ваш сценарий, я бы не предпочел опрос, поскольку меньше смысла делать повторные вызовы в службу и сохранять занятость службы / сети. Кроме того, если вам нужно внедрить новый клиент, вам придется снова выполнить опрос.
Вместо этого используйте кэширование на основе словаря в статическом классе. Вы используете существующие библиотеки, такие как CacheManager. Общая идея заключается в создании ключа с использованием параметров, используемых для вызова службы. Затем сохраните результаты, полученные после обработки, в ConcurrentDictionary
, который сам заботится о доступе для нескольких потоков.
Очистить сохраненный результат только после обновления базовой таблицы базы данных (?) Или, если это слишком сложно, через каждые 30 секунд.
Кроме того, вы можете также внедрить аналогичный механизм кэширования на уровне доступа к данным, чтобы сократить 4 секунды, которые у вас есть в настоящее время. Очистите кэшированные данные после изменений базовых данных (операции добавления, обновления, удаления, вставки)!
Мне пришлось использовать / closed
аргумент. Согласно официальной документации :
Closed
Когда это установлено перед вызовом Merge, тогда вычисляется "транзитивное закрытие" входных сборок и добавил в список входных сборок. Сборка считается частью транзитивного замыкания , если на нее ссылаются, прямо или косвенно, из одного из первоначально указанных входных сборок, и у него есть внешняя ссылка на одну из входных сборок или на одну из сборок, которая имеет такую ссылку. Сложно, но это это жизнь ...
В то время как публикация выбора 'Не объединяется' от, настраивают и, чем публикуют Проект