WCF Data Services

发展背景

以往在发展像是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 中，可支持JSON (JavaScript Object Notation) 以及 ATOM 两种数据格式，因此可适用于多数的Mashup 或 AJAX 应用程序。