Introduzione a Windows Introduzione a Windows Communication Communication
FoundationFoundation
Pierre GreborioPierre GreborioPEWayPEWay
Microsoft MVP – Solutions ArchitectMicrosoft MVP – Solutions Architect
NotaNota
Tutto il codice che vediamo in Tutto il codice che vediamo in questa sessione è basato su WinFX questa sessione è basato su WinFX CTP di dicembre 2005CTP di dicembre 2005
WinFXWinFX
Che cos’è WCF ?Che cos’è WCF ?
E’ framework che permette di E’ framework che permette di sviluppare velocemente sviluppare velocemente applicazioni SOAapplicazioni SOA
Nasce dall’esperienza di:Nasce dall’esperienza di: ASP.NET Web ServicesASP.NET Web Services Web Services Enhancement (WSE)Web Services Enhancement (WSE) .NET Remoting.NET Remoting Enterprise Services (COM+)Enterprise Services (COM+) MSMQ (System.Messaging)MSMQ (System.Messaging)
Service modelService model
Client Service
EndpointEndpoint
Client Service
Endpoint
Endpoint
Endpoint
Endpoint Bv
Bv
Bv
““ABC”ABC”
Client Service
A B C A B C
A B C
A B C
Address Binding Contract
Bv
Bv
Bv
Behavior
Bv
Echo ServiceEcho Service
AddressAddress
E’ l’indirizzo del servizioE’ l’indirizzo del servizio E’ un’istanza di EndpointAddressE’ un’istanza di EndpointAddress Contiene:Contiene:
UriUri Identity (opzionale)Identity (opzionale) Headers (opzionale)Headers (opzionale)
BindingBinding
Contiene le informazioni di come il Contiene le informazioni di come il servizio cominichi con il mondoservizio cominichi con il mondo
Si occupa di transazioni, gestione Si occupa di transazioni, gestione della sessione, sicurezza,...della sessione, sicurezza,...
Esistono 8 tipi di binding predefinitiEsistono 8 tipi di binding predefiniti E’ possibile creare custom bindingE’ possibile creare custom binding
Binding predefinitiBinding predefinitiYes
ContractContract
Specifica che cosa il servizio Specifica che cosa il servizio comunica con il mondocomunica con il mondo
Vi sono tre tipi di contratto:Vi sono tre tipi di contratto: Service contract (ie. WSDL)Service contract (ie. WSDL) Message contract (ie. SOAP) Message contract (ie. SOAP) Data contract (ie. Xml Schema)Data contract (ie. Xml Schema)
Contract DuplexContract Duplex
ArchitetturaArchitettura
Applicazione
Service Model
Messaging
Architettura adattativaArchitettura adattativa
Codice
Transaction Behavior
CLR Type Integration
Instancing Behavior
SecurityChannel
TCP Transport
SecurityChannel
TCP Transport
Transaction Behavior
CLR Type Integration
Outgoing
Incoming
Service Model Layer Messaging Layer
Track BehaviorTrack Behavior
HostingHosting
Un servizio WCF può “vivere” in Un servizio WCF può “vivere” in differenti tipi di hostdifferenti tipi di host IIS (solo protocollo HTTP)IIS (solo protocollo HTTP) Windows application (Windows service, Windows application (Windows service,
console application, windows console application, windows application)application)
Web Application Service (IIS 7)Web Application Service (IIS 7)
SicurezzaSicurezza
WCF gestisce sia la sicurezza lato WCF gestisce sia la sicurezza lato server che lato clientserver che lato client
La gestione della sicurezza riguarda La gestione della sicurezza riguarda 5 temi:5 temi: Transfer securityTransfer security
Firma digitaleFirma digitale CrittorafiaCrittorafia AutenticazioneAutenticazione
Access controlAccess control AutorizzazioneAutorizzazione
AuditingAuditing
Transfer securityTransfer security
La sicurezza è gestibile a due livelli:La sicurezza è gestibile a due livelli: Transport (es. HTTPs)Transport (es. HTTPs) Message (es. WS-Security)Message (es. WS-Security)
Trasport mode è adatto per Trasport mode è adatto per l’interoperabilità ma è applicabile l’interoperabilità ma è applicabile solo point-to-pointsolo point-to-point
Message mode è end-to-end ma è Message mode è end-to-end ma è meno efficientemeno efficiente
E’ possibile applicarli entrambeE’ possibile applicarli entrambe
AutenticazioneAutenticazione
E’ basato sul concetto di E’ basato sul concetto di credenzialecredenziale
La credenziale è sia il dato che la La credenziale è sia il dato che la prova di possesso.prova di possesso.
Le credenziali si possono usare a Le credenziali si possono usare a due livelli:due livelli: Trasporto (None, Basic, Digest, Ntlm, Trasporto (None, Basic, Digest, Ntlm,
Windows, Certificate)Windows, Certificate) Messaggio (None, Windows, Messaggio (None, Windows,
Username, Certificate, Infocard)Username, Certificate, Infocard)
Who isWho is
AutorizzazioneAutorizzazione
L’autorizzazione è il processo di L’autorizzazione è il processo di verifica se un utente ha il permesso verifica se un utente ha il permesso di accedere ad una risorsadi accedere ad una risorsa
Si basa su attributi:Si basa su attributi: PrincipalPermissionAttributePrincipalPermissionAttribute
AuditingAuditing
WCF permette di loggare gli eventi WCF permette di loggare gli eventi legati alla sicurezza (successo e/o legati alla sicurezza (successo e/o fallimento)fallimento)
L’auditing avviene a due livelli:L’auditing avviene a due livelli: Servizio - durante l’autenticazione Servizio - durante l’autenticazione
dell’utentedell’utente Messaggio – durante la verifica della Messaggio – durante la verifica della
firma digitale e crittografiafirma digitale e crittografia
Who isWho is
AffidabilitàAffidabilità
Affidabilità significa:Affidabilità significa: Non perdo i messaggi per strada !Non perdo i messaggi per strada ! Viene rispettato l’ordine di invio.Viene rispettato l’ordine di invio. Non dipendo da problemi “esterni”Non dipendo da problemi “esterni”
WCF propone tre soluzioni:WCF propone tre soluzioni: CodeCode Reliable sessionReliable session TransazioniTransazioni
CodeCode
Si appoggia a MSMQSi appoggia a MSMQ L’operazione deve essere one-wayL’operazione deve essere one-way Disponibile anche senza connettivitàDisponibile anche senza connettività
MSMQMSMQ
Image TransferImage Transfer
Reliable sessionReliable session
Garantisce che i messaggi arrivino tutti Garantisce che i messaggi arrivino tutti a destinazionea destinazione
E’ possibile pretendere che l’ordine di E’ possibile pretendere che l’ordine di arrivo corrsisponda all’ordine di arrivo corrsisponda all’ordine di partenzapartenza<bindings> <wsHttpBinding> <binding name="Binding1">
<reliableSession enabled="true" ordered="true" />
</binding> </wsHttpBinding></bindings>
TransazioniTransazioni
Due modelli a confrontoDue modelli a confronto Transazioni atomicheTransazioni atomiche
Più semplicePiù semplice Fortemente accoppiatoFortemente accoppiato
CompensazioneCompensazione Più complessoPiù complesso Debolmente accoppiatoDebolmente accoppiato
Bisogna scegliere il modello in base al Bisogna scegliere il modello in base al contestocontesto
E’ basato sul protocollo E’ basato sul protocollo WS-AtomicTransactionWS-AtomicTransaction
Distributed TransactionDistributed Transaction
SessionSession
E’ possibile far uso delle sessioni E’ possibile far uso delle sessioni per mantenere uno “stato”per mantenere uno “stato”
L’uso della sessione deve essere L’uso della sessione deve essere gestito con il ciclo di vita del gestito con il ciclo di vita del servizioservizio
E’ possibile condividere la stessa E’ possibile condividere la stessa sessione fra più client sessione fra più client (SharedSession)(SharedSession)
SumSum
Diagnostica e monitoringDiagnostica e monitoring
Performance counterPerformance counter Classi ed eventi WMIClassi ed eventi WMI TracingTracing
MonitorMonitor
IntegrazioneIntegrazione
WCF è integrabile bidirezionalmente con:WCF è integrabile bidirezionalmente con: MSMQMSMQ ASP.NET XML web servicesASP.NET XML web services Enterprise Services (COM+)Enterprise Services (COM+)
E’ fondamentale definire in modo E’ fondamentale definire in modo corretto il binding ed il modello di corretto il binding ed il modello di serializzazioneserializzazione
Scrivendosi un custom channel è Scrivendosi un custom channel è possibile integrarsi con tutto:possibile integrarsi con tutto: .NET Remoting.NET Remoting Java RMIJava RMI
RiferimentiRiferimenti
Programming IndigoProgramming IndigoISBN ISBN 0-7356-2151-90-7356-2151-9
Forum ugidotnet.beta.winfxForum ugidotnet.beta.winfx http://windowscommunication.nethttp://windowscommunication.net http://msdn.microsoft.com/http://msdn.microsoft.com/
webservices/indigo/default.aspxwebservices/indigo/default.aspx