所谓的利用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;
}
}
}
{
static DataContext context;
public static DataContext Current
{
get
{
if (context == null)
context = new DataContext();
return context;
}
}
}
Silverlight的开发更像WinForm开发,而不是Web开发。