Announcing WCF Data Services Oct 2010 CTP1 for .NET4 & SL4
Today we are releasing CTP1 of the next version of the WCF Data Services libraries. This release targets .NET 4 and Silverlight 4 and includes new client and server features in addition to those that shipped as part of .NET 4 & SL4. With this CTP, you can now use the WCF Data Services client to talk to your Windows Live resources (Photos, Contacts, Status, etc) who REST endpoints are now OData endpoints – more on that in our next blog post.
Below is a brief summary of the features available in this CTP. Subsequent blog posts will discuss each feature in more detail and provide examples of how to use each.
Multi-Valued Properties (formerly known as “Bags” in prior blog posts) : Today entries in OData (Customer, Order, etc) may have properties whose value are primitive types, complex types or represent a reference to another entry or collection of entries. However there is no support for properties whose value is a collection of primitive or complex types. This lack of support makes modeling things like lists of alternate emails addresses for a Customer more difficult/clunky than it should be. To enable such scenarios, data services now supports properties that are unordered homogenous sets of non-null primitive or complex values, which in the next version of OData are referred to as Multi-Valued Properties.
Named Resource Streams: Data Services currently supports Media Link Entries which allows you to associate a single streamed blog with an entry. For example, you could have a Photo entry that lists the metadata about the photo and links directly to the photo itself. But what happens though if you have multiple versions of the Photo? Today you could model this with multiple MLEs, but doing so implies you have different metadata for each stream and you end up with copies of the same metadata for each version of the stream. Clearly this is not desirable when you have multiple versions of essentially the photo. It turns out that this is a very common scenario, common enough that we thought it needed to be supported without forcing people to use multiple MLEs. So, with this release we’ve allowed an entry to have multiple streams associated with it such that you can now create services that do things such as expose a Photo entry with links to its print, web and thumbnail versions.
Make the client library fully hyper media driven: We’ve enhanced the processing of the data services client library to enable it to be fully response payload driven. Today the WCF Data Services client library assumes the server it is speaking with follows the URI path construction recommendations defined by OData and that all collections (Customers, Order, etc) that make up a data service reside at the same base URI. With this release the data services client fully utilizes all the metadata available from a data service such that it can support partitioned and geo-located services.
PATCH method support: WCF Data Services has supported replace-based updates via the PUT method and merge based updates via the MERGE method for a while now. The MERGE method was defined by the OData specification as a existing standards-based method did not exist for merge updates. However, the PATCH method is now a standard and is semantically equivalent to the MERGE method. Given our desire to always support the latest standards our client and server library now support the PATCH method as a synonym to MERGE.
Prefer header support: Following the semantics of the Prefer header, WCF Data Services now support returning responses to Insert and Update requests. In prior releases only responses from Insert operations were supported.
Additional Feed Customization Support: The existing Feed Customization support in WCF Data Services was enhanced to support mapping to the <link> and <category> repeating elements.
Frequently Asked Questions
Q1: What are the prerequisites?
A1: See the download center page for a list of prerequisites, supported operating systems, etc.
Q2: Does this CTP install side-by-side with the .NET 4 and Silverlight 4 versions that are currently on my development machine?
A2: By in large this install is side-by-side with existing .NET4 and SL4 bits; however, that was not possible in all cases so some VS files will be modified by the CTP installer to enable the Add Service Reference gesture in Visual Studio 2010 to make use of the new features in this CTP. The files should be replaced to their original state during uninstall of this CTP.
Giving Feedback
The following forum is dedicated to providing feedback on "pre-release" versions of data services such as this CTP: https://social.msdn.microsoft.com/Forums/en-US/dataservices/threads. Please direct all your questions about the release to this forum.
Note: The forum intended for questions on currently shipping versions of ADO.NET Data Services is still available at: (https://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/threads/ )
We look forward to hearing your thoughts on the release!
-Mike Flasko
Lead Program Manager, Microsoft
Comments
- Anonymous
October 27, 2010
Do you even read customer feedback? People have been asking for same things for 2 years and you come up with this. Disappointing.data.uservoice.com/.../72027-wcf-data-services-feature-suggestions - Anonymous
October 27, 2010
I totally agree with George, i was hoping to use some new features in my business project, it was not this time... - Anonymous
October 28, 2010
Any ideas of a timeline for the full release of this? In particular, if/when it will be possible to run the updated services in Azure? - Anonymous
October 31, 2010
Will there be compression support in the RTW? - Anonymous
November 30, 2010
Is navigation to derived types supported? - Anonymous
January 18, 2011
Dear Data Services Team,Its great to hear we can look forward to multivalued properties. I am evaluating this as I send you this message.One question that pops up: have you extended the "add link" method to support a property path instead of just a property so deeper collection properties can be set in a relation?If my question is too unclear let me know I will send some sample code.Keep up the good work!Your's,marcel van eijkelMarcelVanEijkel@gmail.com