В моем случае используется WCF для возврата данных из базы данных sqlserver. некоторые wcf способ использование в высокой частоте. поэтому он будет уделять больше внимания базе данных. можно использовать кеш в wcf, например кеш http, установить время истечения. в течение истечения срока действия, возвращайте кешированный datatable, out expire time, снова выберите данные из sqlserver. thx, я первый раз использую stackoverflow, и я из Китая, извините за мой бедный английский. ps: my wcf case использует winform/console как хост, а не iis.Как использовать кеш данных в WCF
ответ
Что-то вроде этого отвечает вашим потребностям? Это псевдокод, но я думаю, что это имеет смысл.
static DataTable dt;
static DateTime LastPulled;
public static void GetData()
{
if(LastPulled==null || DateTime.Now-LastPulled > new TimeSpan(5))
{
//Retrieve DataTable from database
}
return dt;
}
Также см Caching in WCF?
использовать это может работать, но это слишком избыточно, есть ли общий класс для достижения этой цели? – wjlJack
Не об этом я знаю. Если вам это нужно, было бы довольно легко сделать себя. Я бы использовал делегат, чтобы вы могли указать действие для своего класса для обновления данных. – mason
Постарайтесь посмотреть http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx для существующих классов. – mason
Если вы используете .NET 4.0 или более поздней версии, вы можете использовать MemoryCache класс. Например:
ObjectCache cache = MemoryCache.Default;
Вы можете хранить ваши DataSet
в кэше с линией, как это:
cache["MyDataSet"] = myDataSet; // myDataSet is your DataSet
Вы можете использовать следующую логику для получения DataSet
:
if (cache["MyDataSet"] != null)
{
// Get your DataSet from the database
}
else
{
myDataSet = (DataSet)cache["MyDataSet"];
}
Кроме того, взгляните на CacheItemPolicy, что позволит вам установить политики выселения и истечения срока действия для данного элемента в кеше.
thx, я нахожу этот метод позже, как и ваш пост. Трудно решить, какой метод wcf использует кеш, и некоторые другие проблемы с синхронизацией. Если есть какой-либо способ получить изменение базы данных, если есть изменение, то выберите еще раз, иначе используйте кеш, то никакая проблема синхронизации. Надежда может найти способ хэш-таблицы в sqlserver, чтобы найти, изменилась ли таблица. – wjlJack
Взгляните на [SqlChangeMonitor Class] (http://msdn.microsoft.com/en-us/library/system.runtime.caching.sqlchangemonitor.aspx) для одного из способов мониторинга изменений в базовом SQL. Вероятно, вам нужно будет контролировать таблицу и/или столбцы, а не сам DataSet (аналогично SqlCacheDepdency). – Tim
См. Этот пример [.NET 4.0 MemoryCache с SqlChangeMonitor] (http://www.codeproject.com/Articles/167282/NET-4-0-MemoryCache-with-SqlChangeMonitor) для одного из способов сделать это (MSDN немного свет о том, как его использовать). – Tim
- 1. Многократный кеш приложений - WCF?
- 2. Использовать кеш в Dropwizard?
- 3. Как использовать кеш в CakePHP?
- 4. Зачем использовать кеш данных и кеш команд для уменьшения пропусков?
- 5. Как отключить кеш-кеш-кеш
- 6. Как использовать WaitHandle в WCF
- 7. Как использовать кеш браузера в moodle
- 8. Как использовать кеш браузера в node.js?
- 9. Как использовать кеш-карту Bing в WinRT
- 10. Как использовать кеш Magento в виджетах?
- 11. WCF FluentNhibernate Управление сеансом и кеш
- 12. Как использовать кнопку «Очистить кеш» от Android
- 13. Как использовать MSMQ в WCF?
- 14. Как использовать wcf в node.js?
- 15. Как использовать MessageParameterAttribute в wcf
- 16. Заставляет ActiveRelation использовать кеш-рельсы
- 17. Как использовать интерфейс как DataContract в WCF
- 18. WCF: Как использовать AllowInsecureTransport
- 19. как использовать кеш волейллов, когда пользователь отключен
- 20. Как использовать услугу WCF
- 21. Как использовать службу WCF
- 22. кеш в WCF (SOAP) с basicHttpsBinding - простой пример
- 23. Как очистить кеш, не затрагивая кеш схемы базы данных?
- 24. Как использовать https wcf?
- 25. ConcurrentDictionary как статический кеш
- 26. Как использовать службы обработки данных WCF в клиентском приложении .NET?
- 27. Как использовать тип данных интерфейса без атрибута «KnownType» в WCF?
- 28. Как использовать кеширование с WCF
- 29. Возможно ли размещать кеш-кеш в IIS?
- 30. Как использовать сессию ASP.NET в WCF?
попробуйте использовать System.Caching, очень проста в использовании. Кроме того, если вы хотите, вы можете изучить некоторые из постоянных библиотек кэширования, таких как escent. – SutharMonil