我的情况是使用WCF从sqlserver数据库返回数据表。 一些wcf方法在高频率下使用。所以它会给数据库带来更大的压力。 我们可以在wcf中使用缓存,如http缓存,设置过期时间。在过期时间,返回缓存的数据表,输出到期时间,再次从sqlserver中选择数据。 thx,我是第一次使用stackoverflow,我来自中国,对不起我糟糕的英语。 ps:我的wcf案例使用winform / console作为主机,而不是iis。
答案 0 :(得分:4)
如果您使用的是.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,它将允许您为缓存中的给定项目设置逐出和过期策略。
答案 1 :(得分:0)
这样的事情会满足您的需求吗?这是伪代码,但我认为它得到了重点。
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?