Verificare se l’applicazione è in Out Of Browser
Posted by imperugo in Silverlight on Saturday 30 January 2010 at 3:48 AM
Già da quanto scritto precedentemente (qui) si intuiva l’arrivo di una serie di post su Silverlight 4. Sto infatti studiando la possibilità di utilizzo di Silverlight 4 per un’applicazione Out Of Browser che rispecchi almeno i requisiti descritti nel precedente post.
Per questo motivo oggi mi trovo a rispondere alla prima domanda: “Come faccio a verificare se l’applicazione Silverlight in esecuzione è in modalità OOB”?
Beh, devo dire che è veramente semplice. Quando si crea una nuova applicazione Silverlight, al suo interno è presente un file App.xml che è il file principale dell’applicazione; per effettuare un paragone con il mondo ASP.NET si potrebbe definire il file App.xml un po’ come il Global.asax.
Questa classe, che eredita da System.Windows.Application, espone la proprietà IsRunningOutOfBrowser, che è indispensabile se si vogliono creare interazioni particolari e mostrare oggetti solo in modalità OOB; basta quindi accedere alla proprietà, come mostrato dallo snippet seguente:
bool isOOB = App.Current.IsRunningOutOfBrowser;
Un esempio pratico potrebbe essere il semplice pulsante di setup, che dovrà essere visualizzato soltanto nel caso l’applicazione stia girando all’interno del browser.
Al prossimo giro vedremo come installare un’applicazione Silverlight sul client tramite C#.
Stay tuned!
TFS, i Power Tools ed il Team Explorer
Primo post su TFS, TeamExplorer e famigghia.
Questo non è un cambio di genere e non ho intenzione (anche perchè sarebbe impossibile) fare “concorrenza” al buon Gian Maria ed al buon Lorenzo; molto probabilmente quello che andrete a leggere lo avranno già mostrato, spiegato, decompilato e riscritto loro parecchia anni fa, sta di fatto che lo scrivo lo stesso xchè a qualcuno potrebbe essere sfuggito (tipo a me).
Ormai sono un paio di anni che uso Team Foundation Server in azienda insieme a Visual Studio e al Team Explorer. Lavorando quotidianamente con lo stesso server all’interno della stessa rete, non ho mai avuto nessun problema con il fatto che il Team Eplorer cerchi di connettersi all’ultimo TFS utilizzato ogni volta che si avvia Visual Studio.
Ultimamente però il mio lavoro è un po’ cambiato, e mi trovo a dovermi connettere a diversi TFS sparsi per il mondo e, in casi ancora peggiori, mi ritrovo senza connessione. Queste situazioni vanno di parecchio in conflitto con la feature precedentemente descritta (l’autocollegamento a TFS durante l’avvio di Visual Studio), quindi mi sono deciso a fare una ricerca in rete per capire come risolvere il problema.
Neanche a dirlo già milioni di persone avevano bloggato il problema e mostrato una soluzione, che consiste nel modificare il registro di configurazione di Windows (maggiori info qui).
Soluzione questa sicuramente funzionante e di semplice implementazione. Ma ne esiste una ancor più carina ed elegate.
I ragazzi del team dei PowerTools hanno pensato di fare una comodissima UI per cambiare quest’impostazione. Di fatto, una volta installati i PowerTools (che trovate qui), ci basta digitare il comando seguente dal prompt del DOS:
tfpt tweakui
a questo punto dovrebbe aprirsi una finestra, come quella mostrata di seguito, che ci permette di disabilitare questa opzione.
Ciauz
V UgiAlt Conference – recap
Sabato ho avuto il piacere di poter partecipare come speaker alla V° Ugi Alt Net Conference e, nello specifico, ho parlato un po’ di MVC, un po’ di xVal e un po’ di Spark. La parte su Spark credo sia stata la più “apprezzata”, e spero di aver lasciato la voglia a qualcuno di provare questo prodotto che promette (ma di fatto le fa già) cose molto interessanti.
Devo dire che l’esperienza è stata interessantissima e i complimenti a Simone e a tutto lo staff sono d’obbligo, sia per l’organizzazione sia per l’agenda veramente molto interessante.
Purtroppo un impegno mi ha impedito di seguire le sessioni del pomeriggio, ma a detta dei ragazzi (Gian Maria, Andrea, etc) sono state tutte ottime. Quindi i complimenti vanno anche a tutti gli altri speakers, a partire da loro due.
Well done!
Life cycle di un’applicazione Out Of Browser in Silverlight 4 - Intro
Posted by imperugo in Silverlight on Tuesday 19 January 2010 at 12:09 AM
Nell’ottica di capire come gestire certi scenari in applicazioni OOB (Out Of Browser) in Silverlight 4, ho deciso di approfondire un po’ la cosa e di rispondere ad alcune domande che mi sono posto e che riporto di seguito:
- Come faccio a verificare se l’applicazione Silverlight in esecuzione è in modalità OOB?;
- Come faccio a verificare se l'applicazione Silverlight è installata sul client?;
- Come faccio ad installare un’applicazione sul client (via c#) in modo da poterla utilizzare in OOB?;
- Come faccio a verificare se l’applicazione è in esecuzione in Full Trust mode?;
- Come faccio ad aggiornare l’applicazione OOB?;
Proprio da questi requirements ho deciso di scrivere alcuni mini posts che affrontano le tematiche sopra esposte, e propongono una soluzione.
quindi Stay tuned!
ASP.NET WebForms o MVC?
È da molto tempo che rifletto su questo post, ed ho deciso di parlarne solo ora in quanto la seconda release di ASPNET MVC è prossima al rilascio (al momento in Release Candidate, vedi qui): di riflesso, se ne comincia a parlare molto di più e, ancor più interessante, si comincia ad utilizzarla molto di più.
Sinceramente sono rimasto scioccato da quanto interesse e “strada facile” abbia riscontrato ASP.NET MVC rispetto al papà ASP.NET Web Forms. Di fatto noto come alcuni providers italiani, a non molto tempo dal rilascio della prima release di MVC, offrano già disponibile il nuovo Framework, mentre in passato per avere una versione aggiornata del Framework .NET si doveva aspettare parecchio dopo il suo rilascio. Segno che qualcosa stia veramente cambiando?
Parlando con più persone durante speech, conf, chat, etc ho avuto l’impressione che molti reputino ASP.NET MVC la manna dal cielo e le webforms il MALE.
Sinceramente sono rimasto basito dalla cosa, in quanto reputo MVC un’alternativa alle Web Forms e non un concorrente.
Durante la sessione di Bologna ho cercato di esprimere questo concetto e di portare come esempio gli scenari in cui un Framework può avere vantaggi rispetto all’altro, proprio a dimostrazione che non sono concorrenti.
IMHO la riuscita di un buon prodotto non dipende soltanto dalla qualità tecnica del prodotto, ma anche da come si è riusciti a sfruttare le risorse a propria disposizione (e per risorse intendo tutto,team, budget, tempistiche, etc).
Sicuramente tra le cose da non sottovalutare quando si debba effettuare una scelta importante, come lo è l’utilizzo delle Webforms a discapito di MVC, sono i numerosi vantaggi che le prime possono offrire ripetto al secondo in determinati scenari e/o requirements.
In primis la pluritestata e diffusissima tecnologia che, nonostante ciò che si dica, riesce ad essere altamente scalabile ed estendibile e, da non trascurare, l’approccio Windows form style.
Proprio su questo approccio volevo portare un esempio nato durante lo speech di Bologna, in cui in un team misto (Applicazioni Windows e Applicazioni Web) si aveva la necessità di ricollocare alcune risorse sullo sviluppo web. Per chi viene dal mondo delle Windows Forms ASP.NET MVC risulta sicuramente scomodo e/o complesso; al contrario con le webforms il passaggio è quasi indolore e, in questi scenari, le WebForms possono essere la scelta che decide la riuscita di un progetto.
Personalmente (salvo imposizioni particolari), non realizzerei mai un BackOffice (tipicamente contraddistinto da una buona percentuale di dataentry) in ASP.NET MVC, salvo che uno dei requirements sia la testabilità.
Ovviamente MVC non offre soltanto il vantaggio della testabilità, ma anche la possibilità di avere il controllo totale del markup (ASP.NET 4.0 si avvicina molto a questo) ed una forte espandibilità maturata dall’esperienza fatta precedentemente con ASP.NET WebForms.
Per concludere, le webforms non sono morte, anzi vivono ed in molti scenari vivono alla grande ;)
Technorati Post
Technorati code: KJQ8Y2DY4WB6
Community Tour @Catania concluso, si torna a parlare di MVC!
Con un leggero ritardo rispetto agli altri (vedi qui e qui) scrivo questo post per ringraziare tutti quanti per l’evento che si concluso da pochi giorni a Catania.
In primis lo Sciuro Sudano (mai visto lavorare tanto) che, con un ottimo risultato, ha organizzato insieme a Microsoft un evento con ben 220 persone, dandomi la possibilità di esprimermi davanti a tale pubblico (peccato che poi visual studio si sia opposto impedendo di concludere la demo sulle RIA Applications!).
Un grazie anche a Lorenzo, per i consigli ed il supporto, e a tutto lo staff di OrangeDotNet per aver organizzato l’evento. Impressionante come siano riusciti a gestire tutte quelle persone, i giornalisti, meeting preconfernce, etc.
Per concludere, un grazie va a tutte le persone presenti, studenti, insegnanti e professionisti con cui abbiamo avuto modo di relazionarci.
Ma chi si ferma è perduto! A gennaio si torna a parlare di MVC alla UgiALT.net Conference.
Ancora grazie a tutti.
P.S.: Ma si può mangiare la salsiccia arrosto alle 3 di notte e poi fare colazione alle 8 con l’arancino al ragù? :S …che persona cattiva!
ASP.NET MVC 2 Release Candidate is out
Da poche ore è stata rilasciata la Release Candidate di ASP.NET MVC 2. L’annuncio è stato fatto dal PM del team Phil Haack, tramite il suo blog (qui).
Le novità non sono di grandissimo impatto per lo sviluppatore, ma sicuramente di grande importanza in quanto buona parte del lavoro svolto dal team tra la Beta 2 e la RC è stato dedicato al profiling, ottimizzazione ed estensione di features già esistenti.
Comunque, come ad ogni rilascio, è disponibile la release note con tutte le novità introdotte insieme al download del Framework (qui).
Buon coding!
VS2010 Beta 2 e WCF RIA Services - problemi di compilazione
Posted by imperugo in Silverlight on Wednesday 09 December 2009 at 7:22 PM
Dato che uno è in Beta (Visual Studio 2010), l’altro in preview (WCF RIA Services) non ho motivi per lamentarmi, ma se vi capita questo immenso stack di errore mentre cercate di compilare ...
Error 1 The "CreateRiaClientFilesTask" task failed unexpectedly. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Web.Resources.RegistrationDataResources.resources" was correctly embedded or linked into assembly "imperugo.CommunityTour.Catania.Silverlight.Web" at compile time, or that all the satellite assemblies required are loadable and fully signed. at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName) at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark) at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) at System.Resources.ResourceManager.GetString(String name, CultureInfo culture) at imperugo.CommunityTour.Catania.Silverlight.Web.Resources.RegistrationDataResources.get_SecurityAnswerLabel() in D:\Session\Community Tour Catania\imperugo.CommunityTour.Catania.Silverlight\imperugo.CommunityTour.Catania.Silverlight.Web\Resources\RegistrationDataResources.Designer.cs:line 128 --- End of inner exception stack trace --- at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) at System.ComponentModel.DataAnnotations.LocalizableString.<>c__DisplayClass5.b__2() at System.ComponentModel.DataAnnotations.LocalizableString.GetLocalizableValue() at Microsoft.RiaServices.Tools.DisplayCustomAttributeBuilder.GetAttributeDeclaration(Attribute attribute) at Microsoft.RiaServices.Tools.CustomAttributeGenerator.GenerateCustomAttributes(ClientProxyGenerator proxyGenerator, CodeTypeDeclaration referencingType, IEnumerable`1 attributes, CodeCommentStatementCollection comments, String customCommentHeader, Boolean forcePropagation) at Microsoft.RiaServices.Tools.CustomAttributeGenerator.GenerateCustomAttributes(ClientProxyGenerator proxyGenerator, CodeTypeDeclaration referencingType, IEnumerable`1 attributes, CodeAttributeDeclarationCollection outputCollection, CodeCommentStatementCollection comments, String customCommentHeader, Boolean forcePropagation) at Microsoft.RiaServices.Tools.EntityProxyGenerator.GenEntityProperty(CodeTypeDeclaration proxyClass, PropertyDescriptor propertyDescriptor, String propertyName) at Microsoft.RiaServices.Tools.EntityProxyGenerator.Generate() at Microsoft.RiaServices.Tools.ClientProxyGenerator.GenerateProxyClass(String& generatedCode) at Microsoft.RiaServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies() at Microsoft.RiaServices.Tools.CreateRiaClientFilesTask.ExecuteInternal() at Microsoft.RiaServices.Tools.RiaClientFilesTask.Execute() at Microsoft.Build.Framework.ITask.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult) imperugo.CommunityTour.Catania.Silverlight
...chiudete Visual Studio e riapritelo :).
Ciauz


Recent Comments