2013-03-30 2 views
1

Мне нужно заносить в базу данных каждый вызов моего веб-API. Теперь, конечно, я не хочу идти в свою базу данных при каждом звонке.Ведение журнала вызовов веб-API MVC 4

Так что скажем, у меня есть словарь или хэш-объект таблицы в моем кеше, и каждые 10000 записей, которые я иду в базу данных.

Я все еще не хочу, чтобы каждый пользователь 10000 дождался этой операции. И я не могу начать другой поток для длительных операций, так как пул приложений может быть переработан в основном в любое время.

Какое оптимальное решение для этого сценария?

Благодаря

ответ

0

Я считаю, что ваша точка зрения прочности весьма противоречивы. Ваш кеш из 10000 объектов также может быть потерян в любое время из-за перезагрузки пула приложений или сбоя сервера.

Но к первоначальному вопросу о том, как выполнить большую работу, не вызывая пользователь ждать:

  • Помещенных ограничения по утилизации пула приложений и иметь дело с потенциальной потерей данных.

  • Периодически выгружать кэшированные сообщения в службу Windows для дальнейшей обработки. Это не гарантирует 100% сохранение данных, например. служба/сервер может выйти из строя.

  • Использование очереди сообщений (MSMQ), possibly with WCF. Очередь сообщений может сохраняться на диске, поэтому это можно считать достаточно надежным. Технология

Message Queuing (MSMQ) позволяет приложения, работающие в разное время, чтобы общаться в гетерогенных сетях и систем, которые могут быть временно отсутствует. Приложения отправляют сообщения в очереди и читают сообщения из очередей.

Message Queuing обеспечивает гарантированную доставку сообщений, эффективно маршрутизации, безопасности и обмена сообщениями с приоритетом. Его можно использовать для реализовать решения как для асинхронных, так и синхронных сценариев , требующих высокой производительности.

Принимая это шаг вперед ...

В зависимости от ваших требований и/или окружающей среды, вероятно, можно устранить кэш, и писать все сообщения немедленно (и быстро) в очередь сообщений и не беспокоиться о потере производительности или большая операция записи.

+0

Спасибо! Я фактически не думал о том, чтобы вывести его на другой сервис/очередь –

Смежные вопросы