Upload
vitalia-lupi
View
217
Download
3
Embed Size (px)
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
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!