Silverlight开发使用WCF RIA Services的DomainContext和数据缓存

所谓的利用WCF Ria Service开发,其实就是新建一个silverlight的business application项目,其中以.web结尾的项目作为服务器端并承载WCF服务.svc;而silverlight项目作为富客户端,使用自动产生的DomainContext作为WCF代理,去访问WCF服务。此处所说的数据缓存只讨论客户端的缓存,web服务端直接用Cache类。习惯了HTML开发,让我们忘记了还有浏览器端数据缓存,而不是通常的HTML片段缓存。

虽然缓存算法很简单,但是我们完全不用自己实现。 DomainContext对象管理着这些数据,是一个很好的缓存容器。

A DomainContext is a stateful client-side representation of a domain service。既然是一个stateful有状态的context,数据缓存得来全不费功夫。我们通过Load<ObjectData>查询到的数据,其实全都保存在EntitySet<ObjectData>类型的属性ObjectDatas中。这样如果我们要取一些不会经常改变的数据时,就可以直接从DomainContext的这些属性中找到,如果已经加载过了。从而达到了缓存数据的目的。

关键是要有唯一的DomainContext对象,我们可以用单件模式实现:

 public class DataContextSigleton
    {
        static DataContext context;
        public static DataContext Current
        {
            get
            {
                if (context == null)
                    context = new DataContext();
                return context;
            }
        }
    }

 Silverlight的开发更像WinForm开发,而不是Web开发。

原文地址:https://www.cnblogs.com/hjblog/p/2196324.html