0

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

4

2 回答 2

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,它允许您为缓存中的给定项目设置驱逐和过期策略。

于 2013-05-24T05:14:35.243 回答
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;
    }

另外,请参阅WCF 中的缓存?

于 2013-05-24T04:06:56.717 回答