Post on 02-Jul-2015
Primo semestre 2009
in collaborazione con
Silverlight 20 Networking Explained
Tecniche di accesso alla rete con Silverlight 20
raquo Andrea Boschin
AgendaAgenda
wwwxedotnetorg 3
raquo Introduzionebull Networking basics
bull Cross domain policies
bull Tecniche di programmazione
raquo Strumentibull HttpWebRequest
bull WebClient
bull Web Services
raquo Tecniche Avanzatebull Sockets
bull Polling Duplex
raquo Strumenti a supportobull Serializzazione
bull Syndication
bull XamlReader
raquo Domande amp Risposte
AgendaAgenda
27022009 wwwxedotnetorg 4
raquo Silverlight ai minimi termini
bull Ersquo un plugin per il browserbull Funziona sui piugrave comuni browserbull Funziona sui piugrave comuni SObull Ha un supporto per il video molto efficacebull Si programma con XAML e linguaggi evoluti (C)
bull Ersquo una piattaforma per lo sviluppo di applicazioni
bull Una piattaforma per ldquoapplicazioni onlinerdquo richiede un eccellente supporto alla rete
bull Silverlight ha una serie di strumenti per lrsquoaccesso alla rete molto evoluti e di semplice utilizzo
wwwxedotnetorg 5
raquo Architettura
bull Lrsquoaccesso alla rete egrave mediato dal browser che contiene il plugin
bull Il plugin perciograve non egrave in grado di fare nulla di piugrave di quello che la sandbox del browser gli mette a disposizione
bull Questa scelta ha il vantaggio di condividere con il browser il contesto
bull Cachingbull Autenticazionebull Cookies
Introduzione
wwwxedotnetorg 6
raquo Limiti di HTTP
bull Supporto esclusivo a GET e POST
bull Header quasi completi sia standard che custom
bull HttpStatus limitato a 200 e 404 (attenzione)
bull Supporto al redirect solo su domini ldquoabilitatirdquo
Introduzione
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
Silverlight 20 Networking Explained
Tecniche di accesso alla rete con Silverlight 20
raquo Andrea Boschin
AgendaAgenda
wwwxedotnetorg 3
raquo Introduzionebull Networking basics
bull Cross domain policies
bull Tecniche di programmazione
raquo Strumentibull HttpWebRequest
bull WebClient
bull Web Services
raquo Tecniche Avanzatebull Sockets
bull Polling Duplex
raquo Strumenti a supportobull Serializzazione
bull Syndication
bull XamlReader
raquo Domande amp Risposte
AgendaAgenda
27022009 wwwxedotnetorg 4
raquo Silverlight ai minimi termini
bull Ersquo un plugin per il browserbull Funziona sui piugrave comuni browserbull Funziona sui piugrave comuni SObull Ha un supporto per il video molto efficacebull Si programma con XAML e linguaggi evoluti (C)
bull Ersquo una piattaforma per lo sviluppo di applicazioni
bull Una piattaforma per ldquoapplicazioni onlinerdquo richiede un eccellente supporto alla rete
bull Silverlight ha una serie di strumenti per lrsquoaccesso alla rete molto evoluti e di semplice utilizzo
wwwxedotnetorg 5
raquo Architettura
bull Lrsquoaccesso alla rete egrave mediato dal browser che contiene il plugin
bull Il plugin perciograve non egrave in grado di fare nulla di piugrave di quello che la sandbox del browser gli mette a disposizione
bull Questa scelta ha il vantaggio di condividere con il browser il contesto
bull Cachingbull Autenticazionebull Cookies
Introduzione
wwwxedotnetorg 6
raquo Limiti di HTTP
bull Supporto esclusivo a GET e POST
bull Header quasi completi sia standard che custom
bull HttpStatus limitato a 200 e 404 (attenzione)
bull Supporto al redirect solo su domini ldquoabilitatirdquo
Introduzione
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
AgendaAgenda
wwwxedotnetorg 3
raquo Introduzionebull Networking basics
bull Cross domain policies
bull Tecniche di programmazione
raquo Strumentibull HttpWebRequest
bull WebClient
bull Web Services
raquo Tecniche Avanzatebull Sockets
bull Polling Duplex
raquo Strumenti a supportobull Serializzazione
bull Syndication
bull XamlReader
raquo Domande amp Risposte
AgendaAgenda
27022009 wwwxedotnetorg 4
raquo Silverlight ai minimi termini
bull Ersquo un plugin per il browserbull Funziona sui piugrave comuni browserbull Funziona sui piugrave comuni SObull Ha un supporto per il video molto efficacebull Si programma con XAML e linguaggi evoluti (C)
bull Ersquo una piattaforma per lo sviluppo di applicazioni
bull Una piattaforma per ldquoapplicazioni onlinerdquo richiede un eccellente supporto alla rete
bull Silverlight ha una serie di strumenti per lrsquoaccesso alla rete molto evoluti e di semplice utilizzo
wwwxedotnetorg 5
raquo Architettura
bull Lrsquoaccesso alla rete egrave mediato dal browser che contiene il plugin
bull Il plugin perciograve non egrave in grado di fare nulla di piugrave di quello che la sandbox del browser gli mette a disposizione
bull Questa scelta ha il vantaggio di condividere con il browser il contesto
bull Cachingbull Autenticazionebull Cookies
Introduzione
wwwxedotnetorg 6
raquo Limiti di HTTP
bull Supporto esclusivo a GET e POST
bull Header quasi completi sia standard che custom
bull HttpStatus limitato a 200 e 404 (attenzione)
bull Supporto al redirect solo su domini ldquoabilitatirdquo
Introduzione
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
AgendaAgenda
27022009 wwwxedotnetorg 4
raquo Silverlight ai minimi termini
bull Ersquo un plugin per il browserbull Funziona sui piugrave comuni browserbull Funziona sui piugrave comuni SObull Ha un supporto per il video molto efficacebull Si programma con XAML e linguaggi evoluti (C)
bull Ersquo una piattaforma per lo sviluppo di applicazioni
bull Una piattaforma per ldquoapplicazioni onlinerdquo richiede un eccellente supporto alla rete
bull Silverlight ha una serie di strumenti per lrsquoaccesso alla rete molto evoluti e di semplice utilizzo
wwwxedotnetorg 5
raquo Architettura
bull Lrsquoaccesso alla rete egrave mediato dal browser che contiene il plugin
bull Il plugin perciograve non egrave in grado di fare nulla di piugrave di quello che la sandbox del browser gli mette a disposizione
bull Questa scelta ha il vantaggio di condividere con il browser il contesto
bull Cachingbull Autenticazionebull Cookies
Introduzione
wwwxedotnetorg 6
raquo Limiti di HTTP
bull Supporto esclusivo a GET e POST
bull Header quasi completi sia standard che custom
bull HttpStatus limitato a 200 e 404 (attenzione)
bull Supporto al redirect solo su domini ldquoabilitatirdquo
Introduzione
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 5
raquo Architettura
bull Lrsquoaccesso alla rete egrave mediato dal browser che contiene il plugin
bull Il plugin perciograve non egrave in grado di fare nulla di piugrave di quello che la sandbox del browser gli mette a disposizione
bull Questa scelta ha il vantaggio di condividere con il browser il contesto
bull Cachingbull Autenticazionebull Cookies
Introduzione
wwwxedotnetorg 6
raquo Limiti di HTTP
bull Supporto esclusivo a GET e POST
bull Header quasi completi sia standard che custom
bull HttpStatus limitato a 200 e 404 (attenzione)
bull Supporto al redirect solo su domini ldquoabilitatirdquo
Introduzione
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 6
raquo Limiti di HTTP
bull Supporto esclusivo a GET e POST
bull Header quasi completi sia standard che custom
bull HttpStatus limitato a 200 e 404 (attenzione)
bull Supporto al redirect solo su domini ldquoabilitatirdquo
Introduzione
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 7
raquo Accesso solo a dominio di origine
bull La limitazione egrave superabile ma con la collaborazione del destinatario (cross-domain-policy)
bull Lrsquoaccesso puograve essere Cross-domain Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti
bull La ricerca del dominio si basa sullrsquoorigine dello XAP
bull Partecipano protocollo dominio e portabull httpdomainportbull httpsdomainport
bull Il limite serve a evitare il ldquosea surfrdquo (Cross Site Forgery)
Introduzione
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 8
Cross Domain Table
Classi WebClient e HTTP
Classe Image classe MediaElement per download progressivi (supporti immagini ASX e cosigrave via)
File di origine XAML File dei tipi di carattere
Flussi multimediali
Allowed schemes HTTP HTTPS HTTP HTTPS FILE HTTP HTTPS FILE HTTP HTTPS FILE HTTP
Cross-scheme access Non consentito Non consentito Non consentito No Non consentito da
HTTPS
Cross-domain access
Richiede un file dei criteri di protezione Non consentito per
HTTPS
Consentito se diverso da HTTPS
Consentito se diverso da HTTPS
Non consentito Consentito se diverso
da HTTPS
Cross-zone access (on Windows)
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Non consentito da unarea Internet ad aree piugrave restrittive
Redirection allowed
Consentito allo stesso sito e schema
Consentito tra domini solo con un file dei
criteri di protezione
Consentito alla stesso schema e a siti uguali
o diversi Non consentito Non consentito Non consentito
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 9
raquo Cross Site Forgery
Il client chiede una pagina
Nella pagine viene inserito un url malizioso (es Immagine)
Lrsquourl viene richiamato dal client inviando i cookie etc
Se lrsquoutente casualmente si era autenticato ad un sito privato lrsquourl puograve causare operazioni illecite
Cross Site Forgery
Gli uri devono essere esplicitamente autorizzati con delle policy
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 10
raquo Cross Domain Policies
bull Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy
bull clientaccesspolicyxmlbull crossdomainxml (compatibile flash)
bull Se non trova almeno un file di policy solleva unrsquoeccezionebull httpdomainportdownloadsfilexmlbull httpdomainportclientaccesspolicyxmlbull httpdomainportcrossdomainxml
bull In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy
Cross Domain Policies
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 11
raquo clientaccesspolicyxml
ltxml version=10 encoding=utf-8gt
ltaccess-policygt
ltcross-domain-accessgt
ltpolicygt
ltallow-from http-request-headers=gt
ltdomain uri= gt
ltallow-fromgt
ltgrant-togt
ltresource path=filesashx include-subpaths=false gt
ltgrant-togt
ltpolicygt
ltcross-domain-accessgt
ltaccess-policygt
NB Ersquo bene specificare sempre le policy il piugrave possibile restrittive soprattutto in grant-to
Cross Domain Policies
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 12
raquo Programming Model
bull Lrsquoaccesso alla rete da Silverlight 20 egrave esclusivamente Asincrono
bull Il modello sincrono avrebbe causato problemi di ldquofreezerdquo del browser
bull La programmazione Asincrona complica un porsquo il codice
bull Lrsquouso accorto di delegate e lambda expression consente di semplificare di molto
Programming Model
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 13
raquo Semplificare il codice
bull Nel framework egrave presente la classe ActionltTgt (parente di FuncltTgt)
bull Possiamo specificare dei delegate che eseguano semplici operazioni in risposta
Asyncronous Tip 1
public DownloadFile(
int id
Actionltstringgt success
ActionltExceptiongt fail)
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 14
raquo Thread Marshaling
bull La programmazione asincrona implica lrsquouso di Thread
bull Il rientro dalla callback avviene in un thread diverso da quello della UI
bull Per evitare UnauthorizedAccessException bisogna fare il ldquomarshalingrdquo
Asyncronous Tip 2
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 15
raquo Tecniche di sincronizzazione
bull Uso di DispatcherBeginInvoke()bull Richiede sempre un riferimento ad un UIElement
bull Uso problematico perchegrave non egrave possibile verificare se si egrave realmente in un thread separato In questo caso fallisce senza senza eccezioni
bull Uso di SynchronizationContextCurrentbull Ritorna ldquonullrdquo se si egrave in un thread separato
bull Si puograve usare solo allrsquointerno del Thread della UI
bull Uso di AsyncOperationManagerbull Non necessita di un ldquoriferimentordquo ad un UIElement
bull Utile per sincronizzare allrsquointerno di classi di business prima di chiamare un delegate o sollevare un evento
Asyncronous Tip 2
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 16
raquo HttpWebRequest amp HttpWebResponse
bull Utile per avere il massimo controllo sul protocollo
bull Consente di forgiare la richiesta per esigenze speciali
bull Consente di specificare header e di fare upload di file
bull Attenzione Richiede il marshaling del thread nella risposta
HttpWebRequest
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 17
raquo WebClient
bull Si tratta della classe piugrave ldquocomodardquo per fare download
bull Ersquo meno generica e ha dei metodi specifici per determinate esigenze
bull DownloadStringAsyncbull OpenReadAsyncbull OpenWriteAsyncbull UploadStringAsync
bull Consente di specificare gli header
bull Consente di avere notifiche sul progredire del download
bull Non richiede sincronizzazioni di thread
WebClient
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 18
raquo Accesso a Web Services
bull Si tratta sicuramente di uno dei metodi preferenziali per lrsquoaccesso ai datibull Il proxy maschera il processo di comunicazionebull La serializzazionedeserializzazione sono giagrave implementate
bull Per accedere a ASMX e WCF si deve usare BasicHttpBinding
bull Sono supportati CustomBinding e PollingDuplexHttpBinding
bull Non egrave direttamente supportato WebHttpBinding ma lo si puograve usare mediante WebClient
bull Solo Trasporto HTTP (no binary)
bull Non richiede sincronizzazione di thread
WebServices
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 19
raquo Supporto ai protocolli
bull Supporta solo WS-I Basic Profile 10 e in particolare SOAP 11
bull I principali protocolli WS- non sono disponibili
bull WS-Security non egrave direttamente supportato ma si possono iniettare gli header manualmente
bull Lrsquouso di cookie e altri metodi di autenticazione egrave gestito dal browser
bull Non egrave possibile accedervi da Silverlight
bull Per questo egrave sconsigliabile ospitare i servizi in-domain nel sito che li utilizza
WebServices
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 20
raquo Serializzazione Deserializzazione
bull Oggetti complessi come i DataSet non sono supportati Se un servizio li espone si deve manipolare direttamente lrsquoXML
bull Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili
WebServices
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 21
raquo Accesso a Servizi REST
bull Silverlight supporta ADONET DataServices (giagrave ldquoAstoriardquo)
bull Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe
bull Grazie ad essi egrave possibile usare LINQ nelle applicazioni Siverlight
bull Il modello Asincrono complica un porsquo le cose
bull Crsquoegrave qualche limite nella complessitagrave dellrsquoObjectModel
ADONET Data Services
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 22
raquo Cosrsquoegrave REST
bull Indirizzobull Uri della risorsa cui si vuole accedere
bull Azionebull Attivitagrave da svolgere GET POST PUT DELETE
bull Rappresentazionebull Modalitagrave con cui si desidera accedere alla risorsa
(AtomPub o JSON)
ADONET Data Services
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 23
raquo Uso dei Socket
bull Ersquo utile in scenari dove si riceva un flusso di dati costante
bull Ersquo possibile per mezzo della classe Socket
bull Ersquo disponibile solo il protocollo TCP (no UDP)
bull Il set di porte va dalla 4502 alla 4534
bull Si usa un meccanismo a ldquorilanciordquo con SocketAsyncEventArgs
bull SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato
Socket
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 24
raquo Socket Server
bull Occorre gestire attraverso il canale la richiesta di clientaccesspolicyxml
bull Il client invia la richiesta ldquoltpolicy-file-requestgtrdquo
bull Il file clientaccesspolicyxml ha una apposita sezione
ltpolicygt
ltallow-fromgt
ltdomain uri=file gt
ltallow-fromgt
ltgrant-togt
ltsocket-resource port=4502-4506 protocol=tcp gt
ltgrant-togt
ltpolicygt
Socket Server
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 25
raquo PollingDuplexHttpBinding
bull Il polling egrave un metodo alternativo per raccogliere informazioni che cambiano continuamente
bull Dalla Beta 2 egrave stato introdotto un nuovo binding in WCF per supportare questo scenario
bull Il meccanismo implica lrsquouso di un Callback Contract
bull Ersquo nettamente piugrave efficiente di un polling ldquohandmaderdquo
bull Ersquo un porsquo complesso da configurare
Polling Duplex
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 26
raquo Come funziona PollingDuplexHttpBinding
bull In un polling classico il client egrave sempre disconnesso salvo il tempo necessario alla richiesta
bull Con il polling duplex il client egrave sempre connesso salvo il tempo di recuperare il timeout
bull Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout
bull I vantaggibull Crsquoegrave un solo processo di lavoro che notifica tutti i clientbull I client vengono aggiornati non appena il dato egrave disponibilebull Tutti i client sono sincronizzati
Polling Duplex
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 27
raquo Callback Contract
bull Il duplex implementa Async Pattern
bull Il client deve esporre un proprio contratto che verragrave usato dal server per notificare gli eventi
bull Il server usa lrsquoOperationContext per recuperare lrsquoistanza del contratto di callback e la memorizza
Polling Duplex
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 28
raquo PollingDuplexHttpBinding Server
bull Il server egrave molto complessobull Mantiene unrsquoanagrafica dei client connessi
bull Gestisce la concorrenza tra richieste e risposte
bull Gestisce il Fault dei canali per capire le disconnessioni
bull Lavora in background per decidere se notificare i client
bull Se non egrave ospitato da IISbull Implementa un ServiceHostbull Implementa un metodo per restituire le policy
Polling Duplex
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
27022009 wwwxedotnetorg 29
raquo Deserializzazione XML
bull XamlReaderbull Utile per caricare on-demand ldquopezzirdquo di User Interface
bull XmlSerializerbull Quando si deve caricare una gerarchia di oggetti completa
bull XDocumentbull Quando egrave necessario accedere a pochi valori in un documento XML
bull Syndicationbull Quando si devono consumare feed RSS 20 o ATOM 10
Consumare i dati
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
27022009 wwwxedotnetorg 30
raquo JavaScript Object Notation
bull Se si ha bisogno di un flusso di dati molto compatto JSON egrave lrsquoideale
bull SystemJsonbull Usa una gerarchia di oggetti che rappresenta gli elementi della
notazione Ha il difetto di non essere strong-typed
bull SystemRuntimeSerializationJsonDataContractJsonSerializerbull Consente di serializzaredeserializzare un modello ad oggetti vero e
proprio
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 31
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
27022009 wwwxedotnetorg 32
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
wwwxedotnetorg 33
Link
Blog httpblogboschinit
E-mail andreaboschinit
Website httpwwwboschinit
User group httpwwwxedotnetorg
Andrea Boschin
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR
27022009 wwwxedotnetorg 34
raquo I prossimi Meeting
bull WebCongress 20bull 2732009 ndash Universitagrave di Pordenone ndash BOSCHIN DOTTOR SENATORE VERNOLE
bull TDD Test Driven Developmentbull 342009 ndash Mestre Novotel Castellana ndash MAURO SERVIENTI
bull NET Micro Framework - (Virtual Meeting)bull 3042009 ndash Online ore 2130 ndash MIRCO VANINI
bull NetTiers amp Code Generation Rapid Application Prototypingbull 852009 ndash Mestre Novotel Castellana ndash DAVIDE SENATORE
bull PROGRAMMING WITH C 30bull 562009 ndash Mestre Novotel Castellana ndash ANDREA DOTTOR