WCF Data Services
简介
WCF Data Services,旧称ado·net Data Services Framework(代号Astoria,以下简称WCF DS)是基于 ado·net Entity Framework 上的一个简单数据供应服务 (Data Provisioning Services),也是微软的REST(Representational state transfer) 的解决方案之一。特别为AJAX,Silverlight以及Mashup应用程序提供数据服务所设计。
目前 ado·net DSF 已经内含于 .NET Framework 3.5 Service Pack 1 中。
发展背景
以往在发展像是 AJAX 应用程序时,服务端总是需要设计一个 HTTP 接口端口 (end point),通常都会使用Web Service来实现,但是随着Mashup应用程序的成长,若每次都要为一份(或一组)数据撰写 Web Service 或 HTTP end point 的话,对开发人员也是不小的负担,而且 Web Service 只支持 XML/SOAP 的数据格式,无法兼容于 Mashup 应用程序常用的JSON数据格式,微软也发现未来的 Silverlight 应用程序也是会面临到相同问题。
当时刚好微软的 ado·net Entity Framework 也正在开发中,它的 EDM 能力刚好可以提供给WCF 数据访问的能力,因此微软特别以 ado·net Entity Framework 为基础,开发一个专门提供 HTTP 端点数据服务的数据供应层,即为 WCF DS。
架构
WCF DS 由 Entity Framework 中的 Entity Data Model (EDM) 为基底,Data Services Framework 的角色就是做为 EDM 的 HTTP 出入口,开发人员可以利用 HTTP 动词来访问 Data Services Framework,某种程度来说,WCF DS 是由 EDM + WCF 而成的一种数据供应服务,它可以被放在 WCF HTTP 通道,asp·net 以及 IIS 中。
WCF DS 的数据源,可以是 ado·net Entity Framework,但如果是来自于其他的数据源,则可以利用为该数据源所实现的LINQ Provider(有实现 IQueryable<T> 接口的组件,若要支持更新则必须要再实现 IUpdatable 接口)来做为数据源亦可。
WCF DS 除了可以将 Entity 公开到 HTTP 通道中,也可以由开发人员自行发展具商业逻辑的自定义函数来回传数据,以及利用查询的解译器 (Query Interceptor) 来将查询 Entity 的数据做过滤后再回传。
访问方法
WCF DS 开放 EDM 在 HTTP 通道中,因此访问方法都要使用 HTTP 方式,GET/POST/PUT/DELETE 都可以使用,而且每个动词所代表的意义都不同。
1.GET:查询数据。
2.PUT:更新数据,必须要和 GET 并用,由 GET 抓下数据修改后,用 PUT 更新。
3.POST:新增数据。
4.DELETE:删除数据。
除了使用 HTTP 动词以外,WCF DS 另提供了 .NET Client Library 让 .NET Framework 应用程序可以访问,它也提供了让 LINQ 可以访问到 WCF DS 的能力(即 LINQ to WCF DS)。[1]
WCF Data Services