У меня есть служба WCF, скажем, Служба A, которая возвращает имя человека на основе его personId.
Получение имени человека из PersonId фактически обслуживается другой службой, скажем -B.
So Service A Идентификатор лица для Service B, который возвращает имя лица.
Теперь я хочу, чтобы служба A вызывала службу B, только если служба B не была вызвана для personId.
Итак, я хочу реализовать кэширование следующим образом:
Кэшируйте комбинацию personid и Person Name, как только мы получим ее из службы B.
Также я хочу установить зависимость от времени для каждого отдельного предмета. Если отдельный элемент personId не был доступен с 1 часа, он должен истечь.
Теперь у меня есть два подхода
А) Создать хеш-таблицу personid и personName. Каждый раз, когда есть запрос на PersonID, сначала проверьте, существует ли personId в Хэше. Если он существует, то обслуживайте его из Cache else, позвоните в Сервис B. Если это не так, Позвоните в сервис B. Добавьте комбинацию ID лица и личности человека в Hashtable, а затем поместите эту HashTable в кеш.
Проблема: Как поставить зависимость от отдельного элемента. Установка зависимости от HashTable не решит эту проблему
B) Кэширование отдельных имен Personid и PersonName. Каждый раз, когда есть запрос, проверьте, существует ли PersonId в Cache. Если да, подайте его из Cache, если не позвоните в службу поддержки B.
Проблема: это введет много вещей в кеш. Это создаст проблему?
Какой подход мне выбрать и как?