Slverlight Networking (Andrea Boschin)

34
Primo semestre 2009 in collaborazione con:

Transcript of Slverlight Networking (Andrea Boschin)

Page 1: Slverlight Networking (Andrea Boschin)

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

Page 2: Slverlight Networking (Andrea Boschin)

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

Page 3: Slverlight Networking (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

Page 4: Slverlight Networking (Andrea Boschin)

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

Page 5: Slverlight Networking (Andrea Boschin)

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

Page 6: Slverlight Networking (Andrea Boschin)

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

Page 7: Slverlight Networking (Andrea Boschin)

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

Page 8: Slverlight Networking (Andrea Boschin)

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

Page 9: Slverlight Networking (Andrea Boschin)

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

Page 10: Slverlight Networking (Andrea Boschin)

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

Page 11: Slverlight Networking (Andrea Boschin)

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

Page 12: Slverlight Networking (Andrea Boschin)

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

Page 13: Slverlight Networking (Andrea Boschin)

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

Page 14: Slverlight Networking (Andrea Boschin)

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

Page 15: Slverlight Networking (Andrea Boschin)

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

Page 16: Slverlight Networking (Andrea Boschin)

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

Page 17: Slverlight Networking (Andrea Boschin)

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

Page 18: Slverlight Networking (Andrea Boschin)

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

Page 19: Slverlight Networking (Andrea Boschin)

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

Page 20: Slverlight Networking (Andrea Boschin)

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

Page 21: Slverlight Networking (Andrea Boschin)

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

Page 22: Slverlight Networking (Andrea Boschin)

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

Page 23: Slverlight Networking (Andrea Boschin)

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

Page 24: Slverlight Networking (Andrea Boschin)

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

Page 25: Slverlight Networking (Andrea Boschin)

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

Page 26: Slverlight Networking (Andrea Boschin)

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

Page 27: Slverlight Networking (Andrea Boschin)

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

Page 28: Slverlight Networking (Andrea Boschin)

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

Page 29: Slverlight Networking (Andrea Boschin)

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

Page 30: Slverlight Networking (Andrea Boschin)

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

Page 31: Slverlight Networking (Andrea Boschin)

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

Page 32: Slverlight Networking (Andrea Boschin)

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

Page 33: Slverlight Networking (Andrea Boschin)

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

Page 34: Slverlight Networking (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