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