ADO.NET Data Services

Post on 17-Dec-2014

1,652 views 2 download

Tags:

description

ADO.NET Data Services

transcript

1

ADO.NET Data Services

Mike TaultyDeveloper & Platform GroupMicrosoft LtdMike.Taulty@microsoft.com http://www.miketaulty.com

Agenda

The core bits that we’ll demoOverview of ADO.NET Data ServicesExposing data sourcesBuilding clientsIntercepting the server-side dispatch process

The extra bits that we’ll talk aboutDealing with batched operationsDealing with concurrency

Data Services – Overview

Provides new functionalityCRUD access to data over RESTful web servicesBuilt-in URI-based query syntaxClient-side libraries for .NET, AJAX and Silverlight

Builds on top of WCF V3.5Status

In VS 2008 Service Pack 1, Ships Summer 2008Current version is in Sp1 Beta 1 but has been through various previews

RESTful Web Services?

Resources

Res 1

Res 2

Res 3

Res 4

HTTP RequestURL

VERBPayload

HTTP Response

Status

GETPOSTPUT

DELETEXML JSON

Payload

XML JSON

RESTful?

REpresentational State TransferServer-side resources identified by a URIAccess is over HTTP, verb tied to action

GET to read the value of a resourcePOST to create a new resourcePUT to update an existing resourceDELETE to delete a resource

Returned data is “plain” – XML or JSONIs this “the death of SOAP”?

Data? What Kind of Data?

Provide a type with public properties which are IQueryable<T>

Some rules about how T has to be formedRemember the extension method AsQueryable()

Only get write access if your type implements IUpdatableWorks well with generated code from;

ADO.NET Entity Framework (ObjectContext)LINQ to SQL (DataContext*)

7

Exposing Data

ADO.NET Entity Framework ?

SQL Provider Oracle Provider ...

Entity Provider

Conceptual Model

Store Model

Map

ADO.NET API ORM API

9

Using Entity Framework Data

Querying with Data Services

URI based query mechanismhttp://myservice.svc/MyEntitySet

Supports the notion of navigating by primary key

MyEntitySet ( MyPrimaryKeyCol1, Col2, ... )Supports various operators

$orderby, $top, $skip, $expand, $filter, $value

Operators for $filter

12

Querying with the URI

Building Clients

Services offer metadataMyService.svc/$metadata

.NET clients made easier through a proxy generation tool

datasvcutil.exeUseful for both regular .NET clients & Silverlight

AJAX clients made easier through a script library

“Data Service AJAX Client Library”Available as a download on Codeplex

14

Building Clients

Interception & Operations

Possible to hook code into the frameworkFor queries we can write

Query interceptorsFor modifications we can write

Change interceptorsCan also expose custom functionality

Service OperationsUseful for providing “canned” functionality, can be parameterised

16

Interception, Operations

Batching of Operations

“INSERT”

Customer 1

POST

Order 1

POST

Order 2

POST

Order N

POST

Batching of Operations

“INSERT”

Customer 1

Order 1

Order 2

Order N

POST

Batching of Operations

Provides a mechanism to process a batch0 or more Query operations0 or more [Create/Update/Delete] operations

Uses multipart/mixed MIME type sent to a $batch endpointUse

SaveChanges(SaveChangesOptions.Batch)ExecuteBatch()

Managing Concurrency

GET

GET

Customer: ALFKICountry: Spain

Customer: ALFKICountry: Spain

Managing Concurrency

PUTCustomer: ALFKICountry: UK

PUTCustomer: ALFKICountry: Germany

Managing Concurrency

Optimistic concurrencyAttribute used to specify properties

Not necessary for Entity Framework dataStandard HTTP protocol used

eTags used to send to client ( in XML if necessary )HTTP If-match headers used to check when PUT/DELETE occurs ( 412 returned for failure )

Resources

New Data Developer Sitehttp://www.datadeveloper.net

Data Services (“Astoria”) Team Bloghttp://blogs.msdn.com/astoriateam

My website http://www.miketaulty.com ( search Data Services )

© 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.