Introduzione a Windows
Communication Foundation
Pierre Greborio
PEWay
Microsoft MVP – Solutions Architect
Nota

Tutto il codice che vediamo in questa
sessione è basato su WinFX CTP di
dicembre 2005
WinFX
Che cos’è WCF ?
E’ framework che permette di sviluppare
velocemente applicazioni SOA
 Nasce dall’esperienza di:

ASP.NET Web Services
 Web Services Enhancement (WSE)
 .NET Remoting
 Enterprise Services (COM+)
 MSMQ (System.Messaging)

Service model
Client
Service
Endpoint
Endpoint
Client
Endpoint
Endpoint
Endpoint
Bv
Service
Bv
Bv
“ABC”
Client
Bv
Address
A
B
C
Binding
A
B
C
A
B
C
A
B
C
Contract
Bv
Service
Bv
Bv
Behavior
Echo Service
Address
E’ l’indirizzo del servizio
 E’ un’istanza di EndpointAddress
 Contiene:

Uri
 Identity (opzionale)
 Headers (opzionale)

Binding
Contiene le informazioni di come il
servizio cominichi con il mondo
 Si occupa di transazioni, gestione della
sessione, sicurezza,...
 Esistono 8 tipi di binding predefiniti
 E’ possibile creare custom binding

Binding predefiniti
Binding
Interop
Security
Default
Session
Transactions
Duplex
Streaming
BasicHttpBinding
Basic Profile 1.1
None
No
n/a
n/a
One-way only
WSHttpBinding
WS
Message
Optional
Yes
n/a
n/a
WSDualHttpBinding
WS
Message
Yes
Yes
Yes
n/a
NetTcpBinding
.NET
Transport
Optional
Yes
Yes
One-way only
NetNamedPipeBinding
.NET
Transport
Yes
Yes
Yes
One-way only
NetMsmqBinding
MSMQ
Transport
No
Yes
No
No
NetMsmqBinding
.NET
Transport
Yes
Yes
No
No
WSFederationBinding
WS-Federation
Message
Yes
Yes
No
Yes
Contract
Specifica che cosa il servizio comunica
con il mondo
 Vi sono tre tipi di contratto:

Service contract (ie. WSDL)
 Message contract (ie. SOAP)
 Data contract (ie. Xml Schema)

Contract Duplex
Architettura
Applicazione
Service Model
Messaging
Architettura adattativa
Outgoing
CLR Type
Integration
Transaction
Behavior
Codice
Security
Channel
TCP
Transport
Security
Channel
TCP
Transport
Incoming
CLR Type
Integration
Transaction
Behavior
Instancing
Behavior
Service Model Layer
Messaging Layer
Track Behavior
Hosting

Un servizio WCF può “vivere” in
differenti tipi di host
IIS (solo protocollo HTTP)
 Windows application (Windows service,
console application, windows application)
 Web Application Service (IIS 7)

Sicurezza
WCF gestisce sia la sicurezza lato server
che lato client
 La gestione della sicurezza riguarda 5
temi:


Transfer security
 Firma
digitale
 Crittorafia
 Autenticazione

Access control
 Autorizzazione

Auditing
Transfer security

La sicurezza è gestibile a due livelli:
Transport (es. HTTPs)
 Message (es. WS-Security)

Trasport mode è adatto per
l’interoperabilità ma è applicabile solo
point-to-point
 Message mode è end-to-end ma è meno
efficiente
 E’ possibile applicarli entrambe

Autenticazione
E’ basato sul concetto di credenziale
 La credenziale è sia il dato che la prova
di possesso.
 Le credenziali si possono usare a due
livelli:

Trasporto (None, Basic, Digest, Ntlm,
Windows, Certificate)
 Messaggio (None, Windows, Username,
Certificate, Infocard)

Who is
Autorizzazione
L’autorizzazione è il processo di verifica
se un utente ha il permesso di accedere
ad una risorsa
 Si basa su attributi:


PrincipalPermissionAttribute
Auditing
WCF permette di loggare gli eventi legati
alla sicurezza (successo e/o fallimento)
 L’auditing avviene a due livelli:

Servizio - durante l’autenticazione
dell’utente
 Messaggio – durante la verifica della firma
digitale e crittografia

Who is
Affidabilità

Affidabilità significa:
Non perdo i messaggi per strada !
 Viene rispettato l’ordine di invio.
 Non dipendo da problemi “esterni”


WCF propone tre soluzioni:
Code
 Reliable session
 Transazioni

Code
Si appoggia a MSMQ
 L’operazione deve essere one-way
 Disponibile anche senza connettività

MSMQ
MSMQ
Image Transfer
Reliable session
Garantisce che i messaggi arrivino tutti a
destinazione
 E’ possibile pretendere che l’ordine di
arrivo corrsisponda all’ordine di partenza

<bindings>
<wsHttpBinding>
<binding name="Binding1">
<reliableSession enabled="true"
ordered="true" />
</binding>
</wsHttpBinding>
</bindings>
Transazioni

Due modelli a confronto

Transazioni atomiche
 Più
semplice
 Fortemente accoppiato

Compensazione
 Più
complesso
 Debolmente accoppiato
Bisogna scegliere il modello in base al
contesto
 E’ basato sul protocollo
WS-AtomicTransaction

Distributed Transaction
Session
E’ possibile far uso delle sessioni per
mantenere uno “stato”
 L’uso della sessione deve essere gestito
con il ciclo di vita del servizio
 E’ possibile condividere la stessa
sessione fra più client (SharedSession)

Sum
Diagnostica e monitoring
Performance counter
 Classi ed eventi WMI
 Tracing

Monitor
Integrazione

WCF è integrabile bidirezionalmente con:





MSMQ
ASP.NET XML web services
Enterprise Services (COM+)
E’ fondamentale definire in modo corretto il
binding ed il modello di serializzazione
Scrivendosi un custom channel è possibile
integrarsi con tutto:


.NET Remoting
Java RMI
Riferimenti

Programming Indigo
ISBN 0-7356-2151-9
Forum ugidotnet.beta.winfx
 http://windowscommunication.net
 http://msdn.microsoft.com/webservices/i
ndigo/default.aspx

Scarica

Slide 1 - Microsoft