Progettare a basso consumo - Consumare è umano Sprecare è diabolico
Consumare e realizzare servizi REST per il web - unibo.it · Consumare e realizzare servizi REST...
-
Upload
nguyenkiet -
Category
Documents
-
view
214 -
download
0
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.