We’re very excited to announce that the “Data Services Update for .NET Framework 3.5 SP1” (formerly known as “ADO Data Services v1.5”) has been re-released and is available for download; the issue with the previous update has been resolved. If your target is Windows7 or Windows 2008 R2 you can pick it up here. For all other OS versions you can get the release from here. This release targets the .NET Framework 3.5 SP1 platform, provides new client and server side features for data service developers and will enable a number of new integration scenarios such as programming against SharePoint Lists.
As noted in the release plan update post, this release is a redistributable, in-place update to the data services assemblies (System.Data.Services.*.dll) which shipped as part of the .NET Framework 3.5 SP1. Since this is a .NET Framework update, this release does not include an updated Silverlight client library, however, we are actively working on an updated Silverlight client to enable creating SL apps that take full advantage of the new server features shipped in this release. We hope to have the updated SL client available shortly into the new year.
What’s included in this release?
· Projections: This ADO.NET Data Services URI format has been extended to express projections (i.e. you can now work with a subset of the properties of an entity). This release includes both server and client library (including LINQ support) support for projections. We’ve done a fair amount of work in this space to support roundtripping projected values, working with anonymous types, etc. We’ll create a subsequent series of posts to describe this feature.
· Data Binding: The data services client library for the .NET Framework 3.5 SP1 has been extended to support two-way data binding.
· Row Count: One scenario we heard a ton of feedback on after shipping V1 of ADO.NET Data Services in the .NET Framework 3.5SP1 is the ability for the a client of a data service to determine the total number of entities in a set without having to retrieve them all. To address this need, we have extended the data services addressing scheme to allow a client to obtain this type of information without having to download all the entities in a set.
· Feed Customization (aka "Web Friendly Feeds"): A common ask we have received is to provide the ability to customize how entities are mapped into the various elements of an AtomPub feed. This feature does just that by providing a data service author declarative control over how the data service runtime maps the properties of an entity (e.g. a Customer, Order, etc) to the elements of a feed.
· Server Driven Paging (SDP): This one is best described by example. If you had a data service that exposes photos, you likely want to limit the total number of photos a single request to the service can retrieve because the total collection of photos may be very large. This feature allows a service author to set per collection limits on the total number of entities returned for each request. In addition to limiting the number of photos returned per request, the server provides the client a "next link" which is simply a URI specifying how to continue retrieving the rest of the entities in the collection not returned by the first request. For those familiar with AtomPub, this feature adds support for AtomPub <link rel="next" ...> elements to the data service runtime.
· Enhanced BLOB Support: This feature enhances the BLOB support provided in V1 to enable data services to stream arbitrarily large BLOBs, store binary content separate from its metadata, easily defer the loading of BLOB content when its metadata is requested, etc.
· Request Pipeline: We have started to expose events throughout the data services server request processing pipeline. For this release we’ll expose request level events and in future we’ll look to expose more fine grained events based on your feedback. The goal of exposing our processing pipeline is to allow services further transparency into a data service such that a service author can do things such as setting HTTP response cache headers, wrapping interceptor processing and data service request processing in a single transaction, etc.
· New "Data Service Provider" Interfaces for Custom Provider Writers: As the data services runtime has evolved, so has the number of ways people want to plug data into the data service framework. In V1, two methods (Entity Framework and arbitrary .NET classes) were supported to enable a data service to interact with various diverse data sources. To address another class of environments and data sources we have introduced a way to write a "custom" provider for those cases when the previous two provider models don't meet your needs.
Frequently Asked Questions
Q1: Why is the title of this release ADO.NET Data Services and not WCF Data Services as per the alignment roadmap in this blog post?
A1: Since this release is an update to the .NET Framework 3.5 SP1 we kept the name consistent with what was used in the 3.5 SP1 timeframe so that printed documentation, etc is consistent. Going forward in .NET 4 and onwards you’ll see us use WCF Data Services.
Q2: Where do I find documentation for this release?
A2: The .NET Framework 3.5 SP1 documentation has been updated to include the new features in this release. You can find the MSDN documentation here and here. Another good source of information is the data services developer center page and this blog.
Q3: Where do I go to ask questions about this release?
A3: Go to our MSDN forum here or comment on this blog post.
Q4: Are the features in this release going to be included in the upcoming .NET Framework 4 release?
A4: Yes, all the features in this release will be included in .NET 4
We look forward to seeing all the ways you are using or plan to use the features in this release!
-Mike Flasko Data Services, Lead Program Manager
Data Services, Lead Program Manager