ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new...

28

Transcript of ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new...

Page 1: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query
Page 2: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

ADO.NET DATA SERVICES

Mike Taulty

Developer & Platform Group

Microsoft UK

[email protected]

http://www.miketaulty.com

Page 3: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Agenda

• Overview of ADO.NET Data Services

• Exposing Data Sources

– Custom data sources, LINQ to SQL, LINQ to Entities

• Building Clients

– .NET Clients, AJAX based clients

• More “advanced” topics

– Interception

– Service Operations

– Batching of operations

– Dealing with concurrency

Page 4: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Data Services – Overview

• Builds on top of WCF V3.5

• Provides new functionality

– CRUD access to data over RESTful web services

– Built-in URI-based query syntax

– Client-side libraries for .NET, AJAX and Silverlight

• Status

– In VS 2008 Service Pack 1, Ships Summer 2008

– Current version is in Sp1 Beta 1 but has been through

various previews

Page 5: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

RESTful Web Services?

Resources

Res 1

Res 2

Res 3

Res 4

HTTP Request

URL

VERB

Payload

HTTP Response

Status

GET

POST

PUT

DELETEXML JSON

Payload

XML JSON

Page 6: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

RESTful?

• REpresentational State Transfer

– Server-side resources identified by a URI

– Access is over HTTP, verb tied to action

• GET to read the value of a resource

• POST to create a new resource

• PUT to update an existing resource

• DELETE to delete a resource

– Returned data is “plain” – XML or JSON

• Is this “the death of SOAP”?

Page 7: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Data? What Kind of Data?

• Provide a type with public properties

which are IQueryable<T>

– Some rules about how T has to be formed

– Remember the extension method AsQueryable()

• Only get write access if your type

implements IUpdatable

• Works well with generated code from;

– ADO.NET Entity Framework (ObjectContext)

– LINQ to SQL (DataContext*)

Page 8: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOExposing Data with ADO.NET Data Services

Page 9: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

ADO.NET Entity Framework????

SQL Provider Oracle Provider ...

Entity Provider

Conceptual Model

Store Model

Map

ADO.NET API ORM API

Page 10: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOExposing EF Data with ADO.NET Data Services

Page 11: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Querying with ADO.NET Data Services

• URI based query mechanism

– http://myservice.svc/MyEntitySet

• Supports the notion of navigating by

primary key

– MyEntitySet ( MyPrimaryKeyCol1, Col2, ... )

• Supports various operators

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

Page 12: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Operators for $filter

Logic

eq

ne

gt

gteq

lt

lteq

and

or

not

Arithmetic

add

sub

mul

div

mod

round

floor

ceiling

String

contains

endswith

startswith

length

indexof

insert

remove x 2

replace

substring

tolower

toupper

trim

concat

Date/Time

second

hour

minute

day

month

year

Type

isof

cast

Page 13: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOQuerying Data with the URI

Page 14: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Building Clients

• Services offer metadata

– MyService.svc/$metadata

• .NET clients made easier through a

proxy generation tool

– datasvcutil.exe

• AJAX clients made easier through a

script library

– Data Service AJAX Client Library

– Available as a download on Codeplex

Page 15: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOBuilding .NET and AJAX clients

Page 16: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Interception & Operations

• Possible to hook code into the dispatch

mechanism

• For queries we can write

– Query interceptors

• For modifications we can write

– Change interceptors

• Can also expose custom functionality

– Service Operations

– Useful for providing “canned” functionality, can be

parameterised

Page 17: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOInterception and Service Operations

Page 18: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Batching of Operations

“INSERT”

Customer 1

POST

Order 1

POST

Order 2

POST

Order N

POST

Page 19: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Batching of Operations

“INSERT”

Customer 1

Order 1

Order 2

Order N

POST

Page 20: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Batching of Operations

• Provides a mechanism to process a

batch

– 0 or more Query operations

– 0 or more [Create/Update/Delete] operations

• Uses multipart/mixed MIME type sent

to a $batch endpoint

• Use

– SaveChanges(SaveChangesOptions.Batch)

– ExecuteBatch()

Page 21: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOBatching of Operations

Page 22: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Managing Concurrency

GET

GET

Customer: ALFKI

Country: Spain

Customer: ALFKI

Country: Spain

Page 23: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Managing Concurrency

PUTCustomer: ALFKI

Country: UK

PUT

Customer: ALFKI

Country: Germany

Page 24: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Managing Concurrency

• Optimistic concurrency

• Attribute used to specify properties

– Not necessary for Entity Framework data

• Standard 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 )

Page 25: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

DEMOManaging Concurrency

Page 26: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

Resources

• New Data Developer Site

– http://www.datadeveloper.net

• Data Services (“Astoria”) Team Blog

– http://blogs.msdn.com/astoriateam

• My website

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

Page 27: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query

ADO.NET DATA SERVICES

Mike Taulty

Developer & Platform Group

Microsoft UK

[email protected]

http://www.miketaulty.com

Page 28: ADO.NET DATA SERVICES...Data Services –Overview•Builds on top of WCF V3.5 •Provides new functionality –CRUD access to data over RESTful web services–Built-in URI-based query