You are on page 1of 16

RESTful Data Services with the

ADO.NET Data Services Framework

Pablo Castro
Software Architect
Microsoft Corporation
1 Year Later…
Project “Astoria” first announced in Mix 2007
Shared early prototypes, got tons of feedback

Now we’re talking about the real deal


Production quality bits, real-word scenarios

We did a “transparent design” exercise


Went great!
Data in the Web

HTML
HTML +
+ Javascript
Javascript DLL
DLL +
+ XAML
XAML Mashup
Mashup UI
UI

Data
Data (XML,JSON,…)
(XML,JSON,…) Data
Data (XML,JSON,…)
(XML,JSON,…) Data
Data (XML,JSON,…)
(XML,JSON,…) Data
Data
Feeds
Feeds

AJAX Silverlight Online Mashups


Applications Applications Services
A RESTful Interface for Data

Just HTTP


Data as resources, HTTP methods to act on it

Leverage caching, proxies, authentication, …

Uniform URL syntax


Every piece of information is addressable

Predictable and flexible URL syntax

Multiple representations


Use regular HTTP content-type negotiation

Atom*, JSON and Plain XML

*full AtomPub protocol support
Model and Operation Semantics
Underlying data model
Entity Data Model
Entities  Resources
Associations  Links

Operation semantics
Usual mapping of HTTP methods
GET  retrieve resource
POST  create resource
PUT  update resource
DELETE  delete resource
URL Conventions
Addressing entities and sets
Entity-set /Bookmarks
Single entity /Bookmarks(123)
Member access /Bookmarks(123)/Name
Link traversal /Bookmarks(123)/Tags
Deep access /Bookmarks(123)/Tags('abc')/Name
Raw value access /Bookmarks(123)/Names/$value

Presentation options
Sorting /Bookmarks?$orderby=Name
Filtering /Bookmarks?$filter=Created gt '2007-05-07'
Paging /Bookmarks?$top=10&$skip=30
Inline expansion /Bookmarks?$expand=Tags
Creating Data Services
HTTP

Create services directly


Hosting/HTTP listener
from Visual Studio
Service Runtime
Various data sources IQueryable [+ IUpdatable]
Entity Framework
LINQ providers Data Access Layer
Entity Custom LINQ
Framework provider
Model-driven
Structural description in
Entity Data Model
Metadata shapes service
Relational
database Other
sources
Refining and Securing Services
Visibility


● Per-container
Per-container visibility
visibility control
control

● Read,
Read, Query and Write options
Query and Write options

Authentication


● Integrate
Integrate with
with hosting
hosting environment
environment

● ASP.NET,
ASP.NET, WCF
WCF oror custom
custom authentication
authentication schemes
schemes

Interceptors

● Execute
Execute before
before HTTP
HTTP GET/PUT/POST/DELETE
GET/PUT/POST/DELETE

● Enable
Enable validation, custom
validation, custom row-level
row-level security
security policies
policies

● Maintain the REST interface
Maintain the REST interface

Service Operations


● Custom
Custom entry
entry points,
points, e.g.
e.g. /MyTags?startDate='2007-01-01'
/MyTags?startDate='2007-01-01'

● Composable,
Composable, follow
follow URI
URI scheme
scheme
Modern Data-Driven Web Apps
AJAX integration
AJAX-friendly JSON format in services
Javascript library that integrates with the ASP.NET
AJAX toolkit

Silverlight support
.NET programming model for data services
Object based, LINQ enabled API
Code-gen entity types from metadata
"Traditional" Applications
Web applications
Data services client can be used in ASP.NET
ASP.NET data source control for accessing remote
services

Desktop applications
Fully-featured .NET client library
Same API in desktop and Silverlight environments
Readmap & Summary
Where do we go from here?
Beta 1 will ship in a few weeks
We sneaked a current build in the Mix DVD ;-)
RTM mid-2008

In summary…
Create and consume data services with a flexible
RESTful interface
Growing unified ecosystem of libraries & tools
Give it a try! Feedback is welcome :)
Looking Forward…
We’re looking at what we need to do next

“Astoria Offline” is one we’ve been exploring


Imagine if you could point to a data service and
say “take it offline”…
…we automatically create a SQL Server Compact database and
setup sync profiles for you
Then you write a regular “local” application

…well, almost that easy ;-)


Check out prototypes of this here at Mix
Related Content at Mix 2008
Sessions
Introducing SQL Server Data Services
Accessing Windows Live Services with AtomPub
Using the Microsoft Sync Framework and FeedSync
Building RESTful Real World Applications with the
ADO.NET Data Services Framework

Also check out the hands-on labs!


Resources
ADO.NET Data Services Framework
Site: http://astoria.mslivelabs.com
Blog: http://blogs.msdn.com/astoriateam
Forums:
http://forums.microsoft.com/MSDN/ShowForum.as
px?ForumID=1430&SiteID=1

Contact me
http://blogs.msdn.com/pablo
pablo.castro@microsoft.com
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not
be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

You might also like