430 likes | 689 Views
WINDOWS COMMUNICATION FOUNDATION. Fabio Cozzolino DotNetSide fabio@dotnetside.org. Agenda. Overview SOA L’ABC di WCF I Behaviors WCF 4.0 REST SOA vs REST WCF Tips & Tricks. Boundaries are Explicit Services are Autonomous Services Shares Schema and Contracts, not Classes or Types
E N D
WINDOWS COMMUNICATION FOUNDATION Fabio CozzolinoDotNetSide fabio@dotnetside.org
Agenda • Overview • SOA • L’ABC di WCF • I Behaviors • WCF 4.0 • REST • SOA vs REST • WCF Tips & Tricks
Boundaries are Explicit Services are Autonomous Services Shares Schema and Contracts, not Classes or Types Compatibility is Policy-Based SOA Tenets
Un framework unificato per lo sviluppo di applicazioni distribuite su piattaforma Windows Rappresenta come Microsoft pensa SOA (Service-OrientedArchitecture) … ma non solo Cos’è WCF?
Comunicazioni basate sul concetto di messaggio Interoperabilità Indipendenza dal protocollo di trasporto e dalla formattazione del messaggio Indipendenza dall’hosting Servizi infrastrutturali pluggabili (sicurezza, transazioni, ecc…) E’ un framework con un’architettura altamente estendibile Caratteristiche di WCF
Overview di WCF: L’ABC • Un servizio WCF sibasasu: • Un Address: DOVE • Un Binding: COME • Un Contract: COSA • L’insiemecostituiscel’Endpoint del servizio
C B A A A A B B B C C C Address, Binding, Contract Behaviours Messaggio Consumer Provider EndPoint Address (dove) Contract (cosa) Binding (come)
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 Address
COME comunichiamo con il servizio ilprotocolloutilizzato (http, tcp, msmq, etc..) le modalitàdiformattazione del messaggio (encoding) le impostazionidisicurezza (ws-security) glieventuali standard dautilizzare (ws-trust, ws-reliablemessaging, ws-atomic transaction,SOAP) Ma anche sessioni e transazioni Esistono binding predefiniti ma possiamo crearne anche di personalizzati Binding
Identifica le informazioni scambiate dal servizio Esistono tre tipi di contratto: Service contract (WSDL) Message contract (SOAP) Data contract (Xml Schema) Contract
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 Behaviors
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...
Windows Communication Foundation 4.0 • Configuration-free services • Service Discovery with WS-Discovery • Routing Service • Event Tracing for Windows
Endpoint Configuration in 3.x Service http://host vdir1 A B C vdir2 vdir2 Echo.svc Web.config
Default Endpoints Service ServiceHost.AddDefaultEndpoints() http://host vdir1 A B C vdir2 vdir2 Protocol Mapping Echo.svc Echo.svc
Default Bindings <system.serviceModel> <bindings> <basicHttpBinding> <binding name=""maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/> </basicHttpBinding> </bindings> </system.serviceModel> Service http://host vdir1 A B C vdir2 Web.config vdir2 Gli endpoints ditipoBasicHttpBindingutilizzano la configurazionedal default binding cherecuperanonellagerarchiadei file diconfigurazione Echo.svc
Default Behaviors <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceThrottlingmaxConcurrentCalls="32"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceMetadatahttpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> http://host Web.config Service vdir1 A B C vdir2 vdir2 Bv Echo.svc Bv Un servizio o un endpoint ottengonoil behavior di default recuperandolodallagerarchiadei file diconfigurazione Otteniamo un merge deibehaviourereditati con ibehaviour del configcorrente Web.config
Routing Service • Dispatching dei messaggi basato su filtri • Protocol and security bridging • Mapping delle eccezioni • Ho a disposizione un set predefinito di filtri:
Message Routing Lab Service Action = http://healthcare/labservice Client Routing Service HospitalService Action = http://healthcare/hospitalservice
Protocol Bridging Client Service Routing Service BasicHttp Net.Tcp SOAP 1.1 SOAP 1.2
Security Client Service Routing Service Message sent usingRouting Service Identity Message sent usingClient Identity Message sent usingClient Identity Impersonation using WindowsIdentityToken
Error Handling Lab Service Client Routing Service BackupLab Service
Discovery • Consente la pubblicazionedi un endpoint di un servizio e la ricercautilizzandocriteribendefiniti • Trovaservizidisponibili • Riduce la configurazione • Semplicemodificadella location • Applicazionidinamiche • WS-Discovery – e’ uno standard interoperabile per la definizione del protocollo • Ad-hoc Discovery • Managed Discovery
Ad-hoc Discovery Steve Online Hello Hello Hello Steve Online Chat App:Steve Chat App:Ed Chat App:Jurgen
Ad-hoc Discovery ProbeMatch ProbeMatch Probe Probe Probe Chat App:Steve Chat App:Ed Chat App:Jurgen
Ad-hoc Discovery Steve Offline Bye Bye Bye Steve Offline Chat App:Steve Chat App:Ed Chat App:Jurgen
Managed Discovery ProbeMatch Probe Probe Hello Probe Hello Proxy Available Chat App:Steve DiscoveryProxy Chat App:Jurgen
Discovery Message Parts • Types • Listadixs:QName • Contrattirichiestidal client o comunquesupportatidalserviziodestinatario • Scopes • Listadixs:anyURI • Scopes richiestidal client o previstidalserviziodestinatario • EndpointReference • wsa:EndpointReference • EndpointReferencedel serviziodestinatario
WCF 4.0 DEMO
What is REST? • Representional State Transfer • E’ principalmente uno stile architetturale, non una specifica • Importanza alla risorsa (Content+Capabilities) • Utilizzo di tecnologie esistenti: • HTTP • Http Methods e Status Codes = Uniform Interface • Domain-neutral data-oriented formats • XML, JSON, Atom/Atom Publishing • Le risorse vengono identificate attraverso l’utilizzo di URI • Esempio: • http://dotnetside.org/users/fabio • http://dotnetside.org/users
REST in WCF: WebGet e WebInvoke • Due nuovi attributi per definire le operation di WCF • Definizione del metodo HTTP da utilizzare • WebGet permette operazioni in sola lettura • WebInvoke consente di modificare lo stato delle nostre risorse • Definizione della URI collegata alla operation: UriTemplate • Definizione del formato della richiesta e della risposta • Attualmente supporta XML e JSON
REST in WCF: UriTemplate • Consente di definire la struttura dell’URI e dei parametri • Nell’URI definiamo anche dei placeholder che rappresentano i parametri del nostro metodo:
REST in WCF: WebHttpBinding • Nuovo binding specifico per REST • Supporta esclusivamente il protocollo HTTP • Sicurezza solo a livello di trasporto (HTTPS) • Supporto per i seguenti formati: • XML • JSON • Binary
REST in WCF: WebServiceHost • Estende il ServiceHost • Aggiunge le funzionalità necessarie per l’esecuzione di servizi REST • Configurazione automatica del WebHttpBindinge del WebHttpBehavior • WebOperationContext • Accesso al contesto HTTP
Improvements in WCF 4.0 • Gestionedella cache con AspNetCacheProfile • Generazionedellapaginadi Help
La vostraopinione per noi è fondamentale: compilateil modulo di feedback! GraZIE PER L’ATTENZIONE