<?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//rickyvr//</link><description>blogs.ASPItalia.com</description><language>it-it</language><copyright>1998-2012 ASPItalia.com/blogs.ASPItalia.com</copyright><generator>Generated by feed.ASPItalia.com 'Cortana' 2012.5.12</generator><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><sy:updateBase>1998-01-01T12:00+00:00</sy:updateBase><lastBuildDate>Mon, 12 Mar 2007 00:52:00 GMT</lastBuildDate><image><title>blogs.ASPItalia.com</title><url>http://gui.aspitalia.com/images/aspitalia/syndication.gif</url><link>http://blogs.aspitalia.com//rickyvr//</link></image><item><title>Finalmente disponibili i driver delle schede UMTS Vodafone per Windows Vista</title><link>http://blogs.aspitalia.com/rickyvr/post1990/Finalmente-Disponibili-Driver-Schede-UMTS-Vodafone-Windows-Vista.aspx</link><pubDate>Mon, 12 Mar 2007 00:52:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1990" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Dopo una lunga attesa sono disponibili (almeno così pare) i &lt;strong&gt;driver delle schede UMTS Vodafone per Windows Vista&lt;/strong&gt;, nel mio caso la Option Fusion 3G UMTS/GPRS. Non ho ancora avuto modo di provare il software, ma conto di farlo immediatamente quando rientrerò in Italia dal MVP Summit 2007 a Seattle (USA).&lt;/p&gt;&lt;p&gt;Per chi non avesse tempo di aspettare il mio rientro in Italia, segnalo subito il link da cui è possibile scaricare il software sul sito &lt;a onclick="function anonymous()
{
blankUrl(this.href); return false;
}" href="http://www.business.vodafone.com/site/bus/public/enuk/support/10_productsupport/general/microsoft/vista/10_datacards/p_upgradevista.jsp"&gt;&lt;strong&gt;Vodafone&lt;/strong&gt;&lt;/a&gt;. Il software è il &lt;strong&gt;Vodafone Mobile Connect - versione 9.1.0.4345&lt;/strong&gt;; si tratta di un pacchetto di installazione da 77 MB circa. Buon download, era ora!&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/rickyvr/post1990/Finalmente-Disponibili-Driver-Schede-UMTS-Vodafone-Windows-Vista.aspx"&gt;&lt;em&gt;Finalmente disponibili i driver delle schede UMTS Vodafone per Windows Vista&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post1990/Finalmente-Disponibili-Driver-Schede-UMTS-Vodafone-Windows-Vista.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post1990/Finalmente-Disponibili-Driver-Schede-UMTS-Vodafone-Windows-Vista.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS1990.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1990</trackback:ping></item><item><title>Installazione di Windows Vista</title><link>http://blogs.aspitalia.com/rickyvr/post1848/Installazione-Windows-Vista.aspx</link><pubDate>Tue, 21 Nov 2006 02:00:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1848" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;In questi giorni sto installando sul portatile Windows Vista Ultimate RTM. Devo dire che il livello di performance è davvero molto buono, nonostante un rate pari a 2,0 dovuto per lo più alle caratteristiche scadenti della mia scheda grafica (NVIDIA GeForce FX Go5200 64MB). I driver aggiornati tramite Windows Update mi hanno peraltro consentito di attivare fin da subito AERO, con un impatto sul look&amp;amp;feel davvero sconvolgente. Altri driver non funzionano, per esempio quello del modem UMTS della Option, per cui per ora niente connettività UMTS (in attesa del driver). Per questo motivo e per evitare in ogni caso sorprese, ho provveduto ad installare una doppia partizione. Il dual boot mi consente di avviare Vista oppure Windows XP SP2, il primo sistema contiene Office 2007, il secondo Office 2003.&lt;/p&gt;&lt;p&gt;Per attivare il dual boot, è consigliabile installare per prima la partizione con XP. Nel caso in cui questo non sia possibile, una volta installato il sistema legacy (XP appunto), Vista diventa &amp;quot;invisibile&amp;quot;, perchè le modalità di boot di Vista sono gestite in modo differente rispetto a XP e la modifica del boot.ini non serve a nulla.&lt;/p&gt;&lt;p&gt;Per rendere nuovamente visibile e &amp;quot;bootabile&amp;quot; la partizione di Vista, occorre fixare le impostazioni di startup reinserendo il disco di installazione di Vista. Una volta riavviato il sistema, occorre andare a modificare la configurazione del boot manager. La cosa può essere fatta tramite l'utility da linea di comando BCDEDIT.EXE, che si trova in \windows\system32.&lt;/p&gt;&lt;p&gt;In realtà esiste un modo più efficiente per attivare il dual boot su Vista: usare l'applicazione EasyBCD 1.5. Si tratta di una applicazione molto carina che permette di configurare facilmente e senza errori il boot manager di Vista, con la possibilità di attivare partizioni con Windows (NT, 98, 2000, Me, XP e Longhorn), Linux e Mac OS X. Il tool è scaricabile da questo URL: &lt;a href="http://neosmart.net/dl.php?id=1" target="_blank"&gt;http://neosmart.net/dl.php?id=1&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&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_Vista/" rel="tag"&gt;Windows Vista&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/rickyvr/post1848/Installazione-Windows-Vista.aspx"&gt;&lt;em&gt;Installazione di Windows Vista&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista, Windows Client</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post1848/Installazione-Windows-Vista.aspx</guid><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post1848/Installazione-Windows-Vista.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS1848.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1848</trackback:ping></item><item><title>WWF e WCF January 2006 CTP</title><link>http://blogs.aspitalia.com/rickyvr/post1431/WWF-WCF-January-2006-CTP.aspx</link><pubDate>Sat, 21 Jan 2006 18:00:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1431" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Con l'uscita delle nuove CTP di WinFx sono apparsi dal 18 gennaio 2006 un paio di siti dedicati a Windows Workflow Foundation e Windows Communication Foundation.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.windowsworkflow.net"&gt;http://www.windowsworkflow.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windowscommunication.net"&gt;http://www.windowscommunication.net&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&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/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/rickyvr/post1431/WWF-WCF-January-2006-CTP.aspx"&gt;&lt;em&gt;WWF e WCF January 2006 CTP&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista, .NET Framework 3.0, Windows Workflow Foundation</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post1431/WWF-WCF-January-2006-CTP.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post1431/WWF-WCF-January-2006-CTP.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS1431.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1431</trackback:ping></item><item><title>ServiceContract e interfaccia di classe in Indigo</title><link>http://blogs.aspitalia.com/rickyvr/post971/ServiceContract-Interfaccia-Classe-Indigo.aspx</link><pubDate>Wed, 23 Mar 2005 10:00:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=971" border="0" style="width:1px; height:1px;" /&gt;&lt;p align="justify"&gt;Quello che segue è l'esempio di codice proposto da David Chappell nella presentazione delle caratteristiche di Indigo durante la giornata di ieri all'Architect Day 2005.&lt;/p&gt;&lt;code&gt;using System.ServiceModel;&lt;br /&gt;&lt;br /&gt;[ServiceContract]&lt;br /&gt;class Calculator&lt;br /&gt;{&lt;br /&gt;[OperationContract]&lt;br /&gt;private int Add(int a, int b)&lt;br /&gt;{&lt;br /&gt;return a + b; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[OperationContract]&lt;br /&gt;public int Subtract(int a, int b)&lt;br /&gt;{&lt;br /&gt;return a - b;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int Multiply(int a, int b)&lt;br /&gt;{&lt;br /&gt;return a * b;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;p align="justify"&gt;Di fatto quello che si nota nel codice proposto è l'associazione dell'attributo &lt;em&gt;OperationContract&lt;/em&gt; ad un metodo privato della classe che funge da servizio. Questa cosa testimonia il disaccoppiamento tra &lt;em&gt;ServiceContract&lt;/em&gt; e interfaccia di classe, che riprende la necessità di diversificare il concetto di servizio da quello di oggetto.&lt;/p&gt;&lt;p align="justify"&gt;In altre parole una classe che funge da servizio viene marcata con l'attributo &lt;em&gt;ServiceContract&lt;/em&gt; ed i metodi esposti dal servizio vengono marcati con l'attributo &lt;em&gt;ContractOperation&lt;/em&gt; indipendentemente che siano &lt;i&gt;private&lt;/i&gt; o &lt;i&gt;public&lt;/i&gt;. Questo perchè il comportamento del servizio non deve essere necessariamente uguale a quello dell'oggetto. Servizio e oggetto sono due astrazioni diverse e vanno trattate come tali, ovvero ognuna è caratterizzata da un contratto indipendente dall'altro. Proprio per questo motivo David parlava addirittura del fatto che probabilmente tutti i metodi esposti da un servizio dovrebbero essere &lt;i&gt;private&lt;/i&gt;!!!&lt;/p&gt;&lt;p&gt;Un oggetto infatti espone un contratto che descrive il suo comportamento nell'ambito del contesto applicativo in cui l'oggetto stesso è attivo, ovvero i metodi che possono essere chiamati nell'ambito dell'applicazione da altri oggetti. In questo caso si definisce come &lt;i&gt;public&lt;/i&gt; ciò che può essere richiamato e come &lt;i&gt;private&lt;/i&gt; ciò che deve essere mascherato.&lt;/p&gt;&lt;p&gt;Parallelamente un servizio espone a sua volta un contratto descritto nel WSDL che è rappresentato dall'insieme dei metodi accessibili. Questo contratto non necessariamente deve essere coincidente con il contratto relativo all'oggetto. Ecco allora che si usano gli attributi per dire quali metodi devono essere esposti dal servizio.&lt;/p&gt;&lt;p&gt;Se sulle prime sono rimasto un attimo disorientato, una volta capiti i concetti e le differenze tra i due ambiti e le due astrazioni, ho colto l'importanza di questa cosa.&lt;/p&gt;&lt;p&gt;A questo punto direi che è cosa buona e giusta! :)&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/rickyvr/post971/ServiceContract-Interfaccia-Classe-Indigo.aspx"&gt;&lt;em&gt;ServiceContract e interfaccia di classe in Indigo&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post971/ServiceContract-Interfaccia-Classe-Indigo.aspx</guid><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post971/ServiceContract-Interfaccia-Classe-Indigo.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS971.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=971</trackback:ping></item><item><title>Avalon e il data binding</title><link>http://blogs.aspitalia.com/rickyvr/post859/Avalon-Data-Binding.aspx</link><pubDate>Wed, 19 Jan 2005 22:57:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=859" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Per concludere la &lt;a href="http://blogs.aspitalia.com/rickyvr/post831.aspx" target="_blank"&gt;carrellata&lt;/a&gt; di post relativi a Longhorn (sospesa per causa di forza maggiore), in vista del prossimo evento di ASPItalia in cui si parlerà di XAML e Avalon, direi che è doveroso spendere qualche parola sul data binding, ovvero l'associazione tra elementi della UI con le informazioni provenienti dalle sorgenti dati.&lt;/p&gt;&lt;p&gt;Oggi siamo abituati a considerare il data binding come un meccanismo fondamentalmente unidirezionale. Questo significa che in generale le informazioni vanno dal data source al controllo della UI oppure, in alternativa, i dati possono venire salvati nel data source. In ogni caso oggi non si parla di data binding bidirezionale.&lt;/p&gt;&lt;p&gt;Rispetto all'approccio per così dire tradizionale, i meccanismi di data binding tra sorgente dati e controlli dell'interfaccia utente in Longhorn vengono estesi e potenziati. Il data binding può essere anche (ma non solo) bidirezionale, nel senso che viene supportato contemporaneamente il flusso in entrambe le direzioni, dalla sorgente al controllo, dal controllo alla sorgente. Parallelamente il data binding può essere statico oppure dinamico (un meccanismo che in un certo senso a me ricorda il concetto di cursore in ADO). Ma andiamo per ordine.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tipi di data binding&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;DATA BINDING ONE-TIME&lt;/u&gt;&lt;br /&gt;In questo caso, in base al data source e al percorso specificato, il runtime recupera il valore dalla sorgente e imposta la proprietà target. In seguito a questo, di solito non avviene assolutamente più nulla nel caso in cui o il valore sorgente o la proprietà target dovessero cambiare.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;DATA BINDING ONE-WAY&lt;/u&gt;&lt;br /&gt;Nel caso one-way, il runtime recupera il valore della sorgente e imposta la proprietà target, proprio come prima. Ma la differenza sta nel fatto che, qualora il valore sorgente dovesse essere per qualche motivo cambiato, il binding propaga la modifica dalla sorgente alla proprietà target.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;DATA BINDING TWO-WAY&lt;/u&gt;&lt;br /&gt;E' il data binding bidirezionale di cui si parlava prima. Il runtime recupera il valore della sorgente e imposta la proprietà target, proprio come nei primi due casi. Qualora o il valore sorgente o la proprietà target dovessero cambiare, il binding propaga la modifica o in un senso o nell'altro, a seconda dei casi. Questo è il tipo di data binding predefinito.&lt;/p&gt;&lt;p&gt;La classe in Avalon che rappresenta il data binding è &lt;i&gt;MSAvalon.Data.Bind&lt;/i&gt;. Questa classe è caratterizzata da una serie di proprietà utili allo scopo: &lt;/p&gt;&lt;ul&gt;&lt;li type="square"&gt;&lt;i&gt;Path&lt;/i&gt;: indica la proprietà o il valore sorgente.&lt;/li&gt;&lt;li type="square"&gt;&lt;i&gt;BindType&lt;/i&gt;: specifica il tipo di binding secondo quanto detto in precedenza (&lt;i&gt;OneTime&lt;/i&gt;, &lt;i&gt;OneWay&lt;/i&gt;, &lt;i&gt;TwoWay&lt;/i&gt;).&lt;/li&gt;&lt;li type="square"&gt;&lt;i&gt;UpdateType&lt;/i&gt;: proprietà valida con il binding two-way, nel caso di propagazione delle modifiche dalla proprietà target alla sorgente. Può valere &lt;i&gt;Immediate&lt;/i&gt; (ovvero subito), &lt;i&gt;OnLostFocus&lt;/i&gt; (ovvero quando il controllo perde il focus) oppure &lt;i&gt;Explicit&lt;/i&gt; (ovvero in maniera esplicita quando viene invocato l'oggetto bind).&lt;/li&gt;&lt;li type="square"&gt;&lt;i&gt;Source&lt;/i&gt;: specifica il data item sorgente.&lt;/li&gt;&lt;li type="square"&gt;&lt;i&gt;Transformer&lt;/i&gt;: permette di assegnare un oggetto che implementa l'interfaccia &lt;i&gt;IDataTransformer&lt;/i&gt; (metodi &lt;i&gt;Transform&lt;/i&gt; e &lt;i&gt;InverseTrasform&lt;/i&gt;) che consente di trasformare il valore in entrata in un nuovo valore in uscita; si tratta di una specie di mappa di trasformazione che accetta in input un Object e restituisce un Object, nei due sensi.&lt;/li&gt;&lt;li type="square"&gt;&lt;i&gt;Culture&lt;/i&gt;: consente di specificare un CultureInfo.&lt;/li&gt;&lt;li type="square"&gt;&lt;i&gt;BindFlags&lt;/i&gt;: permette di un impostare un flag che informa dell'avvenuto trasferimento dei dati.&lt;/li&gt;&lt;/ul&gt;Inutile dire che il corrispondente della classe &lt;i&gt;Bind&lt;/i&gt; in XAML è l'elemento &amp;lt;Bind /&amp;gt;. In realtà poi si usa spesso una forma contratta per definire un data binding, assegnando alla proprietà target una stringa che inizia con un asterisco, seguita dalla parola Bind e dall'elenco delle proprietà sopra elencate separate da un punto e virgola.&lt;p /&gt;&lt;p&gt;Per rendere più chiari i concetti passerei ad un paio di esempi, che sono molto di più di tante parole.&lt;/p&gt;&lt;p&gt;&lt;u&gt;CODICE C#&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;using MSAvalon.Data;&lt;br /&gt;Bind dataBinding = new Bind(sourcePath, bindType, dataSource, updateType);&lt;br /&gt;element.SetBinding(property, binding);&lt;br /&gt;  &lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;XAML&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;DockPanel&amp;gt;&lt;br /&gt;  &amp;lt;DockPanel.Resources&amp;gt;&lt;br /&gt;    &amp;lt;SqlDataSource def:Name=&amp;quot;mySource&amp;quot; ConnectionString=&amp;quot;...&amp;quot; SelectCommand=&amp;quot;SELECT * FROM Table&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/DockPanel.Resources&amp;gt;&lt;br /&gt;  &amp;lt;SimpleText Text=&amp;quot;*Bind(Path=Field;BindType=OneWay)&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/DockPanel&amp;gt;&lt;br /&gt;  &lt;/code&gt;&lt;/p&gt;&lt;p&gt;Io mi fermo qua! Tutto il resto (e molto di più) lo lascio dire a &lt;a href="http://blogs.aspitalia.com/ricciolo/" target="_blank"&gt;Ricciolo&lt;/a&gt; e a &lt;a href="http://blogs.aspitalia.com/daniele/" target="_blank"&gt;Daniele&lt;/a&gt; al WDD del prossimo 28 gennaio.&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/rickyvr/post859/Avalon-Data-Binding.aspx"&gt;&lt;em&gt;Avalon e il data binding&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post859/Avalon-Data-Binding.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post859/Avalon-Data-Binding.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS859.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=859</trackback:ping></item><item><title>XAML, di che si tratta?</title><link>http://blogs.aspitalia.com/rickyvr/post831/XAML-Tratta.aspx</link><pubDate>Sat, 08 Jan 2005 17:05:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=831" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Dopo aver parlato del &lt;a title="Il modello applicativo di Longhorn" href="http://blogs.aspitalia.com/rickyvr/post825.aspx" target="_blank"&gt;modello applicativo di Longhorn&lt;/a&gt; e dell'&lt;a title="Application, ApplicationNavigation e XAML" href="http://blogs.aspitalia.com/rickyvr/post827.aspx" target="_blank"&gt;oggetto Application&lt;/a&gt; nei post precedenti, passiamo a vedere cosa ha da offrirci di tanto interessante il linguaggio XAML.&lt;/p&gt;&lt;p&gt;Essendo un documento XML well-formed, una pagina XAML contiene uno o più elementi organizzati gerarchicamente che controllano il layout e il comportamento della pagina stessa. Esiste un unico elemento radice, ciascun elemento può avere un solo padre, ma più figli. E' interessante notare che ogni nome di un elemento corrisponde al nome di una classe managed. Del resto ogni elemento XAML deriva da System.Windows.UIElement oppure da System.Windows.ContentElement a seconda dei casi. In generale si possono raggruppare gli elementi in quattro macro-categorie:&lt;/p&gt;&lt;ol&gt;&lt;li type="1"&gt;controlli (derivano dalla classe System.Windows.Control), che permettono di gestire l'interazione con l'utente;&lt;/li&gt;&lt;li type="1"&gt;panels (derivano dalla classe System.Windows.Panel), che fungono da contenitori di elementi e permettono di suddividere la pagina in porzioni in cui gli elementi risultano raggruppati;&lt;/li&gt;&lt;li type="1"&gt;elementi testuali (derivano da System.Windows.TextElement), che permettono di gestire la formattazione del testo;&lt;/li&gt;&lt;li type="1"&gt;forme che gestiscono le rappresentazioni grafiche vettoriali.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;1) Controlli&lt;/b&gt;&lt;br /&gt;Si tratta dei controlli che siamo abituati ad usare in Windows, ovvero pulsanti, checkbox, radio buttons, combo, dropdownlist, menu, scrollbar, slider, ecc. Un aspetto interessante è che XAML consente di combinare diversi controlli al fine di ottenerne uno composito, ovvero una combinazione dei controlli costituenti (si parla di control composition). L'esempio classico è quello del pulsante con una immagine. Basta annidare l'elemento Image tra il tag di apertura e chiusura dell'elemento Button e il gioco è fatto. Facile, no?&lt;/p&gt;&lt;p&gt;&lt;b&gt;2) Panels&lt;/b&gt;&lt;br /&gt;Rappresentano dei contenitori di elementi. Ne esistono di diversi tipi, per tutte le esigenze: &lt;/p&gt;&lt;ul&gt;&lt;li type="square"&gt;Canvas, che permette di posizionare gli elementi interni usando le coordinate relativamente all'area del panel;&lt;/li&gt;&lt;li type="square"&gt;DockPanel, che consente di organizzare gli elementi interni sia in senso verticale che orizzontale (Top, Bottom, Left, Right, Center);&lt;/li&gt;&lt;li type="square"&gt;FlowPanel, che permette di posizionare gli elementi interni in modo adattivo in base alle interruzioni di linea;&lt;/li&gt;&lt;li type="square"&gt;TextPanel, per organizzare contenuti testuali secondo diversi layout (per esempio, per colonne);&lt;/li&gt;&lt;li type="square"&gt;GridPanel, per rappresentare griglie di dati;&lt;/li&gt;&lt;li type="square"&gt;FixedPanel, per rappresentare gli elementi interni secondo una struttura di layout fissa (non adattivo).&lt;/li&gt;&lt;/ul&gt;&lt;p /&gt;&lt;p&gt;&lt;b&gt;3) Elementi testuali&lt;/b&gt;&lt;br /&gt;Sono elementi che permettono di gestire la formattazione del testo e la struttura dei documenti (Text).&lt;/p&gt;&lt;p&gt;&lt;b&gt;4) Forme&lt;/b&gt;&lt;br /&gt;XAML supporta la grafica vettoriale grazie alle Shapes (Ellipse, Line, Rectangle, Path, Polygon, ecc.), utili per disegnare forme geometriche, ai diversi tipi di Transforms (RotateTransform, TranslateTransform, ScaleTransform, SkewTransform, ecc.), ovvero trasformazioni delle proprietà di un oggetto, e le Animations, che non sono altro che trasformazioni protratte nel tempo.&lt;/p&gt;&lt;p&gt;Oltre a quanto visto sopra, esistono degli elementi pensati per gestire al meglio la visualizzazione on-line dei documenti (come nel caso di applicazioni navigabili). PageViewer è un controllo disegnato per la visualizzazione, paginazione e navigazione di contenuti on-line, un po' come avviene con un browser Web. Il controllo suddivide automaticamente i contenuti in diverse pagine e fornisce gli strumenti necessari per navigare da una pagina all'altra. I contenuti possono essere rappresentati secondo un layout adattivo (adaptive flow), al fine di occupare tutto lo spazio a disposizione, oppure fisso, indipendente dalle dimensioni della finestra e/o dello schermo o dal tipo di dispositivo di output. Esistono per l'appunto degli elementi che consentono di ottenere uno o l'altro tipo di layout.&lt;/p&gt;&lt;p&gt;Dato un elemento, è possibile associare ad esso una collection di risorse (il nome della collection è Resources). Si tratta di un modo per riutilizzare oggetti o valori comuni. Se una risorsa non è definita nella collection di un elemento, questa viene ricercata nella collection dell'elemento padre. Definendo per esempio delle risorse per un elemento Canvas, è possibile utilizzare queste risorse nell'ambito di tutti gli elementi figli del panel (Canvas.Resources). Gli stili sono un tipo particolare di risorsa (il nome della classe è Style).&lt;/p&gt;&lt;p&gt;Dopo tanti &lt;i&gt;bla bla bla&lt;/i&gt;, è arrivato il momento di mostrare qualche esempio...&lt;/p&gt;&lt;p&gt;&lt;b&gt;Codice C# ed equivalente in XAML&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Questo frammento di codice C# crea una finestra, in essa scrive &amp;quot;Tutti al Windows Development Day!&amp;quot; (mi raccomando accorrete in tanti!) tramite un controllo SimpleText (colore nero e dimensione del carattere uguale a 10pt) e la rende visibile.&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="true"&gt;&lt;code&gt;myWindow = new MSAvalon.Windows.Window();&lt;br /&gt;myElement = new MSAvalon.Windows.Controls.SimpleText();&lt;br /&gt;myElement.Text = &amp;quot;Tutti al Windows Development Day!&amp;quot;;&lt;br /&gt;myElement.Foreground = new MSAvalon.Windows.Media.SolidColorBrush&lt;br /&gt;(Colors.Black);&lt;br /&gt;myElement.FontSize = new FontSize(10, FontSizeType.Point);&lt;br /&gt;myWindow.Children.Add(myElement);&lt;br /&gt;myWindow.Show();&lt;br /&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;br /&gt;Notare che in XAML elementi e attributi hanno nomi uguali a quelli delle classi e proprietà corrispondenti. Nel tag di apertura di Window l'attributo &lt;i&gt;Visible=&amp;quot;true&amp;quot;&lt;/i&gt; equivale alla linea di codice &lt;i&gt;myWindow.Show();&lt;/i&gt;.&lt;br /&gt;  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="true"&gt;&lt;code&gt;&amp;lt;Window xmlns=&amp;quot;http://schemas.microsoft.com/2003/xaml&amp;quot; Visible=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;SimpleText Foreground=&amp;quot;Black&amp;quot;&lt;br /&gt;        FontSize=&amp;quot;10&amp;quot;&amp;gt;Tutti al Windows Development Day!&amp;lt;/SimpleText&amp;gt;&lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Control composition&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Come si fa ad ottenere un pulsante contenente una immagine usando XAML e control composition? Ecco un esempio.&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="true"&gt;&lt;code&gt;&amp;lt;Button&amp;gt;&lt;br /&gt;    &amp;lt;Image Source=&amp;quot;aspitalia.jpg&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Collection delle risorse e stili&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Come si vede, lo stile è un tipo di risorsa e ad esso può essere assegnato un nome o meno. A me ricorda qualcosa dei CSS e a voi?&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="true"&gt;&lt;code&gt;&amp;lt;Border&lt;br /&gt;    xmlns=&amp;quot;http://schemas.microsoft.com/2003/xaml&amp;quot; xmlns:def=&amp;quot;Definition&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;FlowPanel&amp;gt;&lt;br /&gt;        &amp;lt;FlowPanel.Resources&amp;gt;&lt;br /&gt;            &amp;lt;SolidColorBrush def:Name=&amp;quot;MyColor&amp;quot; Color=&amp;quot;Gold&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;Style&amp;gt;&lt;br /&gt;                &amp;lt;Button Background=&amp;quot;Green&amp;quot; FontSize=&amp;quot;15&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/Style&amp;gt;&lt;br /&gt;            &amp;lt;Style def:Name=&amp;quot;MyStyle&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;Button Background=&amp;quot;Red&amp;quot; FontSize=&amp;quot;24&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;/Style&amp;gt;&lt;br /&gt;        &amp;lt;/FlowPanel.Resources&amp;gt;&lt;br /&gt;        &amp;lt;Button&amp;gt;Bottone di colore verde&amp;lt;/Button&amp;gt;&lt;br /&gt;        &amp;lt;Button Style=&amp;quot;{MyStyle}&amp;quot;&amp;gt;Bottone di colore rosso&amp;lt;/Button&amp;gt;&lt;br /&gt;        &amp;lt;Ellipse Fill=&amp;quot;{MyColor}&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/FlowPanel&amp;gt;&lt;br /&gt;&amp;lt;/Border&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;To be continued...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&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/rickyvr/post831/XAML-Tratta.aspx"&gt;&lt;em&gt;XAML, di che si tratta?&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista, Windows Presentation Foundation, XAML</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post831/XAML-Tratta.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post831/XAML-Tratta.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS831.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=831</trackback:ping></item><item><title>Application, ApplicationNavigation e XAML</title><link>http://blogs.aspitalia.com/rickyvr/post827/Application-ApplicationNavigation-XAML.aspx</link><pubDate>Thu, 06 Jan 2005 13:48:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=827" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Terza puntata dei post dedicati ad Avalon e Longhorn (&lt;a title="Il modello applicativo di Longhorn" href="http://blogs.aspitalia.com/rickyvr/post825.aspx" target="_blank"&gt;puntata precedente&lt;/a&gt;)...&lt;/p&gt;&lt;p&gt;Semplificando si può affermare che le applicazioni per Longhorn consistono in un oggetto Application e in un insieme di pagine in XAML che rappresentano l'interfaccia utente. L'oggetto Application è di tipo singleton e rimane attivo durante l'esecuzione dell'applicazione. Questo oggetto non è altro che una istanza della classe MSAvalon.Windows.Application o di una sua derivata e fornisce l'entry point, nonchè consente di gestire lo stato, la sicurezza e gli eventi a livello applicativo. L'oggetto in questione determina anche il tipo dell'applicazione: 1) applicazione stand-alone (a finestra singola) oppure 2) applicazione navigabile. In questo secondo caso l'oggetto che rappresenta l'applicazione è una istanza della classe MSAvalon.Windows.Navigation.ApplicationNavigation che estende la classe vista in precedenza con il supporto per la navigazione (eventi di navigazione, gestione dello stato tra le pagine, condivisione di proprietà, ecc.).&lt;br /&gt;Come detto sopra, solitamente le pagine che compongono la UI vengono scritte in XAML (eXtensible Application Markup Language), che, come si può capire dal nome stesso, è un linguaggio di markup basato su XML che permette di descrivere il modello degli oggetti utilizzati dall'applicazione. In pratica una pagina XAML descrive l'albero delle istanze delle classi che il runtime andrà a creare una volta lanciata l'esecuzione dell'applicazione. Quando il runtime crea la pagina, esso istanzia ogni elemento e ogni nodo indicato nel file XAML e crea in memoria un modello a oggetti corrispondente. Questi oggetti possono in ogni caso essere modificati via codice.&lt;br /&gt;E' importante sottolineare che tutto ciò che può essere fatto utilizzando XAML può essere fatto anche in maniera programmatica (ovvero scrivendo del codice che dichiara e istanzia oggetti), ma non è vero il viceversa. Di fatto quello che si può fare tramite XAML è descrivere l'insieme gerarchico di oggetti che verranno creati dal runtime, impostarne le proprietà in modo statico o acquisendo i valori da qualche sorgente dati, memorizzare i valori delle proprietà in qualche sorgente dati, associare un event handler ad un evento.&lt;br /&gt;Le applicazioni in Longhorn basano il loro modello di sicurezza sul modello Code Access Security (CAS) fornito dal CLR. Oltre a questo, Longhorn fornisce un ambiente sicuro e gestito denominato SEE (Secure Execution Environment) che protegge gli utenti da comportamenti non proprio consoni e corretti da parte delle applicazioni. Il Trust Manager fornisce un sistema basato su punteggi per determinare il livello di fiducia (trust appunto) che gli utenti possono assegnare alle applicazioni. Come accennato nei post precedenti, a differenza di quanto avviene oggi, dove le applicazioni girano con il set FullTrust, le applicazioni in Longhorn possano girate con la corretta policy (per esempio, uguale a quella del sito da cui l'applicazione è stata scaricata). Questo è possibile proprio grazie all'esistenza del manifest di deployment, in cui sono contenute le regole di sicurezza e isolamento.&lt;/p&gt;&lt;p&gt;To be continued...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&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/rickyvr/post827/Application-ApplicationNavigation-XAML.aspx"&gt;&lt;em&gt;Application, ApplicationNavigation e XAML&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista, Windows Presentation Foundation, XAML</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post827/Application-ApplicationNavigation-XAML.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post827/Application-ApplicationNavigation-XAML.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS827.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=827</trackback:ping></item><item><title>Il modello applicativo di Longhorn</title><link>http://blogs.aspitalia.com/rickyvr/post825/Modello-Applicativo-Longhorn.aspx</link><pubDate>Wed, 05 Jan 2005 16:21:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=825" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Riprendo da &lt;a title="Cosa si può fare con Longhorn e Avalon" href="http://blogs.aspitalia.com/rickyvr/post820.aspx" target="_blank"&gt;dove avevo lasciato&lt;/a&gt;...&lt;/p&gt;&lt;p&gt;L'application model di Longhorn definisce i vari aspetti caratteristici di una applicazione in termini di: &lt;/p&gt;&lt;ul&gt;&lt;li type="square"&gt;entry point&lt;/li&gt;&lt;li type="square"&gt;flusso di controllo e di navigazione&lt;/li&gt;&lt;li type="square"&gt;stato e risorse&lt;/li&gt;&lt;li type="square"&gt;eventi&lt;/li&gt;&lt;li type="square"&gt;isolamento&lt;/li&gt;&lt;li type="square"&gt;distribuzione&lt;/li&gt;&lt;li type="square"&gt;aggiornamento e rollback&lt;/li&gt;&lt;/ul&gt;Faccio una distinzione tra applicazioni Web e applicazioni Windows, anche se di fatto le differenze che esistono oggi tra le due tipologie di applicazione tendono a venir meno grazie al nuovo application model.&lt;p /&gt;&lt;p&gt;Nel primo caso il modello applicativo consente di scrivere applicazioni Web in modo non dissimile da quanto avviene già oggi. Ma il codice può utilizzare in modo completo il livello di presentazione fornito da Longhorn. Per questo una applicazione Web non differisce poi di molto da una applicazione Windows, se non per gli aspetti collegati alla distribuzione, ovvero per il fatto che una applicazione Web risiede in ogni caso su un server. Per il resto una applicazione Web può sfruttare i controlli client, supportare multimedia e grafica, gestire eventi, ecc.&lt;br /&gt;Nel secondo caso il modello applicativo di Longhorn prevede che, sebbene sia installata localmente, l'applicazione può girare sia in modalità on-line sia in modalità off-line, all'interno del browser oppure come applicazione stand-alone. A proposito delle applicazioni Windows si parla anche di NavigationApplication, ma questo è un discorso che vorrei affrontare a parte in un post futuro.&lt;br /&gt;Per realizzare un'applicazione in Longhorn occorre definirne il modello ad oggetti; lo si può fare sia in via programmatica tramite codice sia in maniera dichiarativa tramite l'uso del linguaggio di markup XAML che la vera novità del nuovo application model. Una volta compilato il codice e/o il markup, all'applicazione viene associato un manifest applicativo (in cui sono indicate le dipendenze e le parti costituenti dell'applicazione) e un manifest di deployment, che riferisce al manifest applicativo (ovviamente!), ma permette anche di definire il livello di isolamento e le direttive di aggiornamento dell'applicazione.&lt;/p&gt;&lt;p&gt;Vorrei spendere un paio di parole sulla compilazione...&lt;/p&gt;&lt;p&gt;La compilazione può essere eseguita in due modi al fine di produrre due tipologie di risultato diverse, pensate per scopi diversi. Prima tipologia: si parla di CAML, ovvero compiled XAML, quando i file XMAL relativi ad una applicazione vengono compilati al fine di ottenere semplicemente IL (Intermediate Language). Seconda tipologia: si parla di BAML, ovvero binary XAML (rappresentazione binaria di XAML), quando il risultato atteso dalla compilazione è un documento, ovvero un container ottimizzato per il download a scapito della velocità di esecuzione. Infatti BAML è molto più compatto rispetto a CAML e per questo i file BAML si scaricano più rapidamente. Per contro eseguire un file BAML comporta un overhead derivante dalle operazioni di parsing da parte dell'interprete a run-time al fine di generare l'albero delle istanze delle classi definite in esso.&lt;br /&gt;Altro aspetto da sottolineare riguarda MSBuild. Che cosa è MSBuild? E' il nuovo sistema di build che va a sostituire il classico Make. MSBuild è in grado di acquisire le regole di compilazione dai file di progetto .proj. Queste regole sono espresse in XML secondo un preciso schema di validazione che prevede elementi quali PropertyGroup e Property, ItemGroup e Item, Import, Task e Target. Diciamo che MSBuild assomiglia a NAnt (dove è possibile definire le direttive del processo di compilazione in XML), ma rispetto a questo presenta degli aspetti che lo rendono superiore.&lt;/p&gt;&lt;p&gt;To be continued...&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/rickyvr/post825/Modello-Applicativo-Longhorn.aspx"&gt;&lt;em&gt;Il modello applicativo di Longhorn&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post825/Modello-Applicativo-Longhorn.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post825/Modello-Applicativo-Longhorn.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS825.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=825</trackback:ping></item><item><title>Cosa si pu&amp;#242; fare con Longhorn e Avalon?</title><link>http://blogs.aspitalia.com/rickyvr/post820/Fare-Longhorn-Avalon.aspx</link><pubDate>Mon, 03 Jan 2005 16:44:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=820" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Anno nuovo, vita nuova... Riprendiamo con i post sul blog!&lt;/p&gt;&lt;p&gt;In vista dell'imminente &lt;a href="http://www.dotnetcircle.it/bologna05.aspx" target="_blank"&gt;evento&lt;/a&gt; organizzato da ASPItalia e Visual Basic T&amp;amp;T in collaborazione con Microsoft su Windows Development, ho ritenuto opportuno documentarmi in anticipo sull'application model di Longhorn, visto che questo argomento verrà affrontato durante l'evento da &lt;a href="http://blogs.aspitalia.com/daniele" target="_blank"&gt;Daniele&lt;/a&gt; e &lt;a href="http://blogs.aspitalia.com/ricciolo" target="_blank"&gt;Ricciolo&lt;/a&gt;, al fine di cogliere al meglio le inevitabili &amp;quot;chicche&amp;quot; che verranno mostrate durante la manifestazione.&lt;br /&gt;Utili allo scopo si sono rivelati i dieci giorni di ferie che sto trascorrendo in questo periodo (finalmente l'occasione buona per dedicarsi al riposo e allo studio senza l'assillo delle scadenze, semplicemente per il puro gusto di farlo) e il libro del buon Brent Rector, che include una panoramica interessante relativamente a quanto incluso in Longhorn da un punto di vista dello sviluppo e delle tecnologie (ed in particolare Avalon).&lt;br /&gt;L'application model di Longhorn rende possibile la realizzazione di applicazioni utilizzando un unico modello di programmazione che supporta interfacce utente in stile applicativo, presentazione di testo, grafica e contenuti multimediali. Longhorn fornisce una architettura unificata che supporta diversi tipi di applicazione. L'obiettivo è quello di uniformare il procedimento e le tecniche di realizzazione delle diverse tipologie di applicazione. Oggi il procedimento di realizzazione di una applicazione Web rispetto a quello di una applicazione Windows è profondamente diverso, in quanto diverse sono le tecnologie e gli strumenti utilizzati per sviluppare le due tipologie di software. Questo significa avere sviluppatori con skill diversificati in base al tipo e alla porzione dell'applicazione, aspetto che sicuramente può introdurre complessità nel processo di realizzazione del software, dato che i vari componenti, oltre che ad essere sviluppati, vanno assemblati insieme, testati e distribuiti. Unificare il modo di procedere può avere dei vantaggi non trascurabili in un ottica di deployment e integrazione.&lt;br /&gt;Quindi, che cosa si può fare in Longhorn di tanto rivoluzionario rispetto a quello che già esiste oggi? Perchè è così interessante il nuovo modello applicativo introdotto con Longhorn? Beh, basta fare un po' di esempi per intravedere le potenzialità legate a Longhorn e Avalon.&lt;br /&gt;Si vuole creare una interfaccia utente per una applicazione Windows in modo dichiarativo utilizzando un linguaggio di markup come solitamente oggi si fa con le applicazioni Web? In Longhorn tramite XAML (eXtensible Application Markup Language) si può fare! Si vuole scrivere event handler fortemente tipizzati in un linguaggio managed? In Longhorn si può fare! Si vuole mixare testo, grafica e contenuti multimediali in un documento ottimizzato per il download? In Longhorn si può fare! Si vogliono distribuire le applicazioni Windows allo stesso modo con cui si fa il deployment delle applicazioni Web? In Longhorn si può fare! Si vuole far girare una applicazione come software stand-alone piuttosto che ospitata in un browser semplicemente ricompilando lo stesso sorgente? In Longhorn si può fare! Si vuole creare una applicazione Windows in modo tradizionale, basata su form, oppure creare una applicazione basata su pagine navigabili come avviene oggi per le applicazioni Web? In Longhorn si può fare! Si vogliono controllare gli aspetti di sicurezza delle applicazioni in modo che possano girare non con il set FullTrust (come avviene oggi), ma con la corretta policy (uguale a quella del sito da cui l'applicazione è stata scaricata)? In Longhorn si può fare!&lt;br /&gt;Beh, mi pare di poter dire che lo scenario futuro è quanto meno interessante, anche a fronte di quanto semplicemente detto sopra. La cosa diviene ESTREMAMENTE interessante nel momento in cui si vedono un po' di esempi di codice e/o si fanno un po' di prove. In attesa di ulteriori post sull'argomento che non mancherò di postare nei prossimi giorni sul blog, invito intanto tutti quanti ad iscriversi al &lt;a href="http://www.dotnetcircle.it/bologna05.aspx" target="_blank"&gt;Windows Development Day&lt;/a&gt;. Di carne sul fuoco ce n'è parecchia e credo proprio che il prossimo 28 gennaio a Bologna ne vedremo delle belle!&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/rickyvr/post820/Fare-Longhorn-Avalon.aspx"&gt;&lt;em&gt;Cosa si pu&amp;#242; fare con Longhorn e Avalon?&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Riccardo Golia</dc:creator><category>Windows Vista</category><guid isPermaLink="true">http://blogs.aspitalia.com/rickyvr/post820/Fare-Longhorn-Avalon.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/rickyvr/post820/Fare-Longhorn-Avalon.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/rickyvr/CommentRSS820.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=820</trackback:ping></item></channel></rss>
