The document discusses Project "Astoria", which aims to create and consume data services with a flexible RESTful interface using a unified ecosystem of libraries and tools. It describes key aspects of Astoria including its use of HTTP, a uniform URL syntax, support for multiple representations, an underlying entity data model, addressing and accessing entities and members, presentation options, and integration with AJAX, Silverlight, and web/desktop applications. The document invites readers to try Astoria and provide feedback as it progresses toward beta and RTM releases in 2008.
2. 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!
3. HTML + Javascript DLL + XAML Mashup UI
Data (XML,JSON,…) Data (XML,JSON,…) Data (XML,JSON,…) Data
Feeds
AJAX Silverlight Online Mashups
Applications Applications Services
4. 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
5. 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
6. 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
7. HTTP
Create services directly
Hosting/HTTP listener
from Visual Studio
Service Runtime
Various data sources IQueryable [+ IUpdatable]
Entity Framework
Data Access Layer
LINQ providers
Entity Custom LINQ
provider
Framework
Model-driven
Structural description in
Entity Data Model
Metadata shapes service
Relational
Other
database
sources
8. Visibility
• Per-container visibility control
• Read, Query and Write options
Authentication
• Integrate with hosting environment
• ASP.NET, WCF or custom authentication schemes
Interceptors
• Execute before HTTP GET/PUT/POST/DELETE
• Enable validation, custom row-level security policies
• Maintain the REST interface
Service Operations
• Custom entry points, e.g. /MyTags?startDate='2007-01-01'
• Composable, follow URI scheme
9. 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
10. 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
11. 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 :)
12. 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
13. 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!
14. ADO.NET Data Services Framework
Site: http://astoria.mslivelabs.com
Blog: http://blogs.msdn.com/astoriateam
Forums:
http://forums.microsoft.com/MSDN/ShowForum
.aspx?ForumID=1430&SiteID=1
Contact me
http://blogs.msdn.com/pablo
pablo.castro@microsoft.com