Silverlight3
There are 15 entries for the tag
Silverlight3
Tempo fa avevo descritto come è possibile propagare le eccezioni da un servizio WCF verso un applicazione Silverlight3. Del procedimento, la parte più noiosa era sicuramente quella necessaria al cambio di HTTP Status Code da 500 a 200, la buona notizia è che grazie alla nuovo Client HTTP Stack presente in Silverlight3 tale cambio non è più necessario, basta infatti aggiungere questa riga allo startup dell’applicazione Silverlight: 1: bool registerResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
Per sostituire il browser networking stack usato by default col nuovo Client Networking...
Nel caso ve lo siate persi, oggi c’è stato l’annuncio ufficiale del rilascio di Silverlight 3.0, personalmente ritengo che da oggi non abbia più senso continuare a lavorare sulla 2.0, non fosse altro per la nuova versione di Expression Blend che, effettivamente, sta diventando un tool serio e a tutti gli effetti e praticamente l’unico strumento visuale, visto che i tools di Silverlight3 cancellano definitivamente Cider da Visual Studio 2008. Dalla versione rilasciata al Mix alla RTM ci sono state parecchie modifiche, dalla eliminazione del controllo <asp:Silverlight> al cambio di filosofia del caching delle assemblies che nella...
A quanto pare il 10 luglio verrà rilasciata la RTM ci sarà il lancio di Silverlight3 e della nuova suite Expression… Mi hanno fatto notare che “lancio” <> RTM ovvero: il compleanno va festeggiato prima dell’effettiva data di nascita. Technorati Tags: Silverlight3
Credo abbiate intuito che Microsoft sta spingendo molto sul presentare Silverlight3 come la piattaforma per lo sviluppo di RIA applications puntando molto sulle LOB (Line Of Business) Applications, i nuovi .NET RIA Services sono solo un esempio in questa direzione. Oltre alla mia feature preferita (ChildWindow) in Silverlight3 sono stati aggiunti una serie di controlli nati con lo scopo di alleggerire la parte più noiosa delle LOB, ovvero la presentazione dei dati e relativa interazione con l’utente, tra questi il controllo DataForm. Supponiamo di avere una classe Person con le...
In Silverlight2, dopo avere creato il nostro bel servizio WCF che genera una serie di eccezioni (ovviamente di tipo FaultException/FaultException<T>) quando c’è qualcosa che non va, è triste scoprire che di queste eccezioni non ce ne facciamo nulla in quanto non verranno mai intercettate dalla nostra applicazione Silverlight per una lunga serie di motivi. Fortunatamente questa è acqua passata in quanto nella versione 3 le eccezioni vengono correttamente gestite dal plug-in a patto che venga iniettato del codice per aggirare il problema principale: Le eccezioni vengono ritornate con un HTTP Response Code=500 e quindi...
Nel realizzare un servizio WCF può rendersi necessario incrementare la dimensione massima degli array che vengono scambiati da e verso il servizio, un esempio comune può essere quello di volere passare al servizio un array rappresentante un immagine da memorizzare sul server. Come ho già scritto in precedenza, con Silverlight3 il default binding non è piu basicHttpBinding ma un custom binding che usa BinaryMessageEncoding, per modificare la dimensione massima degli arrays è quindi necessario aggiungere un elemento ReaderQuotas opportunamente configurato, un esempio di questa configurazione la trovate di seguito: ...
In Silverlight3 è stato semplificato il meccanismo di fruizione di servizi WCF che usano la modalità duplex, nella Beta1 c’è in realtà ancora parecchio lavoro da fare ma con la RTM il tutto si ridurrà nel aggiungere un riferimento al servizio WCF duplex e gestire l’evento generato quando il servizio ha delle informazioni da comunicare all’applicazione Silverlight. Per darvi un idea, ecco un esempio di servizio WCF che ‘pusha’ dei valori quando questi hanno un valore inferiore ad una soglia prefissata: L’interfaccia del servizio è: ...
Con Silverlight3 arrivano una lunga serie di enhancements anche per la parte webservices, tra questi l’utilizzo del BinaryMessageEncoding in sostituzione del precedente TextMessageEncoding. La nuova modalità diventa il default quando aggiungete al vostro progetto un nuovo Silverlight enabled WCF service e ha lo scopo di di diminuire la dimensione del messaggio aumentando il quindi thoughtput del server. La nuova configurazione del file Web.Config diventa quindi: 1: <bindings>
2: <customBinding>
...
Piccolo quiz: Cosa c’è che non va nel codice che vedete qui sotto? (5 secondi per rispondere…) 1: private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
2: {
3: SaveFileDialog sfd = new SaveFileDialog();
4: sfd.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt";
5: sfd.FilterIndex = 2;
6: ...
Come forse saprete se avete seguito qualche presentazione al recente Mix09, in SIlverlight3 è stata introdotta una nuova interfaccia IApplicationService che permette la creazione di servizi da far partire allo startup e da stoppare quando l’applicazione sta per terminare, ad esempio perchè l’utente sta navigando verso un altro sito. Per completezza segnalo anche l’interfaccia IApplicationLifeTimeAware che permette l’esecuzione di codice durante altri eventi relativi al ciclo di vita dell’applicazione come Starting,Started,Exiting,Exited… L’uso è molto semplice, c’è però un piccolo bug (ma va? ) percui è necessario associare un x:Name al servizio quando lo si definisce nel...
Nel mio post sulle Local Connections di Silverlight3 concludevo scrivendo: “nella mia installazione, non sono supportate più istanze dello stesso receiver”. Dopo uno scambio di opinioni con qualche Insider e col team di Silverlight la risposta è stata: “Non è un bug: semplicemente non è possibile avere più istanze dello stesso receiver mentre sono supportate più istanze dello stesso sender.” La limitazione dipende dalla modalità di implementazione delle local connections (named pipes) però questo significa che se avete una pagina con due plug-in che comunicano tra loro via local connections e aprite due istanze...
Non molto tempo fa avevo mostrato come realizzare un popup modale in Silverlight2, nulla di complicatissimo ma comunque un bel pò di lavoro per visualizzare quello che nei Winforms si fa con una riga di codice. Bene, dimenticatevi tutto perchè in Silverlight3 è tutto molto più semplice grazie alle ChildWindows. Aggiungete ad un progetto Silverlight3 un item Silverlight ChildWindow e disegnatene il contenuto, by default vengono automaticamente inseriti i pulsanti Ok e Cancel, ma potete gestirli come meglio credete. Create da codice un istanza di ChildWindow, invocate il metodo...
Questa è probabilmente la feature che più mi intriga di Silverlight3 quando funzionerà a dovere (more later…) In pratica: attraverso le local connections è possibile far comunicare tra loro applicazioni Silverlight senza passare dall’ HTML bridge ma attraverso un semplice meccanismo di publish-subscribe. L’applicazione che vedete nella foto contiene due plug-ins, scrivendo nella texbox in alto il testo viene replicato nella textbox inferiore. L’applicazione Sender non fa altro che creare un istanza di LocalMessageSender indicando il nome associato al LocalMessageReceiver che sarà in grado di ricevere i messaggi inviati sottoforma di stringa (nel mio...
Ho letto circa una tonnellata di blogs su quanto sono “fighe” (si può dire?) le Out-Of-Browser Applications di SIlverlight3, e c’è, come sempre, chi si chiede se queste possono sostituire un applicazione WPF. Sicuramente la direzione è quella (“ne rimarrà uno solo”<cit.>) ma i tempi non sono ancora maturi e non lo saranno nel breve, le implicazioni di security sono troppe e le attuali limitazioni fanno si che pensare di sostituire un applicazione full trusted con un applicazione OOB SL3 è semplicemente fuori luogo, semmai concordo che SL, sopratutto nella ultima versione, sta offuscando un area di WPF...
Sembra che Silverlight3 abbia qualche problema col databinding…, prendiamo una classe Person che implementa INotifyPropertyChanged e supponiamo di volerne editare le proprietà Name e Age. <StackPanel>
<TextBox Text="{Binding Path=Name, Mode=TwoWay}" />
<TextBox Text="{Binding Path=Age, Mode=TwoWay}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
nel costruttore del codebehind, come da...