Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema...

Preview:

Citation preview

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

WINDOWS COMMUNICATION

FOUNDATIONFabio Cozzolino

DotNetSidefabio@dotnetside.org

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Agenda

• Overview– SOA– L’ABC di WCF– I Behaviors

• WCF 4.0• REST– SOA vs REST

• WCF Tips & Tricks

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

SOA Tenets• Boundaries are Explicit• Services are Autonomous• Services Shares Schema and Contracts, not Classes or Types• Compatibility is Policy-Based

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Cos’è WCF?• Un framework unificato per lo sviluppo di applicazioni distribuite su piattaforma Windows• Rappresenta come Microsoft pensa SOA (Service-Oriented Architecture)• … ma non solo

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Caratteristiche di WCF• Comunicazioni basate sul concetto di messaggio• Interoperabilità• Indipendenza dal protocollo di trasporto e dalla formattazione del messaggio• Indipendenza dall’hosting• Servizi infrastrutturali pluggabili (sicurezza, transazioni, ecc…)• E’ un framework con un’architettura altamente estendibile

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Overview di WCF: L’ABC

• Un servizio WCF si basa su:– Un Address: DOVE– Un Binding: COME– Un Contract: COSA

• L’insieme costituisce l’Endpoint del servizio

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

EndPoint

Address, Binding, Contract

ConsumerConsumer ProviderProvider

Contract(cosa)

Contract(cosa)

Binding(come)

Binding(come)

Address(dove)

Address(dove)

CC BB AA AA BB CC

Messaggio

AA BB CC

AA BB CC

Behaviours

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Address• Identifica l’indirizzo del servizio specificando:– URL• http://www.mysite.com/myservice.svc• net.tcp://localhost:10101/myservice.svc• …

– Headers (opzionale)• E’ un’istanza di EndpointAddress

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Binding• COME comunichiamo con il servizio– il protocollo utilizzato (http, tcp, msmq, etc..)– le modalità di formattazione del messaggio (encoding)– le impostazioni di sicurezza (ws-security)– gli eventuali standard da utilizzare (ws-trust, ws-reliablemessaging, ws-atomic transaction,SOAP)– Ma anche sessioni e transazioni

• Esistono binding predefiniti ma possiamo crearne anche di personalizzati

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Contract• Identifica le informazioni scambiate dal servizio• Esistono tre tipi di contratto:– Service contract (WSDL)– Message contract (SOAP) – Data contract (Xml Schema)

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Behaviors• Servizi infrastrutturali che modellano il comportamento del servizio• Attivabili nel codice e dal .config– Utile per le operazioni più delicate (sessioni, transazioni, instancing, identity)– Per le politiche da adottare nello scambio dei messaggi (credenziali, throttling, auditing, serializzazione, affidabilità, ecc…)

• Possiamo creare behavior personalizzati:– Implementando le interfacce System.ServiceModel.IServiceBehavior– System.ServiceModel.IEndpointBehavior– System.ServiceModel.IContractBehavior– System.ServiceModel.IOperationBehavior

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

WCF Hosting

• Self-hosting– Qualsiasi altra applicazione (Console,WinForms,

etc..)– Posso utilizzare tutti i protocolli previsti da WCF

• Internet Information Services– IIS 6 solo http– IIS 7 con Windows Activation Services:• net.tcp, net.msmq, etc...

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

DEMOImplementazione di un servizio in WCF

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Windows Communication Foundation 4.0

• Configuration-free services• Service Discovery with WS-Discovery• Routing Service• Event Tracing for Windows

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Endpoint Configuration in 3.x

vdir2

Web.config

Echo.svc

A B C

Service

http://host

vdir2

vdir1

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Default Endpoints

Echo.svc

A B C

Service

Scheme Binding

http:// BasicHttpBinding

… …

Protocol Mapping

ServiceHost.AddDefaultEndpoints()

vdir2

Echo.svc

http://host

vdir2

vdir1

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livelloWeb.

config

Default Bindings

A B C

Service

vdir2

Echo.svc

http://host

vdir2

vdir1

<system.serviceModel> <bindings> <basicHttpBinding> <binding name="" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/> </basicHttpBinding> </bindings></system.serviceModel>

Gli endpoints di tipo BasicHttpBinding utilizzano la configurazione dal default binding che recuperano nella gerarchia dei file di configurazione

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Web.config

Default Behaviors

A B C Bv

Service

vdir2

Echo.svc

http://host

vdir2

vdir1

<system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceThrottling maxConcurrentCalls="32"/> </behavior> </serviceBehaviors> </behaviors></system.serviceModel>

Un servizio o un endpoint ottengono il behavior di default recuperandolo dalla gerarchia dei file di configurazione

Web.config

Otteniamo un merge dei behaviour ereditati con i behaviour del config corrente

Bv

<system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors></system.serviceModel>

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

ROUTING SERVICE IN WCF 4.0

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Routing Service

• Dispatching dei messaggi basato su filtri• Protocol and security bridging• Mapping delle eccezioni• Ho a disposizione un set predefinito di filtri:

Filter On MessageFilter

Action ActionMessageFilter

Address header AddressMessageFilter

Address header – longest prefix matching AddressPrefixMessageFilter

Endpoint Name EndpointNameMessageFilter

No Filter – matches everything MatchAllMessageFilter

Logical And of two filters StrictAndMessageFilter

XPath expression XPathMessageFilter

Custom Custom

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Message Routing

Client

HospitalService

RoutingService

Lab Service

Action = http://healthcare/labservice

Action = http://healthcare/hospitalservice

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Protocol Bridging

Client ServiceRoutingService

BasicHttp Net.TcpSOAP 1.1 SOAP 1.2

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Security

Client ServiceRoutingService

Message sent usingClient Identity

Message sent usingRouting Service IdentityMessage sent usingClient Identity

Impersonation using WindowsIdentityToken

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Error Handling

Client

BackupLab

Service

RoutingService

LabService

MessageFilter Endpoint AlternateEndpoints

action == http://healthcare/LabService

LabService BackupLabService

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

WS-DISCOVERY IN WCF 4.0

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Discovery

• Consente la pubblicazione di un endpoint di un servizio e la ricerca utilizzando criteri ben definiti– Trova servizi disponibili– Riduce la configurazione– Semplice modifica della location– Applicazioni dinamiche

• WS-Discovery – e’ uno standard interoperabile per la definizione del protocollo– Ad-hoc Discovery– Managed Discovery

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Ad-hoc Discovery

Hello

Hello

Chat App:Steve

Chat App:Ed

Chat App:Jurgen

Hello

Steve Online

Steve Online

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Ad-hoc Discovery

Chat App:Steve

Chat App:Ed

Chat App:Jurgen Probe

Probe

Probe ProbeMatch

ProbeMatch

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Ad-hoc Discovery

Bye

Bye

Chat App:Steve

Chat App:Ed

Chat App:Jurgen

Bye

Steve Offline

Steve Offline

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Managed Discovery

Probe

ProbeHello

Probe

Hello

ProbeMatch

Jurgen

Chat App:Jurgen

Chat App:Steve

Proxy Available

Discovery Proxy

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Discovery Message Parts

• Types – Lista di xs:QName – Contratti richiesti dal client o comunque supportati dal servizio destinatario

• Scopes– Lista di xs:anyURI– Scopes richiesti dal client o previsti dal servizio destinatario

• EndpointReference– wsa:EndpointReference– EndpointReference del servizio destinatario

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

DEMOWCF 4.0

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

What is REST?

• Representional State Transfer• E’ principalmente uno stile architetturale, non una

specifica• Importanza alla risorsa (Content+Capabilities)• Utilizzo di tecnologie esistenti:

– HTTP• Http Methods e Status Codes = Uniform Interface

– Domain-neutral data-oriented formats• XML, JSON, Atom/Atom Publishing

• Le risorse vengono identificate attraverso l’utilizzo di URI– Esempio:

• http://dotnetside.org/users/fabio• http://dotnetside.org/users

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

HTTP Methods

Method Descrizione

GET • Recupera una risorsa• E’ in sola lettura• Cacheable

PUT • Aggiorna una risorsa• Utilizzato anche per creare le risorse se il client ne conosce l’indirizzo remoto• Idempotent

DELETE • Cancella la risorsa specificata• Idempotent

POST • Crea una nuova risorsa• Unsafe

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

REST in WCF: WebGet e WebInvoke

• Due nuovi attributi per definire le operation di WCF• Definizione del metodo HTTP da utilizzare– WebGet permette operazioni in sola lettura– WebInvoke consente di modificare lo stato delle nostre

risorse• Definizione della URI collegata alla operation:

UriTemplate• Definizione del formato della richiesta e della

risposta– Attualmente supporta XML e JSON

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

REST in WCF: UriTemplate

• Consente di definire la struttura dell’URI e dei parametri

• Nell’URI definiamo anche dei placeholder che rappresentano i parametri del nostro metodo:

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

REST in WCF: WebHttpBinding

• Nuovo binding specifico per REST• Supporta esclusivamente il protocollo HTTP• Sicurezza solo a livello di trasporto (HTTPS)• Supporto per i seguenti formati:– XML– JSON– Binary

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

REST in WCF: WebServiceHost

• Estende il ServiceHost• Aggiunge le funzionalità necessarie per

l’esecuzione di servizi REST– Configurazione automatica del WebHttpBinding e

del WebHttpBehavior

• WebOperationContext– Accesso al contesto HTTP

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Improvements in WCF 4.0

• Gestione della cache con AspNetCacheProfile

• Generazione della pagina di Help

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

DEMODeveloping REST services with WCF

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

GRAZIE

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

Un grazie di cuore a tutti gli sponsor!

Fare clic per modificare lo stile del titolo

• Fare clic per modificare stili del testo dello schema– Secondo livello• Terzo livello

– Quarto livello» Quinto livello

GRAZIE PER L’ATTENZIONE

La vostra opinione per noi è fondamentale: compilate

il modulo di feedback!

Recommended