当前位置: 首页 > web开发 > Silverlight > 正文

使用LINQ和ADO.NET创建Silverlight程序(3)

时间:2011-10-23 51CTO 黄永兵 译

例2 设置访问规则

//这个方法只被调用一次初始化服务端策略
public static void InitializeService (IDataServiceConfiguration config)
{
 //只允许我们读取和更新Products实体,不允许删除 和创建
 config.SetEntitySetAccessRule("Products",
                 EntitySetRights.AllRead |
                 EntitySetRights.WriteUpdate);
 //只允许读取Category和Suppliers实体
  config.SetEntitySetAccessRule("Categories", EntitySetRights.AllRead);
  config.SetEntitySetAccessRule("Suppliers", EntitySetRights.AllRead);
}

完成这个之后,你可以直接浏览服务了,它将会显示每个端点的原子反馈信息,为了调试ADO.NET Data Service,我建议你禁用Internet Explorer的RSS 反馈视图,或使用另一个浏览器查看服务的XML格 式。

查询和更新数据

ADO.NET Data Service将服务作为具有代表性的状态转换器(Representational State Transfer (REST))暴露,它是一个基础服务,不是基于SOAP的服务,这意味着要替换掉SOAP封包,服务响应的有效 负载只包括数据,不包括原数据(metadata),所有请求都使用HTTP动词(GET,PUT,POST等)和请求 URI描述,假定你有一个如图2所示的模型描述Products,Categories和Suppliers,ADO.NET Data Service服务将会产生三个端点,每个实体集一个,URI为了确定一个模型中的实体集,只需要使用服务的 地址和端点的名字就可以了:http://localhost/{服务名}/{端点名}或 http://localhost/Product.svc/Products。

图 2 数据模型示例

URI语法支持许多不同的特性,包括检索特殊的实体,对结果进行排序、过滤、分页和调整。

ADO.NET Data Service使用这些URI风格的查询将数据返回给服务的用户,目前支持两个序列化格式( 将来的版本很可能会进行扩展):JavaScript对象标记(JavaScript Object Notation即JSON)和基于原 子的XML(Atom-based XML)。JSON对于客户端Web代码非常有吸引力,而Atom是基于XML的格式,因此需 要借助XML解析器。

ADO.NET Data Service在查询中使用标准的HTTP访问头来确定向客户端返回什么格式,如果你从客户 端(如一个浏览器)发出一个请求可以破坏XML,如果你不通过Accept头指定一个优先选用的格式,默认 将使用Atom作为返回的格式。