It's been a little while since we've written about the future direction of data services, so this post is intended to layout our thinking towards our next release.  The release described below isn't yet available, but should be in the coming months, so stay tuned :).  The rest of this post will discuss the specifics of the release being announced and what to expect in terms of features in CTP1.

ADO.NET Data Services v1.5 CTP1 is a tech preview of the next release of ADO.NET Data Services.  This release (v1.5) will target the .NET Framework 3.5 SP1 & Silverlight 2 platforms and provide new client and server side features for data service developers. 

Why is v1.5 in the name?

V1 = The release of the ADO.NET Data Services runtime and client libraries included in the .NET Framework 3.5 SP1 and Silverlight 2

V1.5 (this release) = A standalone web release which includes a superset of the functionality shipped in V1.

How does this release relate to ADO.NET Data Services as shipped in the .NET Framework 3.5 SP1? 

This release (v1.5 CTP1) is a standalone release and represents our in progress work towards the next version of the ADO.NET Data Service technology we shipped in the .NET Framework 3.5 SP1.  Since this is a standalone release, it will NOT be an in-place update of the v1 assemblies (System.Data.Services.*.dll) in the .NET Framework 3.5 SP1.  Instead, this release will coexist with v1, allowing you the choice of building applications against either release.  Like v1, this release also targets the .NET Framework 3.5 SP1 so we can quickly iterate on a feature set which makes it easier to use data services in cloud services (e.g. Windows Azure Table Storage, etc) and to address the needs of web-focused applications which iterate on a relatively short cycle. 

How does this release relate to Silverlight 2?

This release (v1.5 CTP1) will include an updated client library for consuming data services from Silverlight 2.  The additional features included are described in the feature list below.  

How does this release relate to the next release of the .NET Framework (ie. .NET Framework 4.0)?

As noted above, ADO.NET Data Services v1.5 will initially target the .NET Framework 3.5 SP1 and Silverlight 2 platforms and will likely be released prior to the .NET Framework 4.0 platform.  A future version of this standalone release (v1.5) will be created to support the .NET Framework 4.0 platform. 

When will v1.5 CTP1 ship?

We aren't yet ready to announce a release date, but we are in the close down phase of the feature set for CTP1, so we are hoping to have more to say here in the not too distant future :).

What's coming in CTP1?

ADO.NET Data Services v1.5 CTP1 will include the following enhancements and features:

Data Binding: The data services client library for the .NET Framework 3.5 SP1 and Silverlight2 has been extended to support two-way data binding for WPF and Silverlight based applications.  

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: 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 <next ..> elements to the data service runtime.   For CTP1 we'll include server side support for this feature only.  Client library support will likely come in a future CTP.

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.  For CTP1 we'll include server side support for this feature only.  Client library support will likely come in a future CTP.

New "Data Service Provider" Interface 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.   

Bug Fixes: This release builds on our existing (v1) code base and will incorporate all fixes we have made to this point.

We've already discussed some of the features above in our transparent design process notes on this blog (example: here and here).  This CTP release represents our take at addressing these areas, so when the release becomes available, please give these features a spin and let us know what you think.

As we get closer to having the CTP1 bits ready to make available on the download center, we'll post additional documentation, samples, etc. as "getting started" material for the features.

-Mike Flasko

ADO.NET Data Services Program Manager