如何在WCF中使用数据缓存

时间:2013-05-24 04:01:14

标签: c# sql-server wcf caching

我的情况是使用WCF从sqlserver数据库返回数据表。 一些wcf方法在高频率下使用。所以它会给数据库带来更大的压力。 我们可以在wcf中使用缓存,如http缓存,设置过期时间。在过期时间,返回缓存的数据表,输出到期时间,再次从sqlserver中选择数据。 thx,我是第一次使用stackoverflow,我来自中国,对不起我糟糕的英语。 ps:我的wcf案例使用winform / console作为主机,而不是iis。

2 个答案:

答案 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?