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 Client Service Endpoint Bv Endpoint Bv Endpoint Endpoint Bv
“ABC” Client Service Address Binding Contract Behavior A B C Bv A B C
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 One-way only WSHttpBinding WS Message Optional Yes WSDualHttpBinding NetTcpBinding .NET Transport NetNamedPipeBinding NetMsmqBinding MSMQ WSFederationBinding WS-Federation
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 14
Architettura Applicazione Service Model Messaging
Architettura adattativa Outgoing CLR Type Integration Transaction Behavior Security Channel TCP Transport Codice Incoming CLR Type Integration Transaction Behavior Instancing Behavior Security Channel TCP Transport Service Model Layer Messaging Layer
Track Behavior 17
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 22
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 25
Affidabilità Affidabilità significa: WCF propone tre soluzioni: 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 27
Image Transfer 28
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 31
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 33
Diagnostica e monitoring Performance counter Classi ed eventi WMI Tracing 34
Monitor 35
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 36
Riferimenti Programming Indigo ISBN 0-7356-2151-9 Forum ugidotnet.beta.winfx http://windowscommunication.net http://msdn.microsoft.com/webservices/indigo/default.aspx 37