The OData specification committee at Oasis released the new OData 4.0 draft spec at the end of May. It covers a lot of ground, and there was no “what’s new” high level summary available when the draft was first published. TL;DR mobs sprang up in discussion forums brandishing pitchforks and torches.
In an email on the OData committee discussion forum Michael Pizzo sketched out what’s new in 4.0 in broad strokes, republished on Infoq.com. Pizzo also promised a diff doc would follow in a few weeks.
Here we are a few weeks later, and the OData 4.0 diff doc has arrived! You can download the docx file from the Oasis OData TC documents library.
It’s a great summary of what is changing between OData 3.0 and OData 4.0 and why. I like what I see there. As soon as I get this current OData 3.0 project out the door, I look forward to spooling up the next project with an OData 4.0 baseline – WCF Data Services permitting!
My highlights of the highlights:
- JSON becomes the preferred representation in OData 4.0. ATOM/XML is still fully supported, but JSON is sooo much more compact than ATOM/XML.
- Type and instance annotations are upgraded to first class citizens, with full representations in both JSON and ATOM/XML. OData 4.0 will use annotations for core operations, replacing special one-off XML element tags that were really metadata all along.
- Metadata will be a queryable service so you can search for metadata by entity type, collection, whatever and get back only the metadata you’re really interested in. In OData 3.0 metadata is an all or nothing monolithic document.
- Complex types step up to first class citizen status. Complex types can contain queryable collections (navigation properties) and fields of complex types can be used to define an entity key.
- $expand can include its own filter expressions independent of the parent scope.
- OData 4.0 now defines support for asynchronous completion of HTTP requests.
- And lots more!