<?xml version="1.0" encoding="iso-8859-15"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><channel><title>blogs.ASPItalia.com</title><link>http://blogs.aspitalia.com//cradle//</link><description>blogs.ASPItalia.com</description><language>it-it</language><copyright>1998-2013 ASPItalia.com/blogs.ASPItalia.com</copyright><generator>Generated by feed.ASPItalia.com 'Cortana' 2013.6.5</generator><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><sy:updateBase>1998-01-01T12:00+00:00</sy:updateBase><lastBuildDate>Mon, 07 Jan 2013 13:25:47 GMT</lastBuildDate><image><title>blogs.ASPItalia.com</title><url>http://gui.aspitalia.com/images/aspitalia/syndication.gif</url><link>http://blogs.aspitalia.com//cradle//</link></image><item><title>Azure Mobile Services a Milano</title><link>http://blogs.aspitalia.com/cradle/post2806/Azure-Mobile-Services-Milano.aspx</link><pubDate>Mon, 07 Jan 2013 13:25:47 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2806" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Il prossimo Giovedì 10 Gennaio, si terrà in sede Microsoft Italia a Milano, un &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032539095&amp;amp;culture=it-IT"&gt;evento dedicato ad Azure e ASP.NET&lt;/a&gt;. Io ho l'onore di essere tra gli speaker, e terrò una sessione su Azure Mobile Services: si tratta di una funzionalità che, sebbene sia ancora in preview, mi sta appassionando davvero tantissimo. Ne ha già parlato il mio compagno di merende &lt;a href="http://www.cristiancivera.com/"&gt;Cristian Civera&lt;/a&gt; in un articolo qui su ASPItalia.com e, se sviluppate applicazioni mobile (Win8, Windows Phone, ma anche iOS) che necessitano uno &lt;strong&gt;strato di servizi&lt;/strong&gt;, se avete bisogno di un'infrastruttura per le &lt;strong&gt;push notification&lt;/strong&gt; o di implementare una &lt;strong&gt;security basata su OAuth&lt;/strong&gt;, provate a buttarci un occhio, perché sono decisamente interessanti.&lt;/p&gt; &lt;p&gt;Al momento le registrazioni sono sold-out, se siete interessati, &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032539095&amp;amp;culture=it-IT"&gt;provate a mettervi in lista d'attesa&lt;/a&gt; e incrociamo le dita tutti insieme. E, per chi ci sarà,  ci vediamo lì, fatevi riconoscere! &lt;img  alt="Smile" src="http://blogs.aspitalia.com/img/cradle/windows-live-writer/azure-mobile-services-a-milano_ad94/wlemoticon-smile_2.png"&gt;&lt;/p&gt; &lt;p&gt;Ciao!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Windows_8/" rel="tag"&gt;Windows 8&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Azure/" rel="tag"&gt;Windows Azure&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Client/" rel="tag"&gt;Windows Client&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone/" rel="tag"&gt;Windows Phone&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7/" rel="tag"&gt;Windows Phone 7&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7.1/" rel="tag"&gt;Windows Phone 7.1&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7.1.1/" rel="tag"&gt;Windows Phone 7.1.1&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7.5/" rel="tag"&gt;Windows Phone 7.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_8/" rel="tag"&gt;Windows Phone 8&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2806/Azure-Mobile-Services-Milano.aspx"&gt;&lt;em&gt;Azure Mobile Services a Milano&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, Windows 8, Windows Azure, Windows Client, Windows Phone, Windows Phone 7, Windows Phone 7.1, Windows Phone 7.1.1, Windows Phone 7.5, Windows Phone 8</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2806/Azure-Mobile-Services-Milano.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2806/Azure-Mobile-Services-Milano.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2806.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2806</trackback:ping></item><item><title>Windows 8 su MacBook Pro, la mia esperienza</title><link>http://blogs.aspitalia.com/cradle/post2777/Windows-MacBook-Esperienza.aspx</link><pubDate>Mon, 20 Aug 2012 06:26:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2777" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Negli ultimi 2-3 giorni mi sono "divertito" (per modo di dire) ad aggiornare il mio MacBook Pro a Windows 8, vi racconto com'è andata.&lt;/p&gt; &lt;p&gt;La configurazione di partenza era una partizione Boot Camp con Windows 7 Ultimate e Boot Camp 3.3. Nel mio sistema casalingo,&lt;strong&gt; effettuo backup giornalieri dell'hard disk&lt;/strong&gt; e mantengo i dati più importanti &lt;strong&gt;sincronizzati su SkyDrive&lt;/strong&gt;, quindi nessuna paura di perdere informazioni. Tuttavia, ho fatto anche un ulteriore &lt;strong&gt;backup con Easy Transfer&lt;/strong&gt;, non si sa mai che capiti di dover ripartire da zero, e almeno ci manteniamo i settings e abbiamo una bella lista delle applicazioni da reinstallare. Il metodo più semplice sarebbe una bella image del disco, purtroppo però su Mac non è così banale effettuare il restore, magari ne parleremo un'altra volta, però purtroppo è una sfiga con cui si deve convivere.&lt;/p&gt; &lt;p&gt;Il primo esperimento che ho provato è stato quello dell'upgrade verso Windows 8 Pro. L'installazione è stata relativamente veloce, una mezz'oretta più o meno, è si è conclusa senza problemi. Al riavvio mi sono effettivamente ritrovato sul nuovo sistema Microsoft, con tutto il software già installato correttamente funzionante, a parte alcune eccezioni:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;MagicISO, che non funziona su Windows 8, e che comunque è assolutamente superfluo visto che ora la funzionalità di mounting delle ISO è nativa nel sistema; ho risolto rimuovendo questo tool. &lt;li&gt;Shrew Soft VPN Client, un tool che uso per accedere ad alcune VPN di clienti, che si appoggia ad un servizio Windows che, da un'occhiata sul Task Manager, si beveva un sacco di CPU senza funzionare. Ho risolto rimuovendo tutto e reinstallando. &lt;li&gt;La webcam FaceTime HD Camera non è stata riconosciuta, ma un update driver ha risolto tutto da solo &lt;li&gt;Il trackpad non andava, non era riconosciuto, non appariva tra i device di boot camp e il driver non si aggiornava&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;L'ultimo punto mi ha creato parecchie difficoltà, ho smanettato un po' con i driver, ma non c'è stato davvero verso, neanche installando manualmente la versione 4.0 del driver del solo trackpad. Ho letto comunque in rete che, se si parte direttamente dalla versione 4.0 di tutti i boot camp, non dovrebbero esserci problemi. Personalmente però non sono riuscito a testare questo scenario, perché quando ho provato a rimuoverli il sistema è diventato instabile e allora ho preferito un wipe completo ed effettuare l'installazione da zero.&lt;/p&gt; &lt;p&gt;Pertanto, ho masterizzato un DVD con la ISO di Windows 8 Enterprise (il boot da USB su Mac è abbastanza una chimera) e ho iniziato il processo di installazione clean. A chi dovesse accingersi a questa operazione raccomando, nel caso in cui non si abbia un altro pc a disposizione, di copiare preventivamente su un'unità esterna i driver Boot Camp 4.0. Questo perché, una volta completata l'installazione, &lt;strong&gt;Windows 8 non riconosce praticamente alcuna periferica di rete&lt;/strong&gt;, e pertanto è necessario averli in locale altrimenti rischiate di andare un po' in difficoltà.&lt;/p&gt; &lt;p&gt;La buona notizia, però, è che questa volta tutto funziona correttamente, le periferiche vengono riconosciute senza problemi (trackpad compreso). Anche Easy Transfer, in fase di ripristino, funziona correttamente e mi sono ritrovato in breve tempo con tutti i miei dati, sebbene con un interminabile elenco di applicazioni da reinstallare. Un  paio di note:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Se sviluppate applicazioni per Windows Phone, vi consiglio di seguire &lt;a href="http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx"&gt;questi passaggi&lt;/a&gt; per installare l'SDK, e di aggiornare, come consigliato, anche alla release 7.1.1.&lt;/li&gt; &lt;li&gt;Se volete accedere a dei vecchi backup di Windows 7 e diventate matti cercando il restore, in Windows 8 questo tool si chiama &lt;strong&gt;Windows 7 File Recovery&lt;/strong&gt; (grazie &lt;a href="http://blogs.aspitalia.com/sm15455/"&gt;Stefano&lt;/a&gt; per la dritta!)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Ciao!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Windows_8/" rel="tag"&gt;Windows 8&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Client/" rel="tag"&gt;Windows Client&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2777/Windows-MacBook-Esperienza.aspx"&gt;&lt;em&gt;Windows 8 su MacBook Pro, la mia esperienza&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, Windows 8, Windows Client</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2777/Windows-MacBook-Esperienza.aspx</guid><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2777/Windows-MacBook-Esperienza.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2777.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2777</trackback:ping></item><item><title>Un libro davvero bello su Visual Studio LightSwitch</title><link>http://blogs.aspitalia.com/cradle/post2757/Libro-Davvero-Bello-Visual-Studio-LightSwitch.aspx</link><pubDate>Wed, 28 Mar 2012 17:49:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2757" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Un mio cliente ha recentemente iniziato ad utilizzare &lt;strong&gt;Visual Studio LightSwitch&lt;/strong&gt; per la realizzazione di alcuni software che richiedevano tempi di sviluppo estremamente ridotti. Si tratta di una piattaforma davvero produttiva, alcuni click, poche righe di codice e il tuo gestionale è lì che gira. Ma come tutti i software RAD, quando qualcuno ti chiede "ma non si potrebbe modificare X?" o "perchè non cambiamo Y in Z?" iniziano i veri problemi, perchè bisogna conoscere a fondo il tool e cosa ti permette di fare, quali sono i limiti e come funzionano gli internals.&lt;/p&gt; &lt;p&gt;&lt;span style="font-weight: normal; "&gt;Allora mi sono rivolto a un esperto, o meglio ho letto il libro &lt;/span&gt;&lt;strong&gt;&lt;a href="http://www.amazon.it/Microsoft-Visual-Studio-LightSwitch-Unleashed/dp/0672335530/ref=sr_1_2?ie=UTF8&amp;amp;qid=1332957083&amp;amp;sr=8-2"&gt;Visual Studio LightSwitch Unleashed&lt;/a&gt;&lt;/strong&gt;, edito da SAMS,&amp;nbsp;del nostro &lt;a href="http://community.visual-basic.it/Alessandro/default.aspx"&gt;Alessandro Del Sole&lt;/a&gt;. Arrivo subito al dunque: vi interessa LightSwitch? allora è un riferimento a mio modo di vedere &lt;strong&gt;assolutamente imprescindibile&lt;/strong&gt;, per &lt;strong&gt;completezza&lt;/strong&gt;, &lt;strong&gt;chiarezza espositiva &lt;/strong&gt;e &lt;strong&gt;qualità degli esempi&lt;/strong&gt;. In questo testo Alessandro prende letteralmente per mano il lettore, supportandolo già nelle primissime fasi dell'installazione e dell'esplorazione dell'inedita interfaccia di Lightswitch. Si impara a costruire la prima applicazione a colpi di drag'n drop, poi si scrive un po' di codice, e si va avanti così, con la complessità che aumenta in maniera graduale, senza mai spiazzarci, ma allo stesso tempo esplorando LightSwitch in tutti i suoi meandri. Le &lt;strong&gt;tematiche avanzate non mancano&lt;/strong&gt; infatti, e sono in grado di soddisfare anche esigenze più "spinte": tra gli altri, si parla di modello di applicazione, di come integrarla con custom control Silverlight, di come estendere il framework e aggiungere report.&lt;/p&gt; &lt;p&gt;&lt;span style="font-weight: normal; "&gt;Insomma, è un libro che rappresenta un bel valore aggiunto &lt;/span&gt;&lt;strong&gt;per qualsiasi sviluppatore&lt;/strong&gt; che usi Visual Studio LightSwitch e, lasciatemelo dire con una punta di campanilismo, sono felice che a scriverlo sia stato un italiano: ho avuto modo di scrivere libri in inglese in passato e so, per esperienza personale, che non è per nulla semplice. Quindi complimenti doppi da parte mia!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Silverlight/" rel="tag"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/XAML/" rel="tag"&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2757/Libro-Davvero-Bello-Visual-Studio-LightSwitch.aspx"&gt;&lt;em&gt;Un libro davvero bello su Visual Studio LightSwitch&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, Silverlight, Visual Studio, XAML</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2757/Libro-Davvero-Bello-Visual-Studio-LightSwitch.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2757/Libro-Davvero-Bello-Visual-Studio-LightSwitch.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2757.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2757</trackback:ping></item><item><title>I miei Community Days 2012...</title><link>http://blogs.aspitalia.com/cradle/post2744/Community-Days-2012.aspx</link><pubDate>Mon, 20 Feb 2012 08:35:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2744" border="0" style="width:1px; height:1px;" /&gt;
&lt;p&gt;...sono stati semplicemente &lt;strong&gt;devastanti&lt;/strong&gt;, ho avuto bisogno di un paio di giorni per riprendermi, ma la soddisfazione per come siano andate le cose, per il successo, per la gente entusiasta, ecc. ecc. è stata enorme e ripaga ampiamente tutta la fatica degli ultimi mesi. Per la prima volta, nella mia breve carriera da speaker, ho fatto una doppietta e ho tenuto due sessioni, una su &lt;strong&gt;jQuery Mobile&lt;/strong&gt; e su &lt;strong&gt;WinJS&lt;/strong&gt;, che mi hanno impegnato alla grande, complici anche alcuni problemini tecnici (il mio MacBook faceva un po' a pugni con il maxischermo di sala 3-4, grazie &lt;a href="http://blogs.ugidotnet.org/pape/Default.aspx"&gt;Andrea&lt;/a&gt;). Per me è stato un onore parlare di questi argomenti, perché, vuoi o non vuoi, rappresentano l'&lt;strong&gt;evoluzione/rivoluzione&lt;/strong&gt; di ciò che saranno le applicazioni desktop e web dei prossimi anni, mica pizza e fichi! Ci credo molto, ed è il motivo per cui sto investendo tantissimo in quest'ambito: il mondo dei device, siano essi &lt;strong&gt;tablet&lt;/strong&gt;, &lt;strong&gt;smartphone&lt;/strong&gt; o &amp;quot;&lt;strong&gt;ibridi&lt;/strong&gt;&amp;quot;, sarà quello con cui ci misureremo sempre più di frequente.&lt;/p&gt; &lt;p&gt;L'impressione è che comunque siano piaciute, ho ricevuto tante domande al termine dei talk e questa è una grande soddisfazione, la speranza è che possano costituire degli spunti interessanti che un giorno si traducano in codice di produzione.&lt;/p&gt; &lt;p&gt;Tutto il materiale, slide e demo (anche quelle che per motivi di tempo non sono riuscito a mostrarvi) sono online sia &lt;a href="http://www.aspitalia.com/eventi/35/Community-Days-2012-Milano.aspx"&gt;qui su ASPItalia&lt;/a&gt; che sul &lt;a href="http://www.communitydays.it/events/communitydays-2012/"&gt;sito dei Community Days&lt;/a&gt;. Non mi resta davvero altro da dire, se non un sonoro grazie a tutti, organizzatori, speaker e soprattutto alle oltre 800 persone che si sono iscritte e sono state al Microsoft Innovation Campus con noi per questi due giorni: con i Community Days 2012 abbiamo alzato la barra ad un livello superiore, e il merito è di tutti, nessuno escluso!&lt;/p&gt; &lt;p&gt;Ci si vede ai &lt;a href="http://www.communitydays.it/events/communitydaysbari-2012/"&gt;prossimi appuntamenti&lt;/a&gt;, e soprattutto ci si legge su queste pagine!&lt;/p&gt; &lt;p&gt;Aloha!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET/" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_4.0/" rel="tag"&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_MVC/" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Community_Days_2012/" rel="tag"&gt;Community Days 2012&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/HTML5/" rel="tag"&gt;HTML5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/JavaScript/" rel="tag"&gt;JavaScript&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/jQuery/" rel="tag"&gt;jQuery&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_8/" rel="tag"&gt;Windows 8&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Client/" rel="tag"&gt;Windows Client&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2744/Community-Days-2012.aspx"&gt;&lt;em&gt;I miei Community Days 2012...&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 4.0, ASP.NET, ASP.NET 4.0, ASP.NET MVC, Community Days 2012, HTML5, JavaScript, jQuery, Windows 8, Windows Client</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2744/Community-Days-2012.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2744/Community-Days-2012.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2744.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2744</trackback:ping></item><item><title>PhoneGap e Titanium, esiste davvero il write once run anywhere su mobile?</title><link>http://blogs.aspitalia.com/cradle/post2730/PhoneGap-Titanium-Esiste-Davvero-Write-Once-Run-Anywhere.aspx</link><pubDate>Thu, 12 Jan 2012 08:30:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2730" border="0" style="width:1px; height:1px;" /&gt;
&lt;p&gt;Ultimamente si fa davvero un gran parlare di framework che consentono di sviluppare sulle varie piattaforme mobile, &lt;strong&gt;senza dover necessariamente scrivere codice nativo&lt;/strong&gt;. Tra queste, probabilmente la più famosa è &lt;strong&gt;&lt;a href="http://phonegap.com/"&gt;PhoneGap&lt;/a&gt;&lt;/strong&gt;, ultimamente davvero non passa giorno senza che venga nominata da qualche parte, ma anche &lt;a href="http://www.appcelerator.com/"&gt;Appcelerator Titanium&lt;/a&gt;, seppur meno menzionato, recita in un ruolo di protagonista nell'ambito di questo genere di prodotti. Alcune settimane fa, con &lt;a href="http://www.5dlabs.it/"&gt;&lt;strong&gt;5DLabs&lt;/strong&gt;&lt;/a&gt; abbiamo fatto una serie di studi di fattibilità in merito per conto di un cliente, e ho pensato di riportarvi un po' l'esperienza maturata. &lt;/p&gt; &lt;p&gt;Ma andiamo con ordine e spendiamo qualche parola su PhoneGap e Titanium per capire un po' meglio di cosa stiamo parlando. Iniziamo col dire che ambedue questi servono per sviluppare &lt;strong&gt;applicazioni native&lt;/strong&gt;, pronte cioè a essere distribuite tramite &lt;strong&gt;AppStore&lt;/strong&gt;, &lt;strong&gt;Android Market&lt;/strong&gt;, &lt;strong&gt;Marketplace &lt;/strong&gt;di Window Phone, ecc.ecc.. Entrambi utilizzano &lt;strong&gt;Javascript&lt;/strong&gt; come linguaggio di sviluppo, ma con due filosofie profondamente diverse. In ogni caso, non possono prescindere, ovviamente, dagli SDK nativi per queste piattaforme. Conseguenza: se dovete sviluppare per iOS vi serve comunque un &lt;strong&gt;Mac con OSX&lt;/strong&gt;.&lt;/p&gt; &lt;h3&gt;&lt;/h3&gt; &lt;h3&gt;PhoneGap&lt;/h3&gt; &lt;p&gt;PhoneGap è un framework di sviluppo &lt;strong&gt;ibrido&lt;/strong&gt;, nel senso che consente di realizzare App native per un &amp;#xa0;gran numero di piattaforme (sono supportate tutte le più diffuse, &lt;a href="http://phonegap.com/about/features/"&gt;come riportato qui&lt;/a&gt;) utilizzando &lt;strong&gt;HTML5 + CSS3 + Javascript&lt;/strong&gt;. Ok, ma come funziona nella pratica? Un'applicazione PhoneGap fondamentalmente è costituita da un'insieme di pagine eseguite all'interno di &lt;strong&gt;un controllo browser&lt;/strong&gt;, pagine il cui codice Javascript sostituisce&lt;strong&gt; in tutto e per tutto&lt;/strong&gt; quello che scriveremmo in Objective-C, Java o C#. Dovete invocare un servizio web? Chiamata AJAX, magari con &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;. Dovete realizzare una form di input di dati? Vai di styling CSS, o &lt;a href="http://jquerymobile.com/"&gt;jQuery Mobile&lt;/a&gt; o &lt;a href="http://www.sencha.com/products/touch"&gt;Sencha Touch&lt;/a&gt; che dir si voglia.&lt;/p&gt; &lt;p&gt;Ok, ma allora a cosa serve il framework? Beh, PhoneGap, oltre ad una serie di template di progetto per i vari ambienti di sviluppo, fondamentalmente è costituito da una libreria javascript che fa da &lt;strong&gt;bridge&lt;/strong&gt; tra il nostro codice in pagina e le funzionalità native del telefono, dandoci di fatto la possibilità di accedere a funzionalità native del sistema e del dispositivo, come i &lt;strong&gt;contatti&lt;/strong&gt;, il &lt;strong&gt;GPS&lt;/strong&gt; o la &lt;strong&gt;fotocamera&lt;/strong&gt;.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Punti a favore&lt;/strong&gt;&lt;/h4&gt;&lt;p&gt;Sicuramente il fatto che &lt;strong&gt;non dobbiamo praticamente imparare nulla&lt;/strong&gt;, il Javascript è quello che abbiamo sempre usato, i framework anche, stesso discorso per i &lt;strong&gt;tool&lt;/strong&gt; (e scusate se è poco!). Il passo per convertire un'app web in una nativa è davvero brevissimo. Inoltre l'enorme numero di dispositivi supportati, praticamente tutti gli smartphone moderni, è sicuramente un fattore non trascurabile. In buona sostanza, &lt;strong&gt;ad un costo quasi zero&lt;/strong&gt; siamo in grado di sviluppare un'app nativa, anche considerando la natura assolutamente gratuita di questo prodotto. Non male eh? Purtroppo però non finisce qui.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Svantaggi&lt;/strong&gt;&lt;/h4&gt;&lt;p&gt;Diversi aspetti mi hanno deluso di PhoneGap, che presenta dei limiti davvero pesanti a causa dei quali non mi sono sentito di consigliarne l'adozione. In particolare, in ordine sparso:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Siamo fondamentalmente costretti a &lt;strong&gt;reinventare la ruota&lt;/strong&gt;: possiamo in buona sostanza&lt;strong&gt; dimenticarci tutti i controlli nativi&lt;/strong&gt; per la piattaforma, con il risultato che le applicazioni &lt;strong&gt;perdono&lt;/strong&gt; completamente il look &amp;amp; feel tipico del dispositivo su cui girano. Esistono alcuni plugin che supportano il rendering di 3 o 4 controlli nativi (AFAIK, TabBar, Toolbar, ActionSheet e StatusBar, e solo su iPhone), ma in questo modo si perde la portabilità. Ne vale davvero la pena, allora? &lt;/li&gt;&lt;li&gt;Conseguenza diretta del punto precedente, è che la nostra app &lt;strong&gt;rischia di non essere accettata&lt;/strong&gt;. Alcuni reviewers sono molto attenti, ad esempio, al rispetto delle guidelines della UX. Fatevi un giro su google e cercate &amp;quot;PhoneGap app rejected&amp;quot; e troverete davvero tanti casi. &lt;/li&gt;&lt;li&gt;Generalmente il funzionamento dell'applicazione è &lt;strong&gt;meno responsivo e fluido&lt;/strong&gt; di una eventuale controparte nativa (ma questo, invero, dipende dalla bontà del browser). &lt;/li&gt;&lt;li&gt;Il codice è &lt;strong&gt;interpretato&lt;/strong&gt;, niente compilazione. Quindi gli unici errori sono a &lt;strong&gt;runtime&lt;/strong&gt;. Già così non è il massimo, ma, more than worse, ... &lt;/li&gt;&lt;li&gt;..il &lt;strong&gt;debug&lt;/strong&gt;, come modernamente lo intendiamo, è praticamente &lt;strong&gt;impossibile&lt;/strong&gt;. Scordatevi di mettere un breakpoint nel codice e di procedere step by step. Molti consigliano di eseguire l'applicazione su un browser tradizionale e debuggare da lì, ma a me sembra un timido palliativo, il debug lo &lt;strong&gt;voglio&lt;/strong&gt; eseguire dal telefono o dal tablet! Alla fine vi toccherà tornare all'antico, con un sacco di begli &lt;strong&gt;alert&lt;/strong&gt; sparsi qua e là nel codice. &lt;/li&gt;&lt;li&gt;Per alcune funzionalità (es. riproduzione video) vi toccherà comunque imparare il codice nativo . &lt;/li&gt;&lt;li&gt;PhoneGap &lt;strong&gt;non&lt;/strong&gt; è Write Once Run Anywhere, semplicemente perchè se volete supportare n dispositivi avrete&lt;strong&gt; n progetti&lt;/strong&gt;, magari ognuno la &lt;strong&gt;copia&lt;/strong&gt; dell'altro, ma sempre n progetti da &lt;strong&gt;manutenere&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Appcelerator Titanium&lt;/h3&gt; &lt;p&gt;Iniziamo dicendo che Titanium è un &lt;strong&gt;prodotto commerciale&lt;/strong&gt;, si paga una fee mensile per utilizzarlo e sono previsti diversi livelli di abbonamento (tra cui uno &amp;quot;community&amp;quot; gratuito) che si distinguono, oltre che per il supporto, anche in base alle funzionalità attive. Il linguaggio utilizzato è sempre Javascript, ma l'approccio rispetto a PhoneGap è &lt;strong&gt;sensibilmente differente&lt;/strong&gt;: il codice che scriviamo, infatti, questa volta non ha nulla a che vedere con HTML, CSS o sviluppo Web in generale, bensì si appoggia ad un &lt;strong&gt;object model proprietario&lt;/strong&gt; che wrappa gli oggetti nativi delle varie piattaforme. Il risultato è che il progetto Titanium &lt;strong&gt;genera codice nativo&lt;/strong&gt;, con un layer che ne consente l'invocazione via Javascript.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Punti a favore&lt;/strong&gt;&lt;/h4&gt;&lt;p&gt;Titanium ha un &lt;strong&gt;IDE proprietario&lt;/strong&gt;, basato su Eclipse. Supporta l'autocompletamento del codice e ha un &lt;strong&gt;debugger integrato&lt;/strong&gt;, basato su Firebug. Quando creiamo un nuovo progetto ci viene chiesto quali piattaforme supportare come target, poi in fase di compilazione scegliamo su quale compilare. Corollario: &lt;strong&gt;il progetto resta uno solo&lt;/strong&gt;, non dobbiamo manutenerne n copie, molto più vicino all'idea di write once run anywhere. &lt;/p&gt; &lt;p&gt;Anche qui, comunque, è richiesta la presenza degli SDK ufficiali, quindi se vogliamo sviliuppare su iOS non abbiamo scelta e dobbiamo lavorare su OSX. Il risultato finale, comunque, è davvero notevole, e soprattutto &lt;strong&gt;indistinguibile&lt;/strong&gt; da una qualsiasi app realizzata con XCode o Android SDK + Eclipse. Ovviamente &lt;strong&gt;non tutti gli oggetti&lt;/strong&gt; di Titanium hanno corrispondenti sia su iOS che su Android, e pertanto alle volte è necessario qualche &amp;quot;&lt;em&gt;if (platform == iOS)&lt;/em&gt;&amp;quot;, ma alla fine non è drammatico.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Problemi&lt;/strong&gt;&lt;/h4&gt;&lt;p&gt;Il limite principale di Titanium è che, al momento, &lt;strong&gt;supporta esclusivamente Android e iOS&lt;/strong&gt;. Niente Windows Phone, pertanto. Però può essere comunque interessante valutarlo se il nostro team è già skillato sulla piattaforma Microsoft e vogliamo comunque produrre applicazioni per questi altri due target.&lt;/p&gt; &lt;p&gt;Da un punto di vista dell'utilizzo, il primo ostacolo in cui mi sono imbattuto è &lt;strong&gt;l'assenza&lt;/strong&gt; di un qualsiasi &lt;strong&gt;editor grafico&lt;/strong&gt;, o comunque di un ausilio visuale per lo sviluppo di interfacce. In pratica siamo costretti a fare tutto da codice, istanziando controlli, valorizzandone le proprietà, aggiungendoli ad un controllo contenitore, e così via. Sicuramente è un approccio che si adatta non proprio bene a interfacce complesse e che rende &lt;strong&gt;molto difficoltosa&lt;/strong&gt; l'interazione con un grafico.&lt;/p&gt; &lt;p&gt;L'aspetto che però mi è piaciuto meno, è la &lt;strong&gt;scarsa &lt;strike&gt;estendibilità&lt;/strike&gt; flessibilità&lt;/strong&gt; del framework, sicuramente uno dei limiti più difficilmente superabili dell'architettura. Nel mio caso, ad esempio, avevo bisogno di una ScrollView (i &amp;quot;pallini&amp;quot; che rappresentano la paginazione della springboard di iOS, per capirci) in direzione verticale; Titanium ne propone solo una orizzontale e sono stato costretto a parecchi hack per ottenerla, sebbene invece sia assolutamente esistente in XCode. In generale questa mancanza di flessibilità può rappresentare un problema non da poco, e dobbiamo essere pronti a rivedere le interfacce in base alle possibilità del framework.&lt;/p&gt;&lt;p&gt;[EDIT]Come mi segnala &lt;a href="http://blogs.ugidotnet.org/Box/Default.aspx"&gt;Alessandro Ghizzardi&lt;/a&gt;, in realtà, &lt;a href="http://www.slideshare.net/omorandi/extending-appcelerator-titanium-mobile-through-native-modules"&gt;è possibile realizzare dei wrapper&lt;/a&gt; di funzionalità native ed esporle tramite Javascript in Titanium. Ovviamente, però, in questo caso si ha la necessità di scrivere codice in Objective-C e/o Java (a seconda della piattaforma), quindi le skill dobbiamo averle, però sicuramente è una feature che eleva di molto il livello del prodotto.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Conclusione&lt;/strong&gt;&lt;/h4&gt;&lt;p&gt;Entrambi i prodotti sono &lt;strong&gt;ben lungi&lt;/strong&gt; dall'essere perfetti. PhoneGap, secondo me, dà come valore aggiunto il riutilizzo delle skill, ma &lt;strong&gt;ad un costo non indifferente&lt;/strong&gt;, ossia tutte le problematiche che ho citato. Pertanto lo vedo magari adatto ad un progetto &lt;strong&gt;estemporaneo&lt;/strong&gt; se non vogliamo investire su una piattaforma nel lungo periodo, per il resto davvero mi lascia molto scettico.&lt;/p&gt; &lt;p&gt;Con Titanium la storia è differente: non nego che, sebbene sulle prime mi abbia lasciato un po' spaesato, l'impressione che ne ho tratto è quella di un &lt;strong&gt;buon prodotto&lt;/strong&gt;, con alcuni limiti oggettivi che lo rendono poco &amp;quot;snello&amp;quot; in progetti di alto livello. Però davvero non è male, provate a compilare &lt;a href="https://github.com/appcelerator/KitchenSink"&gt;Kitchen Sink&lt;/a&gt; per farvi un'idea. Il framework e il modello a oggetti &lt;strong&gt;dobbiamo comunque impararlo&lt;/strong&gt;, però, quindi non ci sono grandi vantaggi se poi puntiamo ad una sola piattaforma delle due disponibili.&lt;/p&gt; &lt;p&gt;Per quanto mi riguarda, &lt;strong&gt;la prima opzione resta la piattaforma nativa&lt;/strong&gt;, per tutta una serie di ragioni: ottimizzazione e controllo del codice, debug, facilità nel reperire documentazione, informazioni e componenti di terze parti, e potrei continuare... Sono aspetti che fanno la differenza, e che secondo me già nel medio periodo ripagano l'investimento sostenuto per acquisire le skill necessarie, investimento che, da professionisti, probabilmente è &lt;strong&gt;uno dei più futuribili&lt;/strong&gt; che oggi possiamo fare.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/HTML5/" rel="tag"&gt;HTML5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/JavaScript/" rel="tag"&gt;JavaScript&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/jQuery/" rel="tag"&gt;jQuery&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone/" rel="tag"&gt;Windows Phone&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7/" rel="tag"&gt;Windows Phone 7&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7.1/" rel="tag"&gt;Windows Phone 7.1&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Phone_7.5/" rel="tag"&gt;Windows Phone 7.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Store/" rel="tag"&gt;Windows Store&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2730/PhoneGap-Titanium-Esiste-Davvero-Write-Once-Run-Anywhere.aspx"&gt;&lt;em&gt;PhoneGap e Titanium, esiste davvero il write once run anywhere su mobile?&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, HTML5, JavaScript, jQuery, Windows Phone, Windows Phone 7, Windows Phone 7.1, Windows Phone 7.5, Windows Store</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2730/PhoneGap-Titanium-Esiste-Davvero-Write-Once-Run-Anywhere.aspx</guid><slash:comments>10</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2730/PhoneGap-Titanium-Esiste-Davvero-Write-Once-Run-Anywhere.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2730.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2730</trackback:ping></item><item><title>ASPItalia ti premia con Visual Studio 2010 Ultimate + MSDN Subscription!</title><link>http://blogs.aspitalia.com/cradle/post2653/ASPItalia-Premia-Visual-Studio-2010-Ultimate-MSDN-Subscription.aspx</link><pubDate>Wed, 01 Sep 2010 09:52:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2653" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Eh sì, per alleviarvi il triste ritorno dalle vacanze, ci siamo inventati un'iniziativa niente male: se siete appassionati di tecnologia e di sviluppo software, se avete pensato qualche volta che potevate contribuire con le vostre conoscenze a migliorare la community di ASPItalia, se magari in passato avete trovato delle dritte interessanti sui nostri forum e vi va di passare dalla parte di chi i consigli e le soluzioni invece le elargisce... insomma, se un po' vi riconoscete in qualcuno di questi &amp;quot;se&amp;quot;, &lt;a href="http://g.aspitalia.com/landings/competitions/"&gt;ASPItalia Community Awards 2010&lt;/a&gt; è lì per voi!&lt;/p&gt;&lt;p&gt;In base ai vostri contributi, secondo le modalità descritte nella &lt;a href="http://g.aspitalia.com/landings/competitions/"&gt;pagina dell'evento&lt;/a&gt;, stileremo una classifica e coloro che a fine mese si troveranno nelle prime &lt;strong&gt;due posizioni&lt;/strong&gt; si porteranno a casa niente meno che una &lt;strong&gt;Visual Studio 2010 Ultimate con MSDN Subscription&lt;/strong&gt; a testa (quindi in totale, regaliamo ben QUATTRO MSDN a quattro di voi!).&lt;/p&gt;&lt;p&gt;Dai, cosa aspettate? ;-)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET/" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_4.0/" rel="tag"&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASPItalia.com/" rel="tag"&gt;ASPItalia.com&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Silverlight/" rel="tag"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/XAML/" rel="tag"&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2653/ASPItalia-Premia-Visual-Studio-2010-Ultimate-MSDN-Subscription.aspx"&gt;&lt;em&gt;ASPItalia ti premia con Visual Studio 2010 Ultimate + MSDN Subscription!&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 4.0, ASP.NET, ASP.NET 4.0, ASPItalia.com, Silverlight, Visual Studio, XAML</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2653/ASPItalia-Premia-Visual-Studio-2010-Ultimate-MSDN-Subscription.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2653/ASPItalia-Premia-Visual-Studio-2010-Ultimate-MSDN-Subscription.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2653.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2653</trackback:ping></item><item><title>Ma che figo Reflector Pro di Red Gate</title><link>http://blogs.aspitalia.com/cradle/post2608/Figo-Reflector-Red-Gate.aspx</link><pubDate>Thu, 08 Apr 2010 22:47:25 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2608" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Come molti di voi sapranno, qualche mese fa &lt;a href="http://www.red-gate.com/"&gt;Red Gate&lt;/a&gt; ha acquistato &lt;a href="http://www.red-gate.com/products/reflector/index.htm"&gt;Reflector&lt;/a&gt;, il tool che, dopo Visual Studio, ogni sviluppatore .NET dovrebbe avviare quando si siede davanti al PC.&lt;/p&gt; &lt;p&gt;Da allora, alla versione tradizionale che è rimasta gratuita, si è aggiunto anche Reflector Pro, un'edizione a pagamento che promette cose mirabolanti. Volete un esempio? Sentite un po'.&lt;/p&gt; &lt;p&gt;Ho creato una semplice ConsoleApplication in C#, in cui ho messo questo codice:&lt;/p&gt; &lt;code&gt;List&amp;lt;string&amp;gt; someList = new List&amp;lt;string&amp;gt;(); &lt;br /&gt;someList.Add(&amp;quot;Ciao&amp;quot;);&lt;/code&gt; &lt;p&gt;Dopo aver installato Reflector Pro, in Visual Studio appare un nuovo menu, dal quale possiamo selezionare la voce &lt;strong&gt;Chose Assemblies to Debug&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.aspitalia.com/img/cradle/machefigoreflectorprodiredgate_b43/image_3.png" width="369" height="154" /&gt; &lt;/p&gt; &lt;p&gt;A questo punto, dalla finestra di Reflector, selezioniamo di voler debuggare &lt;strong&gt;mscorlib&lt;/strong&gt;, ossia l'assembly che contiene la definizione della classe &lt;strong&gt;List&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.aspitalia.com/img/cradle/machefigoreflectorprodiredgate_b43/image_5a845fd0-0f55-4616-9886-5c8139085fe0.png" width="442" height="322" /&gt; &lt;/p&gt; &lt;p&gt;Ciò che accade, è che Reflector inizia la decompilazione dell'assembly; nel nostro caso impiega qualche minuto, visto che si tratta di parecchio codice, ma esiste uno storage interno che funge da cache per queste definizioni, così che non sia necessario ripetere l'operazione. Al termine di tutto, mettiamo un breakpoint sulla seconda riga del nostro codice ed avviamo l'applicazione in debug:&lt;/p&gt; &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.aspitalia.com/img/cradle/machefigoreflectorprodiredgate_b43/image_502e8894-0dbe-435b-8533-a58c12c6deca.png" width="493" height="57" /&gt;&amp;#160; &lt;/p&gt; &lt;p&gt;Quando l'esecuzione si ferma sulla riga evidenziata, premiamo F11 e...&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.aspitalia.com/img/cradle/machefigoreflectorprodiredgate_b43/image_e14d8159-c258-49d6-9820-41bd84d4c85c.png" width="400" height="236" /&gt; &lt;/p&gt; &lt;p&gt;Notate il nome della classe in alto :-) Siamo andati in Step In dentro al codice del metodo &lt;strong&gt;Add&lt;/strong&gt; di &lt;strong&gt;List&amp;lt;T&amp;gt;&lt;/strong&gt; e possiamo avvalerci di tutte le funzionalità del debug di Visual Studio, dai watch (come si vede in figura) a che so... il debug multithreading di cui ho parlato ieri, mentre procediamo in step by step all'interno di mscorlib.dll.&lt;/p&gt; &lt;p&gt;Mica male!!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2608/Figo-Reflector-Red-Gate.aspx"&gt;&lt;em&gt;Ma che figo Reflector Pro di Red Gate&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, Visual Studio</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2608/Figo-Reflector-Red-Gate.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2608/Figo-Reflector-Red-Gate.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2608.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2608</trackback:ping></item><item><title>Multithreading e parallel computing nel .NET Framework 4.0</title><link>http://blogs.aspitalia.com/cradle/post2607/Multithreading-Parallel-Computing-.NET-Framework-4.0.aspx</link><pubDate>Wed, 07 Apr 2010 23:40:41 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2607" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Una delle novità dell'imminente nuova versione del .NET Framework a cui personalmente ho dato parecchia importanza è il notevole supporto per &lt;strong&gt;multithreading&lt;/strong&gt; e &lt;strong&gt;parallel computing&lt;/strong&gt;. Spesso siamo abituati a confondere questi due termini e a usarli quasi come sinonimi, anche se sinonimi veri e propri non sono. Il multithreading è un qualcosa che è sui nostri desktop già da diversi anni, supportato dal Framework sin dalle sue prime incarnazioni. Il calcolo parallelo è invece qualcosa di più, che sfrutta il multithreading per massimizzare l'uso dei core messi a disposizione dall'hardware, un aspetto fondamentale nel momento in cui anche sui laptop non è raro imbattersi in 4, 6 o 8 core.&lt;/p&gt; &lt;p&gt;Ho avuto modo di occuparmi di questi aspetti durante la stesura di uno dei capitoli dei &lt;a href="http://g.aspitalia.com/landings/hoepli.aspx"&gt;nostri libri di prossima uscita&lt;/a&gt; interamente dedicato alle tematiche di multithreading e parallel computer, e penso francamente che il .NET Framework 4.0, il nuovo CLR e Visual Studio 2010 portino l'esperienza di sviluppo di applicazioni parallele a livelli assolutamente ineguagliati al giorno d'oggi.&lt;/p&gt; &lt;p&gt;Ma quali sono sostanzialmente queste novità? Beh. innanzitutto direi la presenza di &lt;a href="http://msdn.microsoft.com/en-us/library/dd460688%28VS.100%29.aspx"&gt;PLINQ&lt;/a&gt; e della classe &lt;a href="http://msdn.microsoft.com/en-us/library/dd383736%28VS.100%29.aspx"&gt;ParallelQuery&lt;/a&gt;, grazie alla quale è possibile integrare con grandissima facilità il calcolo parallelo all'interno delle nostre query LINQ; basta usare infatti l'extension method &lt;a href="http://msdn.microsoft.com/en-us/library/dd413602%28VS.100%29.aspx"&gt;AsParallel()&lt;/a&gt; per far sì che una query del tipo&lt;/p&gt; &lt;code&gt;var query = from i in list.AsParallel() &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where someCondition(i) &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select someResult(i)&lt;/code&gt; &lt;p&gt;venga eseguita sfruttando al massimo i core presenti nel sistema.&lt;/p&gt; &lt;p&gt;Per il codice "di tutti i giorni", invece, sono state introdotte le classi &lt;a href="http://msdn.microsoft.com/en-us/library/dd321424%28VS.100%29.aspx"&gt;Task&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/en-us/library/dd321260%28VS.100%29.aspx"&gt;TaskFactory&lt;/a&gt;, che rendono possibile creare task asincroni, gestirne le notifiche, accodarne di altri, ecc.. in una sintassi estremamente concisa e intuitiva, che ci risparmia un bel po' di lavoro manuale che eravamo costretti a svolgere usando il &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx"&gt;ThreadPool&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Ma più thread contemporaneamente in esecuzione vuol dire anche gestire problematiche di concorrenza e di thread safety. Chi ha lavorato in quest'ambito in passato, sa che ad esempio avere a che fare con collection condivise tra più thread non era assolutamente banale. Il .NET Framework 4.0 espone un nuovo namespace, dal nome fin troppo indicativo: &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.concurrent%28VS.100%29.aspx"&gt;System.Collections.Concurrent&lt;/a&gt;. Esso contiene un gran numero di collection, tutte rigorosamente thread safe, che risparmiano parecchie grane quando utilizzate in scenari paralleli e i cui internals (basta dare un'occhiata con Reflector) sono tutt'altro che banali e scontati, con lo scopo di minimizzare i lock, che notoriamente vanno a braccetto con decadimenti prestazionali.&lt;/p&gt; &lt;p&gt;E la ciliegina su questa torta non poteva che essere lui, Visual Studio 2010, e il suo supporto al debug di applicazioni multithreaded. Provate a dare un'occhiata a queste due immagini in basso per capire di cosa sto parlando, valgono più di mille parole:&lt;/p&gt; &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.aspitalia.com/img/cradle/multithreadingeparallelcomputingnel.ne.0_1315c/image_3.png" width="484" height="334" /&gt; &lt;/p&gt; &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.aspitalia.com/img/cradle/multithreadingeparallelcomputingnel.ne.0_1315c/image_6.png" width="485" height="193" /&gt; &lt;/p&gt; &lt;p&gt;Che dire. ci aspettano non solo mesi di articoli e succose novità, ma anche mesi in cui potremo sfruttare strumenti innovativi, in grado di darci una grande mano nel lavoro di tutti i giorni e, perché no, anche vantaggi sostanziali nelle potenzialità delle nostre applicazioni!&lt;/p&gt; &lt;p&gt;Ci vediamo su queste pagine!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/C#_4_Guida_completa/" rel="tag"&gt;C# 4 Guida completa&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Basic_2010_Guida_completa/" rel="tag"&gt;Visual Basic 2010 Guida completa&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2607/Multithreading-Parallel-Computing-.NET-Framework-4.0.aspx"&gt;&lt;em&gt;Multithreading e parallel computing nel .NET Framework 4.0&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 4.0, C# 4 Guida completa, Visual Basic 2010 Guida completa, Visual Studio</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2607/Multithreading-Parallel-Computing-.NET-Framework-4.0.aspx</guid><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2607/Multithreading-Parallel-Computing-.NET-Framework-4.0.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2607.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2607</trackback:ping></item><item><title>Rilasciato ASP.NET MVC 2 Beta</title><link>http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx</link><pubDate>Tue, 17 Nov 2009 23:58:01 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2571" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;I primi effetti di PDC iniziano a farsi vedere: è stata rilasciata oggi, infatti, la beta di ASP.NET MVC 2 (solo per VS2008) che introduce alcune novità rispetto alla Preview 2 presente in Visual Studio 2010 Beta 2. Cerchiamo di vedere cosa cambia e quali sono le nuove funzionalità disponibili con questa nuova versione:&lt;/p&gt; &lt;h3&gt;Validazione Client-side&lt;/h3&gt; &lt;p&gt;La Preview 2 già aveva introdotto un supporto built-in per la validazione client-side, utilizzando un opportuno plugin per jQuery. Nella versione Beta, invece, questa funzionalità è compresa all'interno delle librerie Javascript di Microsoft, pertanto è sufficiente includere&lt;/p&gt; &lt;ul&gt; &lt;li&gt;MicrosoftAjax.js &lt;/li&gt; &lt;li&gt;MicrosoftMVCAjax.js &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;e richiamare il metodo&lt;/p&gt; &lt;p&gt;&lt;code&gt;&amp;lt;% Html.EnableClientValidation(); %&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;dalla View, affinché tutto funzioni.&lt;/p&gt; &lt;h3&gt;Add Area&lt;/h3&gt; &lt;p&gt;Il menù contestuale di un progetto MVC all'interno del solution explorer consente adesso di aggiungere in maniera guidata una nuova area all'interno dell'applicazione. Ricordiamo che le Area altro non sono che una suddivisione logica del progetto stesso in più sottocartelle, una per ogni "modulo", all'interno delle quali trova posto la struttura di cartelle standard di MVC (Views, Controllers, Models)&lt;/p&gt; &lt;h3&gt;Modifiche al funzionamento dei TempData&lt;/h3&gt; &lt;p&gt;TempData, come già abbiamo indicato nello script &lt;a href="http://www.aspitalia.com/liste/usag/script.aspx?id=989"&gt;#989&lt;/a&gt;, consente di mantenere momentaneamente in uno storage (per default la session di ASP.NET) alcuni dati, che vengono poi automaticamente rimossi al ciclo di request response successivo. In MVC 2 Beta, invece, questi dati restano memorizzati fino al loro effettivo utilizzo, dopo di che vengono automaticamente marcati per l'eliminazione. Il metodo &lt;strong&gt;Keep&lt;/strong&gt; consente comunque di conservarli anche se sono stati utilizzati.&lt;/p&gt; &lt;h3&gt;Strong typed UI Helpers&lt;/h3&gt; &lt;p&gt;Già nelle preview 2 erano presenti i primi 3 esempi di UI Helpers (Editor, Label e Display) che, sfruttando le lambda expression, rendevano possibile la creazione di elementi di interfaccia collegati a proprietà del model in maniera strong typed e con il supporto di Intellisense e Refactoring di Visual Studio. Grazie ad essi, ad esempio, si può generare un elemento Input per una proprietà Descrizione del model tramite la sintassi&lt;/p&gt; &lt;p&gt;&lt;code&gt;&amp;lt;%= Html.EditorFor(m =&amp;gt; m.Descrizione) %&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;In questa nuova versione sono stati aggiunti anche&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ValidationMessageFor &lt;/li&gt; &lt;li&gt;TextAreaFor &lt;/li&gt; &lt;li&gt;TextBoxFor &lt;/li&gt; &lt;li&gt;HiddenFor &lt;/li&gt; &lt;li&gt;DropDownListFor &lt;/li&gt; &lt;/ul&gt; &lt;h3&gt;Esecuzione asincrona delle action tramite un AsyncController&lt;/h3&gt; &lt;p&gt;ASP.NET MVC 2 Beta introduce ufficialmente una interessantissima caratteristica che, fino ad oggi, è stata parte del progetto sperimentale ASP.NET MVC Futures. Tramite la classe base AsyncController, infatti, è ora possibile realizzare Action in grado di invocare metodi asincroni, la cui esecuzione viene presa in carico da un worker thread esterno a quello utilizzato da ASP.NET.&lt;/p&gt; &lt;h3&gt;Download&lt;/h3&gt; &lt;p&gt;Il download di questa nuova versione di ASP.NET MVC 2 è disponibile a &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;familyid=4817cdb2-88ea-4af4-a455-f06b4c90fd2c"&gt;questo link&lt;/a&gt;, dove trovate anche le note di rilascio. Un'ultima nota riguarda la compatibilità con le versioni di Visual Studio. E' supportato il solo Visual Studio 2008 SP1, quindi niente versione 2010 per il momento. Tra l'altro, visto che 2008 e 2010 condividono alcune componenti, l'installazione anche sul solo 2008 &lt;strong&gt;non è supportata se risulta installata anche la versione 2010 Beta 2&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_4.0/" rel="tag"&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_MVC/" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET/" rel="tag"&gt;ASP.NET&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx"&gt;&lt;em&gt;Rilasciato ASP.NET MVC 2 Beta&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 4.0, ASP.NET 4.0, ASP.NET MVC, Visual Studio, ASP.NET</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2571.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2571</trackback:ping></item><item><title>Login sul network ASPItalia tramite Facebook</title><link>http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx</link><pubDate>Mon, 09 Nov 2009 14:16:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2563" border="0" style="width:1px; height:1px;" /&gt;
&lt;p&gt;Eh sì, noi di ASPItalia non ci fermiamo proprio mai! Durante l'ultimo weekend io e &lt;a href="http://blogs.aspitalia.com/daniele/"&gt;Daniele&lt;/a&gt; ci siamo messi all'opera per allargare la schiera di provider di autenticazione supportati. Il risultato è che, da oggi, potete utilizzare il vostro account di Facebook per loggarvi su uno qualsiasi dei siti del network. Abilitare questa funzionalità è semplicissimo: è sufficiente recarsi sulla pagina di &lt;a href="https://secure.aspitalia.com/profile/login.aspx"&gt;Login&lt;/a&gt;, fare click sull'icona di Facebook Connect e seguire le istruzioni per collegare l'account di Facebook a quello di ASPItalia.&lt;br /&gt;&lt;br /&gt;Enjoy :-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/ASPItalia.com/" rel="tag"&gt;ASPItalia.com&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Security/" rel="tag"&gt;Security&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx"&gt;&lt;em&gt;Login sul network ASPItalia tramite Facebook&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, ASPItalia.com, Security</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2563.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2563</trackback:ping></item><item><title>Real Code Day 4.0: Agenda (quasi) completata!</title><link>http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx</link><pubDate>Mon, 02 Nov 2009 10:16:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2561" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Bene, il RCD 4 inizia a prendere forma e essendo questo il primo evento di una certa portata in cui sono parte dell'organizzazione, beh.. lasciatemelo dire, ne sono proprio orgoglioso! L'agenda è praticamente completa (&lt;a href="http://www.aspitalia.com/eventi/21/Real-Code-Day-4.0-Costruire-Applicazioni-Reali-Firenze.aspx"&gt;la trovate qui&lt;/a&gt;) e, a mio modo di vedere, è tanto tanto tanto interessante e sapete perché? Perché realizzeremo un'applicazione from scratch, partendo cioé dai requisiti per arrivare a ben 4 &amp;quot;incarnazioni&amp;quot; differenti (Silverlight, WPF, WebForms e MVC), puntando il dito soprattutto su quando e perché va usato l'uno invece che l'altro.&lt;/p&gt;&lt;p&gt;Il tutto rigorosamente fedele alla rodata formula &amp;quot;zero-slides&amp;quot; di RCD e, soprattutto, a base delle più recenti tecnologie che il mercato offre, o meglio, offrirà, nei prossimi mesi, ossia .NET Framework 4.0 e Visual Studio 2010, con in più una bonus session assolutamente da non perdere! E se tutto questo non bastasse a farvi venire l'acquolina in bocca e prenotare il primo treno per Firenze, sappiate che MVC non vuol dire solo Model View Controller. Non dico di più perché sono sotto NDA! ;-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.0/" rel="tag"&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET/" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_4.0/" rel="tag"&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_MVC/" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASPItalia.com/" rel="tag"&gt;ASPItalia.com&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Entity_Framework/" rel="tag"&gt;Entity Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Object_Oriented_Programming/" rel="tag"&gt;Object Oriented Programming&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Silverlight/" rel="tag"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Silverlight_4.0/" rel="tag"&gt;Silverlight 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_7/" rel="tag"&gt;Windows 7&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Client/" rel="tag"&gt;Windows Client&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Presentation_Foundation/" rel="tag"&gt;Windows Presentation Foundation&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/XAML/" rel="tag"&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx"&gt;&lt;em&gt;Real Code Day 4.0: Agenda (quasi) completata!&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 3.0, .NET Framework 4.0, Architettura, ASP.NET, ASP.NET 4.0, ASP.NET MVC, ASPItalia.com, Entity Framework, Object Oriented Programming, Silverlight, Silverlight 4.0, Visual Studio, Windows 7, Windows Client, Windows Presentation Foundation, XAML</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2561.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2561</trackback:ping></item><item><title>Open source = elevata qualit&amp;#224;? Ma dove???</title><link>http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx</link><pubDate>Tue, 07 Jul 2009 09:25:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2519" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Ieri ho avuto la malsana idea di aggiornare Firefox 3.0.x alla versione 3.5 sul mio notebook aziendale. Ero già poco contento prima, ora sono a dir poco infuriato e mi accingo a disinstallare questo browser che ho usato (con soddisfazione da un po' di tempo in costante decadimento) fin dalla versione 1.&lt;br /&gt;&lt;br /&gt;Motivo? Il primo avvio di Firefox sulla mia macchina impiega un paio di minuti, e, dando un'occhiata in giro, &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501605"&gt;mi&lt;/a&gt; &lt;a href="http://support.mozilla.com/tiki-view_forum_thread.php?locale=de&amp;forumId=1&amp;comments_parentId=381674"&gt;sembra&lt;/a&gt; &lt;a href="http://support.mozilla.com/tiki-view_forum_thread.php?locale=de&amp;forumId=1&amp;comments_parentId=379577"&gt;proprio&lt;/a&gt; &lt;a href="http://blog.borngeek.com/2009/07/02/firefox-3-5-slow-to-start/"&gt;di&lt;/a&gt; &lt;a href="http://www.techimo.com/forum/applications-operating-systems/232601-firefox-3-5-slow-start.html"&gt;non&lt;/a&gt; &lt;a href="http://forums.mozillazine.org/viewtopic.php?f=38&amp;t=1334895"&gt;essere&lt;/a&gt; l'unico sfigato a cui accade.&lt;br /&gt;&lt;br /&gt;Ora dico io: ma le release, le provano prima di pubblicarle o i problemi li si affronta solo a posteriori? Questa sarebbe la tanto decantata *qualità* del software open source? Questa è semplicemente una breaking change non sufficientemente testata. Punto. Ma sapete com'è... il rilascio di nuove versioni aumenta i download, i download aumentano gli sponsor, le quote di mercato, chi se ne frega se poi ci sono problemi, tanto il codice è libero, puoi fixarlo anche da solo.&lt;br /&gt;&lt;br /&gt;Peccato che lo stia disinstallando ora, altrimenti al prossimo riavvio, durante i 2 minuti di attesa, mi sarei potuto divertire a immaginare cosa sarebbe accaduto nei vari forum in rete nel caso in cui lo stesso problema lo avesse avuto Internet Explorer.&lt;/p&gt;&lt;p&gt;m.&lt;/p&gt;
&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx"&gt;&lt;em&gt;Open source = elevata qualit&amp;#224;? Ma dove???&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx</guid><slash:comments>11</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2519.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2519</trackback:ping></item><item><title>.NET Framework 4.0 beta 1: Workflow Foundation 4.0</title><link>http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx</link><pubDate>Mon, 18 May 2009 20:44:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2501" border="0" style="width:1px; height:1px;" /&gt;
&lt;p&gt;Il nuovo FX 4.0 porta con sé una vera e propria rivoluzione per quanto riguarda Workflow Foundation: si tratta di un framework nuovo di zecca, sia per quanto riguarda l'engine, che per le librerie e il designer di Visual Studio 2010. Per mantenere la compatibilità con le applicazioni sviluppate fino ad oggi, si è scelto di utilizzare namespace differenti, così che l'utente sia libero di scegliere se avvalersi della nuova tecnologia o continuare ad utilizzare il modello delle versioni 3.x. &lt;/p&gt; &lt;p&gt;Ma quali sono le novità che possono effettivamente spingerci a voltare pagina? Beh, innanzitutto le performance, che fino a questa edizione hanno rappresentato forse il più grande limite di Workflow Foundation. In WF 4.0 sono state apportate numerose ottimizzazioni, sia nell'engine di esecuzione che nei servizi di persistenza (che ora si limitano a persistere solo la parte effettivamente &amp;quot;attiva&amp;quot; del workflow, piuttosto che l'istanza nella sua interezza), che promettono di dare un vero e proprio boost alla scalabilità, raggiungendo guadagni prestazionali anche di un paio di ordini di grandezza superiori alla versione precedente.&lt;/p&gt; &lt;p&gt;La base activity library annovera alcuni nuovi elementi, quali ad esempio un set di elementi specifici per la gestione di collection di oggetti (ClearCollection, AddToCollection, RemoveFromCollection e ExistsInCollection) o ParallelForEach, che consente di eseguire dei task su elementi di una collection in parallelo; altre invece state completamente riviste: è il caso di Parallel, che ora lavora secondo un nuovo algoritmo di scheduling. E' presente un nuovo modello di workflow, chiamato Flowchart, che sostanzialmente permette di superare il limite imposto dai workflow sequenziali, che non consentivano di rimandare il flusso in una posizione precedente a quella attuale. Esso sopperirà temporaneamente alla mancanza della State Machine, non inclusa nella beta, della quale potrà mimare il comportamento grazie alla PickActivity, sostanzialmente l'alter ego in questa versione della vecchia ListenActivity.&lt;/p&gt; &lt;p&gt;La rivoluzione maggiore riguarda però l'architettura, a livello di modello a oggetti, di questo nuovo framework, in cui appaiono per la prima volta i concetti di parametri di input e di output o di variabili. I primi vengono utilizzati per rappresentare i flussi di informazione in ingresso e uscita da un'activity (o da un workflow), mentre le altre svolgono funzioni di storage. Il tutto, ovviamente, offre pieno supporto al databinding e consente un approccio più marcatamente dichiarativo, e meno funzionale, alla realizzazione del workflow stesso. Visual Studio 2010 offre un designer del tutto nuovo, realizzato in WPF, e che consente la realizzazione di progetti sia graficamente che editando direttamente lo Xaml. Da menzionare il supporto all'intellisense già all'interno della property grid, una vera e propria ciliegina sulla torta.&lt;/p&gt; &lt;p&gt;L'ultimo aspetto da citare riguarda l'integrazione con WCF, che in Workflow Foundation 4.0 si spinge oltre quanto già visto nel Framework 3.5. Grazie a WCF, infatti, sarà possibile fornire ai workflow la possibilità di accettare messaggi remoti, costruendo quindi veri e propri servizi in maniera dichiarativa tramite l'uso di activity.&lt;/p&gt;&lt;p&gt;Maggiori informazioni e le informazioni per il download sono disponibili nel nostro mini-sito dedicato al &lt;a href="http://netfx4.winfxitalia.com/"&gt;.NET Framework 4.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.0/" rel="tag"&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Visual_Studio/" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Workflow_Foundation/" rel="tag"&gt;Windows Workflow Foundation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx"&gt;&lt;em&gt;.NET Framework 4.0 beta 1: Workflow Foundation 4.0&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 3.0, .NET Framework 4.0, Visual Studio, Windows Workflow Foundation</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2501.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2501</trackback:ping></item><item><title>Visto che ultimamente Reflection.Emit &amp;#232; di moda...</title><link>http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx</link><pubDate>Thu, 30 Apr 2009 07:58:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2490" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;... e visto che non tutti masticano benissimo MSIL (io ad esempio no!), vi segnalo un simpaticissimo addin per Reflector che credo farà felici molti estimatori del codice dinamico:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=ReflectionEmitLanguage" href="http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=ReflectionEmitLanguage"&gt;http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=ReflectionEmitLanguage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leggo testualmente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;"This add-in translates the IL code of a given method into the C# code that would be needed to generate the same IL code using System.Reflection.Emit"&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Buon divertimento ;-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_2.0/" rel="tag"&gt;.NET Framework 2.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.0/" rel="tag"&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx"&gt;&lt;em&gt;Visto che ultimamente Reflection.Emit &amp;#232; di moda...&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Framework 4.0</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2490.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2490</trackback:ping></item><item><title>ILDASM e ILASM: un esempio pratico (e c&amp;#39;entra anche NHibernate)</title><link>http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx</link><pubDate>Mon, 12 Jan 2009 13:18:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2451" border="0" style="width:1px; height:1px;" /&gt;
&lt;p&gt;Accadde un giorno che avevo un piccolo (e vecchio) CMS con un bug da fixare e ho avuto l'idea di aggiornare il motore di persistenza, che usava NH 1.2.0 alla nuovissima 2.0.1. Scarico quindi i due progetti NHibernate.Core e NHibernate.Caches ma... niente! Quest'ultima non ne voleva sapere di andare a causa di una reference verso la versione 2.0.0 di NHibernate che purtroppo non era più disponibile per il download.&lt;/p&gt;
&lt;p&gt;Premetto che &lt;strong&gt;ad oggi il problema è stato risolto, ora NHibernate.Caches punta alla versione corretta&lt;/strong&gt;, ma in quel frangente mi sono trovato abbastanza spaesato. Le possibili soluzioni erano:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ricompilare tutto NHibernate, modificando il numero di versione a 2.0.0, ma non mi piaceva l'idea&lt;/li&gt;
&lt;li&gt;Scaricare i sorgenti della Cache e modificare la reference, ma questi non erano disponibili se non come trunk SVN, e avrei in questo modo rischiato di portare in produzione codice non ancora ufficialmente rilasciato&lt;/li&gt;
&lt;li&gt;Utilizzare &lt;a href="http://msdn.microsoft.com/en-us/library/2fc472t2.aspx"&gt;l'Assembly Binding Redirection&lt;/a&gt; del CLR&lt;/li&gt;
&lt;li&gt;Disassemblare l'assembly NHibernate.Caches e modificare la reference per farlo puntare a NH 2.0.1&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;A dispetto delle apparenze, la soluzione 4 è in assoluto la più veloce e semplice e infatti è proprio quella che ho scelto.&lt;/p&gt;
&lt;p&gt;I passi sono estremamente banali:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si apre l'assembly con ILDASM&lt;/li&gt;
&lt;li&gt;Si seleziona File -&amp;gt; Dump, avendo cura di impostare a checked tutte le checkbox proposte&lt;/li&gt;
&lt;li&gt;A questo punto basta aprire il file .IL generato con un qualsiasi editor testuale e cercare &amp;quot;.assembly extern&amp;quot; per posizionarsi nella sezione del MSIL che contiene l'indicazione delle reference&lt;/li&gt;
&lt;li&gt;Modificare manualmente la reference alla versione voluta e salvare&lt;/li&gt;
&lt;li&gt;Ricompilare il file IL con l'istruzione a riga di comando: &lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;ILASM nomeFileMSIL.IL /DLL /OUTPUT=nomeAssembly.dll&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Et voilà, it works!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/NHibernate/" rel="tag"&gt;NHibernate&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx"&gt;&lt;em&gt;ILDASM e ILASM: un esempio pratico (e c&amp;#39;entra anche NHibernate)&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2013 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Marco De Sanctis</dc:creator><category>Misc, .NET Framework, NHibernate</category><guid isPermaLink="true">http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx</guid><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2451.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2451</trackback:ping></item></channel></rss>