Professional Documents
Culture Documents
Pablo Castro
Software Architect
Microsoft Corporation
1 Year Later…
Project “Astoria” first announced in Mix 2007
Shared early prototypes, got tons of feedback
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
Just HTTP
●
Data as resources, HTTP methods to act on it
●
Leverage caching, proxies, authentication, …
●
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
●
● 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
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.