Sviluppare applicazioni distribuite con WCF, Windows Phone 7 e Silverlight Fabio Cozzolino Vito Arconzo Chi Sono • Software Architect and Developer in CompuGROUP Medical Italia • Microsoft Connected System Developer MVP • Presidente di DotNetSide • Contatti – [email protected] – dotnetside.org/blogs/fabio – twitter.com/fabiocozzolino Chi E’ • • • • Senior .NET Developer & Consultant Microsoft MVP Client Application Vice-Presidente (operaio) DotNetSide Contatti – [email protected] – dotnetside.org/blogs/vito – twitter.com/vitoarconzo Agenda • Sviluppare applicazioni distribuite • Applicazione Reale «Bookshelf» • Creazione dei servizi – WCF • Sviluppo dei clients – Silverlight – Windows Phone 7 Architetture Distribuite Windows Communication Foundation • E’ il framework proposto da Microsoft per lo sviluppo di servizi – Service-Oriented Architecture – REST • Estremamente semplice da utilizzare • Potenzialità estreme • Flessibilità Address, Binding, Contract Behaviours Messaggio C B A Consumer Binding (come) B C A B C A B C Provider Contract (cosa) EndPoint Address (dove) A 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 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 Contract • Identifica le informazioni scambiate dal servizio • Esistono tre tipi di contratto: – Service contract (WSDL) – Message contract (SOAP) – Data contract (Xml Schema) 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 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... DEMO BOOKSHELF SERVICES DOMANDE?