我可以在所有用户使用的silverlight中缓存数据吗?

时间:2011-02-24 22:05:19

标签: c# asp.net silverlight

我正在silverlight中创建一个图形工具,用于从多个文件和数据库中读取数据。

我不想一次又一次地调用数据库。我想在需要时检索数据并在某处保持安全,因此如果用户或任何其他用户访问同一页面,他们就可以访问数据。

我想使用asp.net Cache [“Object”]的应用程序状态但是在Silverlight中?什么是最好的方法?

4 个答案:

答案 0 :(得分:4)

由于silverlight正在运行客户端,因此您需要缓存服务器端。 您可以使用WCF获取数据。 这些方面的东西:

我过去所做的是使用enterprise library使用WCF缓存查询:

public class YourWcfService
{
    ICacheManager _cacheManager = null;

    public YourWcfService()
    {
        _cacheManager = EnterpriseLibraryContainer.Current.GetInstance<ICacheManager>("Cache Manager");
    }

}

您的网络方法如下所示:

    [OperationContract]
    public List<Guid> SomeWebMethod()
    {
        if (_cacheManager.Contains("rgal")) // data in cache?
                result = (List<Guid>)_cacheManager.GetData("rgal");
            if (result == null)
            {

                result = FETCH FROM DATABASE HERE;
                // cache for 120 minutes
                _cacheManager.Add("rgal", result, CacheItemPriority.Normal, null, new AbsoluteTime(TimeSpan.FromMinutes(120)));
            }
                    return result;
    }

答案 1 :(得分:1)

每个用户在浏览器/客户端运行Silverlight控件,因此无法为服务器上的所有用户缓存内容。

您可以在给定用户会话的控件中缓存数据,也可以在给定用户的隔离存储中缓存数据。但是如果不编写相应的服务器端代码,就无法在服务器上执行任何操作。

答案 2 :(得分:0)

缓存真的有必要吗?你真的在敲打你的数据库那么糟糕吗?

您的数据库是您的存储空间。除非您遇到性能问题,否则这是不成熟的优化。

答案 3 :(得分:0)

新的企业库Silverlight Integration Pack为您提供了在客户端上缓存的功能。支持2种类型的数据缓存:内存和隔离存储。您还可以灵活地配置过期策略(以编程方式或通过外部配置)和配置工具支持。

注意:现在是代码预览,但应该在5月份发布为最终版。