Consumare e realizzare servizi REST per il web - unibo.it · Consumare e realizzare servizi REST...

Post on 18-Feb-2019

214 views 0 download

Transcript of Consumare e realizzare servizi REST per il web - unibo.it · Consumare e realizzare servizi REST...

Consumare e realizzareservizi REST per il web

Pietro Brambatiblogs.msdn.com/pietrobr

Developer Evangelist, Microsoft

Agenda

Introduzione al .NET Framework

Parte 1:

Windows Communication Foundation

Parte 2:

REST

ADO.NET Data Services

Architettura .NET Framework 3.5

Base Class Library

Common Language Runtime

VB C++ C#V

isu

al S

tud

io 2

00

8 S

P1

F# …

Web Services

ASP.NET

User

Interface

WPF WCF WF WCS

PARTE 1

Evoluzione delle architetture distribuite

Clients

PCs

Web

Web Services

TMainframe

DBMSBusiness

Logic

BrowserMulti-Tier DBMSBusiness

Logic

Service-

Oriented DBMSBusiness

Logic Business

Logic

GUIClient/ServerDBMS

Business

Logic

Business

Logic

WCF Obbiettivi

Fornire un modello unificato di programmazione per diverse tecnologie e API

ASP.NET Web Service

Interoperabilità tra piattaforme

.NET Remoting

Comunicazione efficiente tra applicazioni .NET

Enterprice Services (successore di COM+)

Servizi di Transazionalità

Web Services Enhancements (WSE)

WS-*

Microsoft Message Queuing (MSMQ)

Per applicazioni asincrone, non sempre connesse

Implementa le best practices per costruire applicazioni distribuite basate sui principi della service orientation

Interoperabile con applicazioni di altre piattaforme con ampiosupporto per WS*-Architecture

WCF: Scenari architetturali

WCF

Applicazione

Processo

Computer Windows Piattaforme NON- Windows

WCF

Applicazione

Processo

WCF

Applicazione

Processo

Computer Windows

Comunicazione tra

processi

Comunicazione tra

processi remoti

Comunicazione tra

piattaforme eterogenee

WS-*

Foundation

Applicazioni e Infrastruttura

Trasporto

Connected Applications Management

BusinessProcess

Security

Security

Trust

Secure Conversation

Messaging (SOAP, Addressing, MTOM)

XML (XML, XSD, XPath)

Me

tad

ata

(WS

DL

, P

oli

cy,

Dis

co

very

, M

EX

)

HTTP TCP SMTP …

Reliability

Reliable Messaging

Transactions

Atomic Transaction

Coordination

Business Activity

Endpoint

Caller Service

MessageEndpoint Endpoint

Endpoint

Address, Binding, Contract

Caller Service

MessageABC A B C

A B C

Address Binding Contract

(Where) (How) (What)

Behaviors

Caller Service

MessageABC A B C

A B C

Bv Bv

Bv Bv

Metadata

Runtime

Caller Service

MessageABC A B C

A B C

Metadata

Bv Bv

Bv Bv

ProxyServiceHost<T>()

Address, Contract, Binding

Client Code Service Code

Proxy Dispatcher

Protocol #1 Protocol #1

Encoder

Transport

Encoder

Transport

Message

Protocol #n Protocol #n

Binding Binding

Address

Contract

DEMO

PARTE 2

Applicazioni, protocolli e formati

AJAX

app

RIA

Mash-up

Client

HTML e Javascript

Plug-in

binary

HTML iframe

Middle-Tier Data-Tier

Internet/Intranet Service

REST: Representational State Transfer

Architectural-style

Tutto accedibile via Uri

Data Centric

Stateless

Si presta al caching

ClientAPI

Service

GET api.myservice.it/Customer/1/ ….

REST vs SOAP

Si “pensa” e in termini di risorse

Interfaccia condivisa

Usa HTTP

Non richiede librerieparticolari

Sicurezza: https

Non esistonoequivalenze con WS-*

Si “pensa” in termini dioperazioni

Funzionalità diverse a seconda delleapplicazioni

Protocolli diversi(HTTP, TCP)

Richiede un client SOAP

Standards WS-*

ADO.NET Data ServicesArchitettura

.NET Client

Library

AJAX

Client Library

Silverlight

Client Library

Servizio WCF

specializzato per

REST

Data Source Provider

Entity Framework

Custom LINQ provider

Relational database

Other sources

Data Services Runtime

Hosting/HTTP Listener

IQueryable [+ IUpdatable]

HTTP

Other Platform

(http)

ADO.NET Entity FrameworkIn una slide

Evoluzione di ADO.NET

Entità logiche più che tabelle

Un modello concettuale dei dati

Eg: un oggetto Customer, su db 1 o più tabelle

Disaccoppia lo schema del database dall‟applicazione

Supporto di diversi DBMS

tramite provider di terze parti (Oracle, MySQL, …)

Un nuovo designer Visual Studio 2008 SP1

In: “PGPD”, out: JSON,AtomPubs

HTTP Request

Create POST

Read GET

Update PUT (MERGE)

Delete DELETE

HTTP Response

JSON compatto (AJAX style)

AtomPubs XML style

DEMOExploring ADO.NET Data Services

URL Conventions“Triviali” e non

Addressing entities e setsEntity-set /Customers

Single entity /Customers(„ALFKI‟)

Member access /Customers(1)/ContactName

Link traversal /Customers (1)/Orders

Deep access /Customers(1)/Orders(2)/ShippedDate

Raw value access /Customers(1)/Photo/$value

Sorting /Customers?$orderby=ContactName desc

Filtering /Classes?$filter=substringof(Name, „Math‟)

Paging /Students?$top=10&$skip=30

Inline expansion /Customers(„ALFKI‟)?$expand=Orders

Presentation options

http://msdn.microsoft.com/it-it/library/cc907912(en-us).aspx

Eager loading

“Per ogni cliente dammi gli ordini”Di default: “a richiesta”1. GET HTTP per /Customers2. GET HTTP per /Customers(„ALF‟)/Orders

Eager Loading1. GET HTTP /Customers?expand=OrdersChiamata Client

Finiamo il codice!

Sicurezza

AutenticazioneNessuno nuovo schema specifico

IIS, WCF+ASP.NET

AutorizzazioneChiusa di default per ogni richiesta HTTP

A livello di Entities

[ReadSingle, ReadMultiple, AllRead, Write*, WriteReplace, WriteDelete, WriteMerge,

All*]

A livello di ServiceOperation[None, ReadSingle, ReadMultiple, AllRead, All]

Validazione e Controllo degli Accessi

Per singola richiesta Interceptors

predicati componibili alla query inviata allostore

Per operazioni di Read QueryInterceptor

Validazione e Controllo degli Accessi

Per singola richiesta Interceptorspredicati componibili alla query inviata allostorePer Insert, Update, Delete ChangeInterceptor

DEMOControllo degli accessi

Concorrenza

Default : “last wins”

Optimistic Concurrency

if-*,eTag in HTTP 1.1 risoluzioni dei conflitti

Attributo [ETag] sulle Entità

Batch Requests

Più operazioni in una singola richiestaHTTP

in RIA per scenari alla “gestionale”

Modello Logico:

[0,*] Query Operation

[0,*] ChangeSet Operation (CUD)

Modello Fisico:

service.svc/$batch

Request: multipart/mixed MIMEhttp://blogs.msdn.com/astoriateam/archive/2008/04/06/batching-data-service-requests.aspx

Conclusione

WCF : libreria per realizzare applicazionidistribuite

Per scenari sia SOAP che REST

ADO.NET Data Services: specializzazionedi un servizio WCF per consumare risorseattraverso un‟interfaccia REST

© 2003-2008 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.