際際滷

際際滷Share a Scribd company logo
Primo semestre 2009
  in collaborazione con:
Silverlight 2.0: Networking Explained
            Tecniche di accesso alla rete con Silverlight 2.0




損 Andrea Boschin
Agenda



損 Introduzione               損 Tecniche Avanzate
    Networking basics         Sockets
    Cross domain policies     Polling Duplex
    Tecniche di
     programmazione        損 Strumenti a supporto
                               Serializzazione
損 Strumenti                    Syndication
    HttpWebRequest            XamlReader
    WebClient
    Web Services          損 Domande & Risposte

                     www.xedotnet.org                3
Agenda


損 Silverlight ai minimi termini

       E un plugin per il browser
       Funziona sui pi湛 comuni browser
       Funziona sui pi湛 comuni S.O.
       Ha un supporto per il video molto efficace
       Si programma con XAML e linguaggi evoluti (C#)


     E una piattaforma per lo sviluppo di applicazioni

     Una piattaforma per applicazioni online richiede un eccellente supporto
      alla rete

     Silverlight ha una serie di strumenti per laccesso alla rete molto evoluti e
      di semplice utilizzo


 27/02/2009                        www.xedotnet.org                              4
Introduzione


損 Architettura

    Laccesso alla rete 竪 mediato dal browser che contiene il
     plugin.

    Il plugin perci嘆 non 竪 in grado di fare nulla di pi湛 di quello che
     la sandbox del browser gli mette a disposizione

    Questa scelta ha il vantaggio di condividere con il browser il
     contesto

       Caching
       Autenticazione
       Cookies


                              www.xedotnet.org                        5
Introduzione



損 Limiti di HTTP

    Supporto esclusivo a GET e POST

    Header quasi completi, sia standard che custom

    HttpStatus limitato a 200 e 404 (attenzione!)

    Supporto al redirect solo su domini abilitati




                             www.xedotnet.org                  6
Introduzione


損 Accesso solo a dominio di origine

    La limitazione 竪 superabile ma con la collaborazione del
     destinatario (cross-domain-policy)

    Laccesso pu嘆 essere Cross-domain, Cross-scheme o Cross-Zone
     (solo su Windows) e ci sono differenze tra le varianti

    La ricerca del dominio si basa sullorigine dello XAP

    Partecipano protocollo, dominio e porta
        http://domain:port
        https://domain:port

    Il limite serve a evitare il sea surf (Cross Site Forgery)

                                 www.xedotnet.org                           7
Cross Domain Table


                                                  Classe Image, classe
                                                  MediaElement per
                        Classi WebClient e                                                         File dei tipi di
                                                  download progressivi File di origine XAML                                  Flussi multimediali
                        HTTP                                                                       carattere
                                                  (supporti, immagini,
                                                  ASX e cos狸 via)

Allowed schemes              HTTP, HTTPS            HTTP, HTTPS, FILE      HTTP, HTTPS, FILE          HTTP, HTTPS, FILE              HTTP

                                                                                                                               Non consentito da
Cross-scheme access        Non consentito            Non consentito          Non consentito                   No
                                                                                                                                    HTTPS

                          Richiede un file dei
                         criteri di protezione.   Consentito se diverso Consentito se diverso                                Consentito se diverso
Cross-domain access                                                                                    Non consentito
                         Non consentito per            da HTTPS              da HTTPS                                             da HTTPS.
                                 HTTPS.


                         Non consentito da         Non consentito da       Non consentito da         Non consentito da        Non consentito da
Cross-zone access (on
                         un'area Internet ad       un'area Internet ad     un'area Internet ad       un'area Internet ad      un'area Internet ad
Windows)
                         aree pi湛 restrittive.     aree pi湛 restrittive.   aree pi湛 restrittive.     aree pi湛 restrittive.    aree pi湛 restrittive.


                        Consentito allo stesso
                             sito e schema.     Consentito alla stesso
Redirection allowed     Consentito tra domini schema e a siti uguali         Non consentito            Non consentito           Non consentito
                          solo con un file dei       o diversi.
                         criteri di protezione.



                                                               www.xedotnet.org                                                             8
Cross Site Forgery


損 Cross Site Forgery
                         Il client chiede una pagina

        Nella pagine viene inserito un url malizioso (es. Immagine)

          Lurl viene richiamato dal client inviando i cookie etc...

             Se lutente casualmente si era autenticato ad un
              sito privato lurl pu嘆 causare operazioni illecite

          Gli uri devono essere esplicitamente
          autorizzati con delle policy


                               www.xedotnet.org                            9
Cross Domain Policies


損 Cross Domain Policies

    Il plugin si aspetta che a fianco ai file scaricabili sia disponibile
     un file di policy
        clientaccesspolicy.xml
        crossdomain.xml (compatibile flash)

    Se non trova almeno un file di policy solleva uneccezione...
        http://domain:port/downloads/file.xml
        http://domain:port/clientaccesspolicy.xml
        http://domain:port/crossdomain.xml

    In caso di Servizi non IIS hosted e Socket occorre esporre un
     metodo per leggere il file di policy


                                www.xedotnet.org                         10
Cross Domain Policies


損 clientaccesspolicy.xml
        <?xml version="1.0" encoding="utf-8"?>
        <access-policy>
          <cross-domain-access>
            <policy>
              <allow-from http-request-headers="*">
                <domain uri="*" />
              </allow-from>
              <grant-to>
                <resource path="/files.ashx" include-subpaths="false" />
              </grant-to>
            </policy>
          </cross-domain-access>
        </access-policy>


N.B: E bene specificare sempre le policy il pi湛 possibile restrittive soprattutto in grant-to



                                         www.xedotnet.org                                   11
Programming Model



損 Programming Model

   Laccesso alla rete da Silverlight 2.0 竪 esclusivamente
    Asincrono

   Il modello sincrono avrebbe causato problemi di freeze
    del browser

   La programmazione Asincrona complica un po il codice

   Luso accorto di delegate e lambda expression consente
    di semplificare di molto


                          www.xedotnet.org                    12
Asyncronous Tip #1



損 Semplificare il codice

   Nel framework 竪 presente la classe Action<T>
    (parente di Func<T>)

   Possiamo specificare dei delegate che eseguano
    semplici operazioni in risposta

           public DownloadFile(
               int id,
               Action<string> success,
               Action<Exception> fail)



                        www.xedotnet.org                13
Asyncronous Tip #2



損 Thread Marshaling

   La programmazione asincrona implica luso di Thread

   Il rientro dalla callback avviene in un thread diverso da quello
    della UI

   Per evitare UnauthorizedAccessException bisogna fare il
    marshaling




                            www.xedotnet.org                       14
Asyncronous Tip #2


損 Tecniche di sincronizzazione
    Uso di Dispatcher.BeginInvoke()
       Richiede sempre un riferimento ad un UIElement
       Uso problematico perch竪 non 竪 possibile verificare se si 竪 realmente in un
        thread separato: In questo caso fallisce senza senza eccezioni

    Uso di SynchronizationContext.Current
       Ritorna null se si 竪 in un thread separato
       Si pu嘆 usare solo allinterno del Thread della UI

    Uso di AsyncOperationManager
       Non necessita di un riferimento ad un UIElement
       Utile per sincronizzare allinterno di classi di business prima di chiamare
        un delegate o sollevare un evento.

                                  www.xedotnet.org                                15
HttpWebRequest



損 HttpWebRequest & HttpWebResponse

    Utile per avere il massimo controllo sul protocollo.

    Consente di forgiare la richiesta per esigenze speciali

    Consente di specificare header e di fare upload di file

    Attenzione: Richiede il marshaling del thread nella risposta




                                  www.xedotnet.org                           16
WebClient


損 WebClient
   Si tratta della classe pi湛 comoda per fare download

   E meno generica e ha dei metodi specifici per determinate
    esigenze
         DownloadStringAsync
         OpenReadAsync
         OpenWriteAsync
         UploadStringAsync

   Consente di specificare gli header

   Consente di avere notifiche sul progredire del download

   Non richiede sincronizzazioni di thread

                                www.xedotnet.org                     17
WebServices


損 Accesso a Web Services

    Si tratta sicuramente di uno dei metodi preferenziali per laccesso ai dati
        Il proxy maschera il processo di comunicazione
        La serializzazione/deserializzazione sono gi implementate

    Per accedere a ASMX e WCF si deve usare BasicHttpBinding

    Sono supportati CustomBinding e PollingDuplexHttpBinding

    Non 竪 direttamente supportato WebHttpBinding ma lo si pu嘆 usare
     mediante WebClient

    Solo Trasporto HTTP (no binary)

    Non richiede sincronizzazione di thread


                                     www.xedotnet.org                          18
WebServices


損 Supporto ai protocolli
    Supporta solo WS-I Basic Profile 1.0 e in particolare SOAP 1.1

    I principali protocolli WS-* non sono disponibili

    WS-Security non 竪 direttamente supportato ma si possono iniettare gli
     header manualmente

    Luso di cookie e altri metodi di autenticazione 竪 gestito dal browser
        Non 竪 possibile accedervi da Silverlight
        Per questo 竪 sconsigliabile ospitare i servizi in-domain nel sito che li utilizza




                                      www.xedotnet.org                                   19
WebServices



損 Serializzazione / Deserializzazione

    Oggetti complessi come i DataSet non sono supportati. Se un
     servizio li espone si deve manipolare direttamente lXML

    Alcune classi particolarmente complesse (ad esempio quelle
     che implementano ISerializable) potrebbero non essere
     deserializzabili




                           www.xedotnet.org                   20
ADO.NET Data Services



損 Accesso a Servizi REST
   Silverlight supporta ADO.NET DataServices (gi Astoria)

   Un DataService incapsula un modello ad oggetti di Entity
    Framework oppure una propria classe

   Grazie ad essi 竪 possibile usare LINQ nelle applicazioni
    Siverlight

   Il modello Asincrono complica un po le cose

   C竪 qualche limite nella complessit dellObjectModel

                            www.xedotnet.org                        21
ADO.NET Data Services



損 Cos竪 REST?

   Indirizzo
      Uri della risorsa cui si vuole accedere

   Azione
      Attivit da svolgere: GET, POST, PUT, DELETE

   Rappresentazione
      Modalit con cui si desidera accedere alla risorsa
       (AtomPub o JSON)


                            www.xedotnet.org                         22
Socket



損 Uso dei Socket
   E utile in scenari dove si riceva un flusso di dati costante


   E possibile per mezzo della classe Socket
   E disponibile solo il protocollo TCP (no UDP)
   Il set di porte va dalla 4502 alla 4534
   Si usa un meccanismo a rilancio con SocketAsyncEventArgs
   SocketAsyncEventArgs contiene lo stato attuale del socket quindi
    ne deve essere usata una distinta per ogni Socket creato


                             www.xedotnet.org                        23
Socket Server



損 Socket Server
   Occorre gestire attraverso il canale la richiesta di
    clientaccesspolicy.xml
   Il client invia la richiesta <policy-file-request/>
   Il file clientaccesspolicy.xml ha una apposita sezione
     <policy>
        <allow-from>
              <domain uri="file:///" />
        </allow-from>
        <grant-to>
              <socket-resource port="4502-4506" protocol="tcp" />
        </grant-to>
     </policy>




                               www.xedotnet.org                             24
Polling Duplex


損 PollingDuplexHttpBinding

    Il polling 竪 un metodo alternativo per raccogliere informazioni
     che cambiano continuamente

    Dalla Beta 2 竪 stato introdotto un nuovo binding in WCF per
     supportare questo scenario

    Il meccanismo implica luso di un Callback Contract

    E nettamente pi湛 efficiente di un polling handmade

    E un po complesso da configurare


                            www.xedotnet.org                        25
Polling Duplex


損 Come funziona PollingDuplexHttpBinding?

    In un polling classico il client 竪 sempre disconnesso salvo il tempo
     necessario alla richiesta

    Con il polling duplex il client 竪 sempre connesso salvo il tempo di
     recuperare il timeout

    Il server mantiene la connessione in uno stato di attesa fintanto
     che non arriva qualcosa da inviare al client o il timeout

    I vantaggi:
        C竪 un solo processo di lavoro che notifica tutti i client
        I client vengono aggiornati non appena il dato 竪 disponibile
        Tutti i client sono sincronizzati



                                  www.xedotnet.org                               26
Polling Duplex



損 Callback Contract

    Il duplex implementa Async Pattern

    Il client deve esporre un proprio contratto che verr usato dal
     server per notificare gli eventi

    Il server usa lOperationContext per recuperare listanza del
     contratto di callback e la memorizza




                             www.xedotnet.org                      27
Polling Duplex



損 PollingDuplexHttpBinding Server

    Il server 竪 molto complesso
       Mantiene unanagrafica dei client connessi

       Gestisce la concorrenza tra richieste e risposte

       Gestisce il Fault dei canali per capire le disconnessioni

       Lavora in background per decidere se notificare i client

       Se non 竪 ospitato da IIS:
           Implementa un ServiceHost
           Implementa un metodo per restituire le policy



                                www.xedotnet.org                             28
Consumare i dati



損 Deserializzazione XML

     XamlReader
               Utile per caricare on-demand pezzi di User Interface


     XmlSerializer
               Quando si deve caricare una gerarchia di oggetti completa

     XDocument
               Quando 竪 necessario accedere a pochi valori in un documento XML

     Syndication
               Quando si devono consumare feed RSS 2.0 o ATOM 1.0


 27/02/2009                             www.xedotnet.org                            29
損 JavaScript Object Notation

    Se si ha bisogno di un flusso di dati molto compatto JSON 竪 lideale

    System.Json
           Usa una gerarchia di oggetti che rappresenta gli elementi della
            notazione. Ha il difetto di non essere strong-typed


    System.Runtime.Serialization.Json.DataContractJsonSerializer
           Consente di serializzare/deserializzare un modello ad oggetti vero e
            proprio




  27/02/2009                         www.xedotnet.org                              30
www.xedotnet.org   31
27/02/2009   www.xedotnet.org   32
Link


Andrea Boschin
         Blog: http://blog.boschin.it
        E-mail: andrea@boschin.it
      Website: http://www.boschin.it


    User group: http://www.xedotnet.org




                         www.xedotnet.org   33
損 I prossimi Meeting
     WebCongress 2.0
               27/3/2009  Universit di Pordenone  BOSCHIN, DOTTOR, SENATORE, VERNOLE


     TDD: Test Driven Development
               3/4/2009  Mestre, Novotel Castellana  MAURO SERVIENTI


     .NET Micro Framework - (Virtual Meeting)
               30/4/2009  Online ore 21:30  MIRCO VANINI


     NetTiers & Code Generation: Rapid Application Prototyping
               8/5/2009  Mestre, Novotel Castellana  DAVIDE SENATORE


     PROGRAMMING WITH C# 3.0
               5/6/2009  Mestre, Novotel Castellana  ANDREA DOTTOR



 27/02/2009                                  www.xedotnet.org                              34

More Related Content

Slverlight Networking (Andrea Boschin)

  • 1. Primo semestre 2009 in collaborazione con:
  • 2. Silverlight 2.0: Networking Explained Tecniche di accesso alla rete con Silverlight 2.0 損 Andrea Boschin
  • 3. Agenda 損 Introduzione 損 Tecniche Avanzate Networking basics Sockets Cross domain policies Polling Duplex Tecniche di programmazione 損 Strumenti a supporto Serializzazione 損 Strumenti Syndication HttpWebRequest XamlReader WebClient Web Services 損 Domande & Risposte www.xedotnet.org 3
  • 4. Agenda 損 Silverlight ai minimi termini E un plugin per il browser Funziona sui pi湛 comuni browser Funziona sui pi湛 comuni S.O. Ha un supporto per il video molto efficace Si programma con XAML e linguaggi evoluti (C#) E una piattaforma per lo sviluppo di applicazioni Una piattaforma per applicazioni online richiede un eccellente supporto alla rete Silverlight ha una serie di strumenti per laccesso alla rete molto evoluti e di semplice utilizzo 27/02/2009 www.xedotnet.org 4
  • 5. Introduzione 損 Architettura Laccesso alla rete 竪 mediato dal browser che contiene il plugin. Il plugin perci嘆 non 竪 in grado di fare nulla di pi湛 di quello che la sandbox del browser gli mette a disposizione Questa scelta ha il vantaggio di condividere con il browser il contesto Caching Autenticazione Cookies www.xedotnet.org 5
  • 6. Introduzione 損 Limiti di HTTP Supporto esclusivo a GET e POST Header quasi completi, sia standard che custom HttpStatus limitato a 200 e 404 (attenzione!) Supporto al redirect solo su domini abilitati www.xedotnet.org 6
  • 7. Introduzione 損 Accesso solo a dominio di origine La limitazione 竪 superabile ma con la collaborazione del destinatario (cross-domain-policy) Laccesso pu嘆 essere Cross-domain, Cross-scheme o Cross-Zone (solo su Windows) e ci sono differenze tra le varianti La ricerca del dominio si basa sullorigine dello XAP Partecipano protocollo, dominio e porta http://domain:port https://domain:port Il limite serve a evitare il sea surf (Cross Site Forgery) www.xedotnet.org 7
  • 8. Cross Domain Table Classe Image, classe MediaElement per Classi WebClient e File dei tipi di download progressivi File di origine XAML Flussi multimediali HTTP carattere (supporti, immagini, ASX e cos狸 via) Allowed schemes HTTP, HTTPS HTTP, HTTPS, FILE HTTP, HTTPS, FILE HTTP, HTTPS, FILE HTTP Non consentito da Cross-scheme access Non consentito Non consentito Non consentito No HTTPS Richiede un file dei criteri di protezione. Consentito se diverso Consentito se diverso Consentito se diverso Cross-domain access Non consentito Non consentito per da HTTPS da HTTPS da HTTPS. HTTPS. Non consentito da Non consentito da Non consentito da Non consentito da Non consentito da Cross-zone access (on un'area Internet ad un'area Internet ad un'area Internet ad un'area Internet ad un'area Internet ad Windows) aree pi湛 restrittive. aree pi湛 restrittive. aree pi湛 restrittive. aree pi湛 restrittive. aree pi湛 restrittive. Consentito allo stesso sito e schema. Consentito alla stesso Redirection allowed Consentito tra domini schema e a siti uguali Non consentito Non consentito Non consentito solo con un file dei o diversi. criteri di protezione. www.xedotnet.org 8
  • 9. Cross Site Forgery 損 Cross Site Forgery Il client chiede una pagina Nella pagine viene inserito un url malizioso (es. Immagine) Lurl viene richiamato dal client inviando i cookie etc... Se lutente casualmente si era autenticato ad un sito privato lurl pu嘆 causare operazioni illecite Gli uri devono essere esplicitamente autorizzati con delle policy www.xedotnet.org 9
  • 10. Cross Domain Policies 損 Cross Domain Policies Il plugin si aspetta che a fianco ai file scaricabili sia disponibile un file di policy clientaccesspolicy.xml crossdomain.xml (compatibile flash) Se non trova almeno un file di policy solleva uneccezione... http://domain:port/downloads/file.xml http://domain:port/clientaccesspolicy.xml http://domain:port/crossdomain.xml In caso di Servizi non IIS hosted e Socket occorre esporre un metodo per leggere il file di policy www.xedotnet.org 10
  • 11. Cross Domain Policies 損 clientaccesspolicy.xml <?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*" /> </allow-from> <grant-to> <resource path="/files.ashx" include-subpaths="false" /> </grant-to> </policy> </cross-domain-access> </access-policy> N.B: E bene specificare sempre le policy il pi湛 possibile restrittive soprattutto in grant-to www.xedotnet.org 11
  • 12. Programming Model 損 Programming Model Laccesso alla rete da Silverlight 2.0 竪 esclusivamente Asincrono Il modello sincrono avrebbe causato problemi di freeze del browser La programmazione Asincrona complica un po il codice Luso accorto di delegate e lambda expression consente di semplificare di molto www.xedotnet.org 12
  • 13. Asyncronous Tip #1 損 Semplificare il codice Nel framework 竪 presente la classe Action<T> (parente di Func<T>) Possiamo specificare dei delegate che eseguano semplici operazioni in risposta public DownloadFile( int id, Action<string> success, Action<Exception> fail) www.xedotnet.org 13
  • 14. Asyncronous Tip #2 損 Thread Marshaling La programmazione asincrona implica luso di Thread Il rientro dalla callback avviene in un thread diverso da quello della UI Per evitare UnauthorizedAccessException bisogna fare il marshaling www.xedotnet.org 14
  • 15. Asyncronous Tip #2 損 Tecniche di sincronizzazione Uso di Dispatcher.BeginInvoke() Richiede sempre un riferimento ad un UIElement Uso problematico perch竪 non 竪 possibile verificare se si 竪 realmente in un thread separato: In questo caso fallisce senza senza eccezioni Uso di SynchronizationContext.Current Ritorna null se si 竪 in un thread separato Si pu嘆 usare solo allinterno del Thread della UI Uso di AsyncOperationManager Non necessita di un riferimento ad un UIElement Utile per sincronizzare allinterno di classi di business prima di chiamare un delegate o sollevare un evento. www.xedotnet.org 15
  • 16. HttpWebRequest 損 HttpWebRequest & HttpWebResponse Utile per avere il massimo controllo sul protocollo. Consente di forgiare la richiesta per esigenze speciali Consente di specificare header e di fare upload di file Attenzione: Richiede il marshaling del thread nella risposta www.xedotnet.org 16
  • 17. WebClient 損 WebClient Si tratta della classe pi湛 comoda per fare download E meno generica e ha dei metodi specifici per determinate esigenze DownloadStringAsync OpenReadAsync OpenWriteAsync UploadStringAsync Consente di specificare gli header Consente di avere notifiche sul progredire del download Non richiede sincronizzazioni di thread www.xedotnet.org 17
  • 18. WebServices 損 Accesso a Web Services Si tratta sicuramente di uno dei metodi preferenziali per laccesso ai dati Il proxy maschera il processo di comunicazione La serializzazione/deserializzazione sono gi implementate Per accedere a ASMX e WCF si deve usare BasicHttpBinding Sono supportati CustomBinding e PollingDuplexHttpBinding Non 竪 direttamente supportato WebHttpBinding ma lo si pu嘆 usare mediante WebClient Solo Trasporto HTTP (no binary) Non richiede sincronizzazione di thread www.xedotnet.org 18
  • 19. WebServices 損 Supporto ai protocolli Supporta solo WS-I Basic Profile 1.0 e in particolare SOAP 1.1 I principali protocolli WS-* non sono disponibili WS-Security non 竪 direttamente supportato ma si possono iniettare gli header manualmente Luso di cookie e altri metodi di autenticazione 竪 gestito dal browser Non 竪 possibile accedervi da Silverlight Per questo 竪 sconsigliabile ospitare i servizi in-domain nel sito che li utilizza www.xedotnet.org 19
  • 20. WebServices 損 Serializzazione / Deserializzazione Oggetti complessi come i DataSet non sono supportati. Se un servizio li espone si deve manipolare direttamente lXML Alcune classi particolarmente complesse (ad esempio quelle che implementano ISerializable) potrebbero non essere deserializzabili www.xedotnet.org 20
  • 21. ADO.NET Data Services 損 Accesso a Servizi REST Silverlight supporta ADO.NET DataServices (gi Astoria) Un DataService incapsula un modello ad oggetti di Entity Framework oppure una propria classe Grazie ad essi 竪 possibile usare LINQ nelle applicazioni Siverlight Il modello Asincrono complica un po le cose C竪 qualche limite nella complessit dellObjectModel www.xedotnet.org 21
  • 22. ADO.NET Data Services 損 Cos竪 REST? Indirizzo Uri della risorsa cui si vuole accedere Azione Attivit da svolgere: GET, POST, PUT, DELETE Rappresentazione Modalit con cui si desidera accedere alla risorsa (AtomPub o JSON) www.xedotnet.org 22
  • 23. Socket 損 Uso dei Socket E utile in scenari dove si riceva un flusso di dati costante E possibile per mezzo della classe Socket E disponibile solo il protocollo TCP (no UDP) Il set di porte va dalla 4502 alla 4534 Si usa un meccanismo a rilancio con SocketAsyncEventArgs SocketAsyncEventArgs contiene lo stato attuale del socket quindi ne deve essere usata una distinta per ogni Socket creato www.xedotnet.org 23
  • 24. Socket Server 損 Socket Server Occorre gestire attraverso il canale la richiesta di clientaccesspolicy.xml Il client invia la richiesta <policy-file-request/> Il file clientaccesspolicy.xml ha una apposita sezione <policy> <allow-from> <domain uri="file:///" /> </allow-from> <grant-to> <socket-resource port="4502-4506" protocol="tcp" /> </grant-to> </policy> www.xedotnet.org 24
  • 25. Polling Duplex 損 PollingDuplexHttpBinding Il polling 竪 un metodo alternativo per raccogliere informazioni che cambiano continuamente Dalla Beta 2 竪 stato introdotto un nuovo binding in WCF per supportare questo scenario Il meccanismo implica luso di un Callback Contract E nettamente pi湛 efficiente di un polling handmade E un po complesso da configurare www.xedotnet.org 25
  • 26. Polling Duplex 損 Come funziona PollingDuplexHttpBinding? In un polling classico il client 竪 sempre disconnesso salvo il tempo necessario alla richiesta Con il polling duplex il client 竪 sempre connesso salvo il tempo di recuperare il timeout Il server mantiene la connessione in uno stato di attesa fintanto che non arriva qualcosa da inviare al client o il timeout I vantaggi: C竪 un solo processo di lavoro che notifica tutti i client I client vengono aggiornati non appena il dato 竪 disponibile Tutti i client sono sincronizzati www.xedotnet.org 26
  • 27. Polling Duplex 損 Callback Contract Il duplex implementa Async Pattern Il client deve esporre un proprio contratto che verr usato dal server per notificare gli eventi Il server usa lOperationContext per recuperare listanza del contratto di callback e la memorizza www.xedotnet.org 27
  • 28. Polling Duplex 損 PollingDuplexHttpBinding Server Il server 竪 molto complesso Mantiene unanagrafica dei client connessi Gestisce la concorrenza tra richieste e risposte Gestisce il Fault dei canali per capire le disconnessioni Lavora in background per decidere se notificare i client Se non 竪 ospitato da IIS: Implementa un ServiceHost Implementa un metodo per restituire le policy www.xedotnet.org 28
  • 29. Consumare i dati 損 Deserializzazione XML XamlReader Utile per caricare on-demand pezzi di User Interface XmlSerializer Quando si deve caricare una gerarchia di oggetti completa XDocument Quando 竪 necessario accedere a pochi valori in un documento XML Syndication Quando si devono consumare feed RSS 2.0 o ATOM 1.0 27/02/2009 www.xedotnet.org 29
  • 30. 損 JavaScript Object Notation Se si ha bisogno di un flusso di dati molto compatto JSON 竪 lideale System.Json Usa una gerarchia di oggetti che rappresenta gli elementi della notazione. Ha il difetto di non essere strong-typed System.Runtime.Serialization.Json.DataContractJsonSerializer Consente di serializzare/deserializzare un modello ad oggetti vero e proprio 27/02/2009 www.xedotnet.org 30
  • 32. 27/02/2009 www.xedotnet.org 32
  • 33. Link Andrea Boschin Blog: http://blog.boschin.it E-mail: andrea@boschin.it Website: http://www.boschin.it User group: http://www.xedotnet.org www.xedotnet.org 33
  • 34. 損 I prossimi Meeting WebCongress 2.0 27/3/2009 Universit di Pordenone BOSCHIN, DOTTOR, SENATORE, VERNOLE TDD: Test Driven Development 3/4/2009 Mestre, Novotel Castellana MAURO SERVIENTI .NET Micro Framework - (Virtual Meeting) 30/4/2009 Online ore 21:30 MIRCO VANINI NetTiers & Code Generation: Rapid Application Prototyping 8/5/2009 Mestre, Novotel Castellana DAVIDE SENATORE PROGRAMMING WITH C# 3.0 5/6/2009 Mestre, Novotel Castellana ANDREA DOTTOR 27/02/2009 www.xedotnet.org 34

Editor's Notes

  1. In questo meeting sar mio incarico parlarvi di Silverlight 2.0, e in particolare di Networking. Non sar un meeting in cui parleremo diffusamente delle caratteristiche pi湛 sceniche di Silverlight, ma piuttosto cercher嘆 di essere molto pratico e arricchir嘆 spesso e volentieri il mio racconto di esempi di codice che vi chiariscano i concetti che esprimo. Cos竪 Silverlight in due parole? Silverlight 竪 un plugin per i pi湛 comuni browser, Ie, FF, safari e per le pi湛 comuni piattaforme, ma si connota pi湛 come una piattaforma per lo sviluppo di applicazioni che per semplici scene interattive. (vedere http://www.mscui.net/PatientJourneyDemonstrator/
  2. Tre modi per accedere alla rete:XmlHttpRequest, API del browser, accesso diretto alle API di networking (bypass)