Использование ASP.NET HttpCache для буферизации данных из веб-службы - PullRequest
0 голосов
/ 15 августа 2010

С какими проблемами я могу столкнуться, используя HttpCache для буферизации данных из веб-службы, в отличие от хранения тех же данных в таблице базы данных?В гипотетической ситуации, когда служба была временно недоступна, если серверу нужно было перезагрузиться в течение этого времени, невозможно было бы повторно заполнить кэш.По этой причине, возможно ли сохранить кеш, как вы могли бы сделать с состоянием Session SqlServer?

Я прочитал, что HttpCache реализован с использованием шаблона Singleton.Означает ли это, что я должен использовать Mutex при работе с объектами, поступающими из кэша?

Что произойдет, если кэш обновляется с одной стороны отдельным потоковым процессом, а также читается другим потоком?

Спасибо.

1 Ответ

2 голосов
/ 15 августа 2010

Самая большая проблема с механизмом кэширования - устаревшие данные. Поскольку данные кэшируются, они могут быть такими же старыми, как и время жизни кэша. В транзакционных системах это недопустимо, но для других систем это нормально. Просто поймите, сколько лет данным. Я не знаю, можно ли сохранить кеш, но если вы собираетесь пойти в базу данных, я бы не рекомендовал использовать кеш в первую очередь, так как часть этого вопроса - быстрый доступ в память к вашим данным.

Да, для кэширования используется централизованное хранилище в памяти, например, Singleton. Ответ на ваш вопрос о мьютексах заключается в том, что это зависит от ваших схем доступа к данным. Большинство людей используют кеши для заполнения данных один раз. Если значение истекло, кеш обнуляет их запись, и они снова заполняются. Да, вы можете защитить доступ с помощью Mutex (или, скорее, оператора lock), чтобы предотвратить одновременное заполнение кэша несколькими клиентами. Но IMO - это скорее точка производительности, чем точка согласованности данных, поскольку, по всей вероятности, клиенты будут переписывать друг с другом одни и те же данные (опять же, это зависит от вашей ситуации).

...