<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Blogs @ UGIdotNET</title><link>http://blogs.ugidotnet.org/MainFeed.aspx</link><description>Bloggers UGIdotNET</description><generator>Subtext Version 2.1.0.3</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/UgidotnetLatestBlogPosts" /><feedburner:info uri="ugidotnetlatestblogposts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Una feauture C# 4.0 non ha e invidio a VB.NET 10</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/iga2Na1d50I/una-feauture-c-4.0-non-ha-e-invidio-a-vb.net.aspx</link><pubDate>Sun, 07 Feb 2010 16:13:26 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/spaccabit/archive/2010/02/07/una-feauture-c-4.0-non-ha-e-invidio-a-vb.net.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/spaccabit/comments/97963.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/spaccabit/comments/commentRss/97963.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/spaccabit/archive/2010/02/07/una-feauture-c-4.0-non-ha-e-invidio-a-vb.net.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/spaccabit/services/trackbacks/97963.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/spaccabit/rss.aspx">Una feauture C# 4.0 non ha e invidio a VB.NET 10</source><description>In VB.NET 10 sono stati introdotti le property ed event template.&lt;br /&gt;
&lt;a href="javascript:void(0);/*1265559161228*/"&gt;Qui&lt;/a&gt; viene spiegato il funzionamento.&lt;img src="http://blogs.ugidotnet.org/spaccabit/aggbug/97963.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/iga2Na1d50I" height="1" width="1"/&gt;</description><dc:creator>Giuseppe Lippolis</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/spaccabit/archive/2010/02/07/una-feauture-c-4.0-non-ha-e-invidio-a-vb.net.aspx</feedburner:origLink></item><item><title>Import, Export, Lazy&amp;lt;T&amp;gt; &amp;amp; PartCreationPolicy</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/rnYD5mdbsKE/import-export-lazylttgt-amp-partcreationpolicy.aspx</link><pubDate>Sun, 07 Feb 2010 11:36:03 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/federicoD/archive/2010/02/07/import-export-lazylttgt-amp-partcreationpolicy.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/federicoD/comments/97962.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/federicoD/comments/commentRss/97962.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/federicoD/archive/2010/02/07/import-export-lazylttgt-amp-partcreationpolicy.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/federicoD/services/trackbacks/97962.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/federicoD/rss.aspx">Import, Export, Lazy&amp;lt;T&amp;gt; &amp;amp; PartCreationPolicy</source><description>&lt;p&gt;Eravamo rimasti con l’avere un qualcosa di semplice ma funzionante ed in questa parte vedremo piu’ in dettaglio come utilizzare gli Export e gli Import, a cosa serve la classe Lazy&amp;lt;T&amp;gt; e l’attributo PartCreationPolicy.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Exports&lt;/strong&gt;     &lt;br /&gt;Finora abbiamo visto che una ComposablePart puo’ esportare properties, fields oppure se stessa (come nel caso del MainViewModel).&lt;/p&gt;  &lt;p&gt;Se invece avessimo l’esigenza di esportare un metodo, MEF lo vedrebbe come un delegate per cui è necessario specificare il delegate che stiamo esportando (in questo caso un Action&amp;lt;string&amp;gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image002_thumb.jpg" width="311" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;e di conseguenza l’import dovrà avere lo stesso contratto&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image004_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image004_thumb.jpg" width="312" height="40" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Imports      &lt;br /&gt;&lt;/strong&gt;Se volessimo passare le dipendenze tramite costruttore come fa un IoC container? Niente di piu’ facile :) MEF ci offre l’attributo ImportingConstructor&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image006_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image006_thumb.jpg" width="318" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="1"&gt;NB: per discussioni riguardo all'uso di MEF come IoC container date un’occhiata a questi post di Glenn Block        &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;a title="http://codebetter.com/blogs/glenn.block/archive/2009/08/16/should-i-use-mef-for-my-general-ioc-needs.aspx" href="http://codebetter.com/blogs/glenn.block/archive/2009/08/16/should-i-use-mef-for-my-general-ioc-needs.aspx"&gt;&lt;em&gt;&lt;font size="1"&gt;http://codebetter.com/blogs/glenn.block/archive/2009/08/16/should-i-use-mef-for-my-general-ioc-needs.aspx&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;     &lt;br /&gt;&lt;a title="http://codebetter.com/blogs/glenn.block/archive/2009/10/31/should-i-use-mef-with-an-ioc-container.aspx" href="http://codebetter.com/blogs/glenn.block/archive/2009/10/31/should-i-use-mef-with-an-ioc-container.aspx"&gt;&lt;em&gt;&lt;font size="1"&gt;http://codebetter.com/blogs/glenn.block/archive/2009/10/31/should-i-use-mef-with-an-ioc-container.aspx&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Una chicca offerta da MEF è l’attributo ImportMany che ci permette di importare piu’ plugin (nel nostro caso) con lo stesso contratto&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image008_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image008_thumb.jpg" width="413" height="43" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;modificando leggermente la view ed aggiungendo qualche plugin all’interno del progetto otteniamo un risultato di questo tipo&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image010_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image010_thumb.jpg" width="229" height="232" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ma come facciamo a sapere se gli imports di una nostra classe sono stati eseguiti correttamente? In questo caso ci viene incontro l’interfaccia IPartImportsSatisfiedNotification con il suo unico metodo OnImportsSatisfied che verrà chiamato quando tutti gli imports che possono essere soddisfatti verranno eseguiti.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Lazy:&lt;/b&gt;     &lt;br /&gt;Quando il container inizia a fare il suo sporco lavoro (cioè comporre le varie parti) e trova un Import, questo Import comporterà la creazione di una o piu’ istanze della parte che lo soddisfa. Questo potrebbe essere un fattore da considerare nel caso della creazione di grossi grafi di oggetti. Proprio per questo all’interno di MEF è presente la classe Lazy&amp;lt;T&amp;gt; che si occuperà di creare l’istanza della classe specificata al primo utilizzo.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image012_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image012_thumb.jpg" width="316" height="45" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La prima volta che si andrà ad utilizzare la proprietà Plugin MEF creerà l’istanza del relativo export e potremo accedervi semplicemente scrivendo Plugin.Value (la proprietà Value ritornerà sempre la stessa istanza).&lt;/p&gt;  &lt;p&gt;Quando il container cerca di comporre tutto “l’ambaradan” e non trova un export che per ogni import definito lancerà un’eccezione, ma per evitare tutto ciò è possibile settare la proprietà AllowDefault della classe ImportAttribute a true. In tal modo il container darà all’import non soddisfatto il valore di default.&lt;/p&gt;  &lt;p&gt;Ora mettiamo il caso che scriviamo un qualcosa del genere…o meglio creiamo due o piu’ proprietà che hanno lo stesso contratto. La domanda che sorge spontanea è: il container come reagirà? Creerà due istanze diverse oppure Plugin e Plugin2 punteranno alla stessa istanza?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image014_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image014_thumb.jpg" width="283" height="91" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Debuggando il tutto si puo’ notare che entrambe le proprietà puntano alla stessa istanza (hanno Object ID uguale). E se volessimo avere istanze diverse?&lt;/p&gt;  &lt;p&gt;E’ sufficiente decorare &lt;b&gt;l’export&lt;/b&gt; con l’attributo PartCreationPolicy e passargli CreationPolicy.NonShared&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image016_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/34f1d8749f22_EF5D/clip_image016_thumb.jpg" width="366" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nel prossimo post vedremo i Catalog messi a disposizione da MEF (Preview 8) e l’implementazione di un catalogo personalizzato.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Stay tuned…&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/federicoD/aggbug/97962.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/rnYD5mdbsKE" height="1" width="1"/&gt;</description><dc:creator>Federico Degrandis</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/federicoD/archive/2010/02/07/import-export-lazylttgt-amp-partcreationpolicy.aspx</feedburner:origLink></item><item><title>Malattia nel Contratto del Commercio</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/LZqUu--xSWg/malattia.aspx</link><pubDate>Sun, 07 Feb 2010 09:55:29 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/manuel0081/archive/2010/02/07/malattia.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/manuel0081/comments/97961.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/manuel0081/comments/commentRss/97961.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/manuel0081/archive/2010/02/07/malattia.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/manuel0081/services/trackbacks/97961.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/manuel0081/rss.aspx">Malattia nel Contratto del Commercio</source><description>&lt;p&gt;Un'altra di quelle cose che mi ha sconcertato...&lt;/p&gt;
&lt;p&gt;Nel Contratto del Commercio (e parlo di quello nazionale) la malattia viene retribuita in maniera davvero singolare:&lt;/p&gt;
&lt;p&gt;Per i primi 3 giorni viene corrisposto il 100% dello stipendio (periodo di carenza) ed è carico del datore di lavoro.&lt;/p&gt;
&lt;p&gt;Dal 4° al 20° giorno è previsto il 75% (!) della paga: 50% a carico dell'INPS e 25% a carico del datore di lavoro.&lt;/p&gt;
&lt;p&gt;Dal 21° giorno in poi (fino al limite di 180 giorni) è previsto nuovamente il 100% ma suddiviso tra: 66,66% INPS, 33,34% a carico del datore di lavoro.&lt;/p&gt;
&lt;p&gt;Rinvio a un secondo post il calcolo perchè è davvero complicato.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/manuel0081/aggbug/97961.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/LZqUu--xSWg" height="1" width="1"/&gt;</description><dc:creator>Emanuele Prato</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/manuel0081/archive/2010/02/07/malattia.aspx</feedburner:origLink></item><item><title>Cercasi tecnica disperatamente &amp;lt;cit.&amp;gt;</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/4sb-asPnd7c/cercasi-tecnica-disperatamente-ltcit.gt.aspx</link><pubDate>Sat, 06 Feb 2010 07:52:08 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/ddl/archive/2010/02/06/cercasi-tecnica-disperatamente-ltcit.gt.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/ddl/comments/97960.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/ddl/comments/commentRss/97960.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/ddl/archive/2010/02/06/cercasi-tecnica-disperatamente-ltcit.gt.aspx#comment</comments><slash:comments>7</slash:comments><trackback:ping>http://blogs.ugidotnet.org/ddl/services/trackbacks/97960.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/ddl/rss.aspx">Cercasi tecnica disperatamente &amp;lt;cit.&amp;gt;</source><description>&lt;p&gt;Premessa: forse questo post sarebbe più da “forum” che da “muro” ma lo posto qui sperando che il problema non sia solo mio. Sempre pronto, comunque a toglierlo dal muro se lo ritenete necessario. &lt;img alt="Wink" src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/wink_smile.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Problema: sono l’unico sviluppatore nella mia azienda (che ovviamente non produce SW). Come in molte altre situazioni come la mia non solo programmo ma faccio diversi altri lavori “informatici” (acquisto del nuovo HW, query e report vari, seguire  progetti legati a connettività, telecomunicazioni, ecc.). Oltre a questo ho sulla scrivania tutti i famosi capelli (analista, sviluppatore, tester, ecc.) e probabilmente non vesto perfettamente nessuno di questi. &lt;img alt="Smile" src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/regular_smile.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Con il crescere dei progetti (in numerosità e quantità) mi trovo sempre più spesso a lavorare tutta la gionata e a fine giornata chiedermi, mentre torno a casa: “ma oggi non dovevo fare…, ma cosa ho fatto tutto il giorno?” &lt;img alt="Sarcastic" src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/50_50.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Domanda: Al momento ho scovato solo una tecnica che mi possa aiutare nella soluzione del problema (quella del &lt;a href="http://www.pomodorotechnique.com/" target="_blank"&gt;pomodoro&lt;/a&gt; di cui ho disquisito “poco tempo fa” con &lt;a href="http://blogs.ugidotnet.org/Nick60/Default.aspx" target="_blank"&gt;Nicolò&lt;/a&gt;). Avete delle best practice per “portar fuori la pellaccia”? &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5edaf527-3020-41ab-b704-459e047bc194" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Work" rel="tag"&gt;Work&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/ddl/aggbug/97960.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/4sb-asPnd7c" height="1" width="1"/&gt;</description><dc:creator>Nazareno</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/ddl/archive/2010/02/06/cercasi-tecnica-disperatamente-ltcit.gt.aspx</feedburner:origLink></item><item><title>UK ALM User Group!</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/pz6DZxq9tIY/uk-alm-user-group.aspx</link><pubDate>Fri, 05 Feb 2010 23:45:17 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/j3r/archive/2010/02/06/uk-alm-user-group.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/j3r/comments/97959.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/j3r/comments/commentRss/97959.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/j3r/archive/2010/02/06/uk-alm-user-group.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/j3r/services/trackbacks/97959.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/j3r/rss.aspx">UK ALM User Group!</source><description>&lt;p&gt;E’ nato il primo User Group d’Europa dedicato all’ALM! Si tratta dello &lt;a href="http://ukalmug.ning.com/"&gt;UK ALM User Group&lt;/a&gt; :) Se vi capita, giovedì hanno il loro primo meeting, in piena Greater London (sede Microsoft a Cardinal Place, Victoria Station Tube stop).&lt;/p&gt;  &lt;p&gt;Dai che una birra, in un pub a Londra, non può non starci se siete in zona…ve lo dice uno che è INNAMORATO della City :D&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/j3r/aggbug/97959.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/pz6DZxq9tIY" height="1" width="1"/&gt;</description><dc:creator>Matteo Emili</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/j3r/archive/2010/02/06/uk-alm-user-group.aspx</feedburner:origLink></item><item><title>Rimborsi chilometrici</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/o_edahkOo54/rimborsi-chilometrici.aspx</link><pubDate>Fri, 05 Feb 2010 18:54:23 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/manuel0081/archive/2010/02/05/rimborsi-chilometrici.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/manuel0081/comments/97958.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/manuel0081/comments/commentRss/97958.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/manuel0081/archive/2010/02/05/rimborsi-chilometrici.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/manuel0081/services/trackbacks/97958.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/manuel0081/rss.aspx">Rimborsi chilometrici</source><description>&lt;p&gt;Buono a sapersi...&lt;/p&gt;
&lt;p&gt;In caso di trasferta al dipendente è dovuto il rimborso delle spese che ha sostenuto in base alle tabella ACI. Ma attenzione ne esistono di due tipi:&lt;/p&gt;
&lt;p&gt;1. Costi chilometrici (Per calcolare i rimborsi al dipendente (o al professionista) che faccia uso del proprio veicolo svolgendo attività a favore del datore di lavoro.) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.aci.it/index.php?id=1850"&gt;http://www.aci.it/index.php?id=1850&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Fringe benefit (Per calcolare la retribuzione in natura derivante dalla concessione di veicoli aziendali in uso ai dipendenti, per esigenze di lavoro e per esigenze private.) &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.aci.it/index.php?id=93"&gt;http://www.aci.it/index.php?id=93&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I servizi sono accessibili direttamente dal sito dell'ACI (dove viene spiegata chiaramente la differenza): &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.aci.it/index.php?id=86"&gt;http://www.aci.it/index.php?id=86&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Attenzione che i secondi sono più bassi nei primi (almeno nei casi che ho verificato). Per la mia auto addirittura si dimezzano!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/manuel0081/aggbug/97958.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/o_edahkOo54" height="1" width="1"/&gt;</description><dc:creator>Emanuele Prato</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/manuel0081/archive/2010/02/05/rimborsi-chilometrici.aspx</feedburner:origLink></item><item><title>Javascript Regular Expression per il controllo di numeri di carte di credito</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/ihw-Z6C3gK4/javascript-regular-expression-per-il-controllo-di-numeri-di-carte.aspx</link><pubDate>Fri, 05 Feb 2010 11:31:49 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/alessage/archive/2010/02/05/javascript-regular-expression-per-il-controllo-di-numeri-di-carte.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/alessage/comments/97957.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/alessage/comments/commentRss/97957.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/alessage/archive/2010/02/05/javascript-regular-expression-per-il-controllo-di-numeri-di-carte.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/alessage/services/trackbacks/97957.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/alessage/rss.aspx">Javascript Regular Expression per il controllo di numeri di carte di credito</source><description>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt; &lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;    * Visa: ^4[0-9]{12}(?:[0-9]{3})?$ All Visa card numbers start with a 4. New cards have 16 digits. Old cards have 13.&lt;/pre&gt;
&lt;pre&gt;    * MasterCard: ^5[1-5][0-9]{14}$ All MasterCard numbers start with the numbers 51 through 55. All have 16 digits.&lt;/pre&gt;
&lt;pre class="alt"&gt;    * American Express: ^3[47][0-9]{13}$ American Express card numbers start with 34 or 37 and have 15 digits.&lt;/pre&gt;
&lt;pre&gt;    * Diners Club: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$ Diners Club card numbers begin with 300 through 305, 36 or 38. All have 14 digits. There are Diners Club cards that begin with 5 and have 16 digits. These are a joint venture between Diners Club and MasterCard, and should be processed like a MasterCard.&lt;/pre&gt;
&lt;pre class="alt"&gt;    * Discover: ^6(?:011|5[0-9]{2})[0-9]{12}$ Discover card numbers begin with 6011 or 65. All have 16 digits.&lt;/pre&gt;
&lt;pre&gt;    * JCB: ^(?:2131|1800|35\d{3})\d{11}$ JCB cards beginning with 2131 or 1800 have 15 digits. JCB cards beginning with 35 have 16 digits.&lt;/pre&gt;
&lt;pre class="alt"&gt; &lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/alessage/aggbug/97957.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/ihw-Z6C3gK4" height="1" width="1"/&gt;</description><dc:creator>Alessandro Gervasoni</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/alessage/archive/2010/02/05/javascript-regular-expression-per-il-controllo-di-numeri-di-carte.aspx</feedburner:origLink></item><item><title>[DotNetMarche] Pubblicato il materiale del 13&amp;deg; workshop &amp;lsquo;WPF + M-V-VM&amp;rsquo;</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/AFSgP0q5-6Q/dotnetmarche-pubblicato-il-materiale-del-13deg-workshop-lsquowpf-m-v-vmrsquo.aspx</link><pubDate>Fri, 05 Feb 2010 09:39:33 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/ste8/archive/2010/02/05/dotnetmarche-pubblicato-il-materiale-del-13deg-workshop-lsquowpf-m-v-vmrsquo.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/ste8/comments/97956.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/ste8/comments/commentRss/97956.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/ste8/archive/2010/02/05/dotnetmarche-pubblicato-il-materiale-del-13deg-workshop-lsquowpf-m-v-vmrsquo.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://blogs.ugidotnet.org/ste8/services/trackbacks/97956.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/ste8/rss.aspx">[DotNetMarche] Pubblicato il materiale del 13&amp;deg; workshop &amp;lsquo;WPF + M-V-VM&amp;rsquo;</source><description>&lt;p&gt;Abbiamo pubblicato il materiale del workshop &lt;a href="http://dotnetmarche.org/eventi/Default.aspx?IDevento=33"&gt;"Tra presente e futuro delle interfacce utente con WPF e MVVM"&lt;/a&gt;, e questa volta oltre a codice e slide siamo riusciti a fare anche i video!&lt;/p&gt;  &lt;p&gt;Probabilmente a livello di qualità delle riprese si può fare di meglio… ma direi non male come prima volta da cameraman :)!&lt;/p&gt;  &lt;p&gt;Trovate tutto il materiale &lt;a href="http://dotnetmarche.org/files/folders/13_-_wpf__mvvm_29012010/default.aspx"&gt;qui&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;PS: anche se in futuro cercheremo di fare le riprese, purtroppo non possiamo garantire di avere sempre a disposizione gli strumenti, come tra l’altro già successo per il workshop precedente :(, per cui se potete vi consigliamo sempre di partecipare di persona per non rischiare di perdervi i contenuti… e soprattutto per avere delle possibilità di “fare networking” che con i video sicuramente vi perdereste (vedi il ragazzo che durante l’ultima sessione è stato sempre a parlare con &lt;a href="http://milestone.topics.it/"&gt;Mauro&lt;/a&gt; per chiedergli approfondimenti)!&lt;/p&gt;  &lt;p&gt;PS2: purtroppo non ci sono i video della “&lt;a href="http://www.ienumerable.it/blog/post/tra-presente-e-futuro-delle-interfacce-utente-con-wpf-e-mvvm"&gt;cena&lt;/a&gt;”… che come ha detto qualcuno, più che una cena è stata “un’esperienza”, con un &lt;a href="http://www.facebook.com/group.php?gid=45549265855&amp;amp;ref=search&amp;amp;sid=768534646.1489760869..1"&gt;personaggio unico&lt;/a&gt; a fare da cuoco/intrattenitore!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/ste8/aggbug/97956.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/AFSgP0q5-6Q" height="1" width="1"/&gt;</description><dc:creator>Stefano Ottaviani</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/ste8/archive/2010/02/05/dotnetmarche-pubblicato-il-materiale-del-13deg-workshop-lsquowpf-m-v-vmrsquo.aspx</feedburner:origLink></item><item><title>[Blend] Extract Template from a Style</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/utq9QZx42CM/blend-extract-template-from-a-style.aspx</link><pubDate>Thu, 04 Feb 2010 22:30:34 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/corrado/archive/2010/02/04/blend-extract-template-from-a-style.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/corrado/comments/97955.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/97955.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/corrado/archive/2010/02/04/blend-extract-template-from-a-style.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/97955.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/corrado/rss.aspx">[Blend] Extract Template from a Style</source><description>&lt;p&gt;Quando si usa la funzionalità &lt;strong&gt;Edit Template-&amp;gt;Edit a Copy&lt;/strong&gt; di Blend&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/WindowsLiveWriter/BlendExtractTemplatefromaStyle_14A9F/image_2.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/WindowsLiveWriter/BlendExtractTemplatefromaStyle_14A9F/image_thumb.png" width="222" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Blend in realtà crea uno style che applica il template appena estratto.   &lt;br /&gt;Personalmente mi piace organizzare le risorse all’interno di resource dictionaries (styles.xaml, templates.xaml…) e, sebbene Blend permetta di specificare dove posizionare lo style il risultato è che style e template sono tutt’uno e spesso finisco per spostare il template nel relativo resource dictionary e linkarlo nello style via {StaticResource} manualmente.    &lt;br /&gt;Oggi, &lt;a href="http://www.galasoft.ch/"&gt;Laurent&lt;/a&gt;, mi ha indicato come fare il tutto direttamente da Blend: Mentre si è in modalità di editing del template, selezionate il simbolo dello style nell’elenco superiore:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/WindowsLiveWriter/BlendExtractTemplatefromaStyle_14A9F/image_4.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/WindowsLiveWriter/BlendExtractTemplatefromaStyle_14A9F/image_thumb_1.png" width="214" height="39" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;dopodichè selezionate il property peg della proprietà &lt;strong&gt;Template&lt;/strong&gt; e selezionate &lt;strong&gt;Convert to new resource&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/WindowsLiveWriter/BlendExtractTemplatefromaStyle_14A9F/image_6.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/WindowsLiveWriter/BlendExtractTemplatefromaStyle_14A9F/image_thumb_2.png" width="188" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;e decidete dove memorizzare il template. &lt;img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif" /&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54fd51e2-5773-4551-83f3-405b10324f4b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Expression+Blend" rel="tag"&gt;Expression Blend&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/97955.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/utq9QZx42CM" height="1" width="1"/&gt;</description><dc:creator>Corrado Cavalli</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/corrado/archive/2010/02/04/blend-extract-template-from-a-style.aspx</feedburner:origLink></item><item><title>Ria Services Enterprise Business Application</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/33N_Jc-B1iU/ria-services-enterprise-business-application.aspx</link><pubDate>Thu, 04 Feb 2010 17:52:21 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/babsevensix/archive/2010/02/04/ria-services-enterprise-business-application.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/babsevensix/comments/97954.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/babsevensix/comments/commentRss/97954.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/babsevensix/archive/2010/02/04/ria-services-enterprise-business-application.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/babsevensix/services/trackbacks/97954.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/babsevensix/rss.aspx">Ria Services Enterprise Business Application</source><description>&lt;p&gt;Segnalo questi tre video sul come creare una applicazione Silverlight di tipo enteprise. &lt;/p&gt;  &lt;p&gt;se avete installato RIA Services, quando create un nuovo progetto tra le varie opzioni c’ anche WCF RIA Services Class Library, se qualcuno di voi, come me, avete provato a creare tale progetto, e l’avete quindi cancellato perchè non avete capito come utilizzarlo, ebbene in questi tre video ci sono i passaggi:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Part One: &lt;a href="http://www.screencast.com/t/NGNiZjg3ZjY"&gt;http://www.screencast.com/t/NGNiZjg3ZjY&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Part Two: &lt;a href="http://www.screencast.com/t/NGJkYTEw"&gt;http://www.screencast.com/t/NGJkYTEw&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Part Three: &lt;a href="http://www.screencast.com/t/MWQ2MjdiYTct"&gt;http://www.screencast.com/t/MWQ2MjdiYTct&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Presi dal blog : &lt;a title="http://www.riaservicesblog.net/Blog/" href="http://www.riaservicesblog.net/Blog/"&gt;http://www.riaservicesblog.net/Blog/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/babsevensix/aggbug/97954.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/33N_Jc-B1iU" height="1" width="1"/&gt;</description><dc:creator>Alberto</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/babsevensix/archive/2010/02/04/ria-services-enterprise-business-application.aspx</feedburner:origLink></item><item><title>Silverlight &amp;ndash; Applicazioni d&amp;rsquo;esempio</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/fSKS9euuLDg/silverlight-ndash-applicazioni-drsquoesempio.aspx</link><pubDate>Thu, 04 Feb 2010 17:47:41 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/babsevensix/archive/2010/02/04/silverlight-ndash-applicazioni-drsquoesempio.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/babsevensix/comments/97953.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/babsevensix/comments/commentRss/97953.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/babsevensix/archive/2010/02/04/silverlight-ndash-applicazioni-drsquoesempio.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/babsevensix/services/trackbacks/97953.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/babsevensix/rss.aspx">Silverlight &amp;ndash; Applicazioni d&amp;rsquo;esempio</source><description>&lt;p&gt;Segnalo a questo link una bella applicazione silverlight d’esempio per quanto riguarda lo stile.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://labs.cas.de/silverlight/CASCRMSL3/"&gt;Applicazione silverlight&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Guardate anche la gestione dei PDF e del calendario, bellissimo!!!!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Per chi avesse ancora dubbi su silverlight…&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/babsevensix/aggbug/97953.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/fSKS9euuLDg" height="1" width="1"/&gt;</description><dc:creator>Alberto</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/babsevensix/archive/2010/02/04/silverlight-ndash-applicazioni-drsquoesempio.aspx</feedburner:origLink></item><item><title>jshashtable 2.0 : Hashtable in Javascript</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/sI0DEaPVjO0/jshashtable-2.0-hashtable-in-javascript.aspx</link><pubDate>Thu, 04 Feb 2010 16:29:44 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/alessage/archive/2010/02/04/jshashtable-2.0-hashtable-in-javascript.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/alessage/comments/97952.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/alessage/comments/commentRss/97952.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/alessage/archive/2010/02/04/jshashtable-2.0-hashtable-in-javascript.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/alessage/services/trackbacks/97952.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/alessage/rss.aspx">jshashtable 2.0 : Hashtable in Javascript</source><description>&lt;a href="http://www.timdown.co.uk/jshashtable/#setup"&gt;http://www.timdown.co.uk/jshashtable/#setup&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt; &lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="jshashtable.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; typesHash = &lt;span class="kwrd"&gt;new&lt;/span&gt; Hashtable();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    typesHash.put(&lt;span class="str"&gt;"A string"&lt;/span&gt;, &lt;span class="str"&gt;"string"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    typesHash.put(1, &lt;span class="str"&gt;"number"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; o = &lt;span class="kwrd"&gt;new&lt;/span&gt; Object();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    typesHash.put(o, &lt;span class="str"&gt;"object"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    alert( typesHash.get(o) ); &lt;span class="rem"&gt;// "object"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/alessage/aggbug/97952.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/sI0DEaPVjO0" height="1" width="1"/&gt;</description><dc:creator>Alessandro Gervasoni</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/alessage/archive/2010/02/04/jshashtable-2.0-hashtable-in-javascript.aspx</feedburner:origLink></item><item><title>Recuperare l&amp;rsquo;icona associata ad un file eseguibile</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/fwovEoHvL_M/recuperare-lrsquoicona-associata-ad-un-file-eseguibile.aspx</link><pubDate>Thu, 04 Feb 2010 10:53:03 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/marcom/archive/2010/02/04/recuperare-lrsquoicona-associata-ad-un-file-eseguibile.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/marcom/comments/97951.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/marcom/comments/commentRss/97951.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/marcom/archive/2010/02/04/recuperare-lrsquoicona-associata-ad-un-file-eseguibile.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/marcom/services/trackbacks/97951.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/marcom/rss.aspx">Recuperare l&amp;rsquo;icona associata ad un file eseguibile</source><description>&lt;p&gt;Il .NET Framework fornisce un semplicissimo metodo per recuperare l’icona associata ad un file eseguibile, &lt;a href="http://msdn.microsoft.com/en-us/library/system.drawing.icon.extractassociatedicon.aspx" target="_blank"&gt;System.Drawing.Icon.ExtractAssociatedIcon&lt;/a&gt;. E’ possibile utilizzarlo, ad esempio, per impostare automaticamente l’icona della form principale della nostra applicazione sull’immagine specificata nelle proprietà del progetto:&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:2f594b52-c039-4fab-92d5-c9afcdebc7fc" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#F0F0F0;overflow: auto;;font-family:Consolas;font-size:8,25"&gt;&lt;span style="color: #0000FF;"&gt;Me&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Icon &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath)&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;Semplice e veloce :-)&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6e8adf9a-14ff-4bec-9fc7-ba4c4e77f483" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Programming" rel="tag"&gt;Programming&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VB+.NET" rel="tag"&gt;VB .NET&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/marcom/aggbug/97951.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/fwovEoHvL_M" height="1" width="1"/&gt;</description><dc:creator>Marco Minerva</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/marcom/archive/2010/02/04/recuperare-lrsquoicona-associata-ad-un-file-eseguibile.aspx</feedburner:origLink></item><item><title>WCF RIA Services</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/J8BI1YKblow/wcf-ria-services.aspx</link><pubDate>Wed, 03 Feb 2010 22:11:19 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/babsevensix/archive/2010/02/03/wcf-ria-services.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/babsevensix/comments/97948.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/babsevensix/comments/commentRss/97948.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/babsevensix/archive/2010/02/03/wcf-ria-services.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/babsevensix/services/trackbacks/97948.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/babsevensix/rss.aspx">WCF RIA Services</source><description>&lt;p&gt;Come segnalato dal Blog di Jason Allor’s è finito il 16 Gennaio 2010 la stesura e il disegno delle WCF RIA Services. Ora sono in Bug Fixing, Stress Goals e poi verrà rilasciata la prima versione. Che dire, Complimenti!!!!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/jasonall/archive/2010/01/16/wcf-ria-services-is-feature-complete.aspx" target="_blank"&gt;Jason Allor's Blog&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/babsevensix/aggbug/97948.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/J8BI1YKblow" height="1" width="1"/&gt;</description><dc:creator>Alberto</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/babsevensix/archive/2010/02/03/wcf-ria-services.aspx</feedburner:origLink></item><item><title>In esilio volontario</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/Q3ks6Kh0dNk/in-esilio-volontario.aspx</link><pubDate>Wed, 03 Feb 2010 18:00:40 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/piyo/archive/2010/02/03/in-esilio-volontario.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/piyo/comments/97941.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/piyo/comments/commentRss/97941.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/piyo/archive/2010/02/03/in-esilio-volontario.aspx#comment</comments><slash:comments>27</slash:comments><trackback:ping>http://blogs.ugidotnet.org/piyo/services/trackbacks/97941.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/piyo/rss.aspx">In esilio volontario</source><description>&lt;p&gt;Probabilmente qualcuno ne è già a conoscenza: settimana scorsa ho rassegnato le mie dimissioni da &lt;a href="http://www.avanade.com/it/" target="_blank"&gt;Avanade&lt;/a&gt; e, a partire da dopo Pasqua, inizierò a lavorare a Bruxelles, in Belgio, per il &lt;a href="http://www.consilium.europa.eu/showPage.aspx?lang=IT" target="_blank"&gt;Consiglio dell’Unione Europea&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Addio Italia, purtoppo devo abbandonare le tue Alpi e i tuoi laghi. So che mi mancheranno le tue bellezza naturali, ma tutto il resto mi spinge ad andarmene.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Inoltre, in Italia il poco “web” è considerato ancora un suppellettile, ancora più che non il resto dell’IT, ed è quindi sviluppato principalmente da web agency, non da aziende di consulenza IT.&lt;/p&gt;  &lt;p&gt;Già al mio ritorno dalla Nuova Zelanda avevo tentato la sorte iscrivendomi al concorso per entrare a lavorare nella Comunità Europea, e finalmente, dopo 2 anni e mezzo (1 anno e mezzo di concorso e 1 anno di attesa per essere pescato dalla lista) mi hanno offerto un posto all’interno di un istituzione della Unione Europea: e anche un posto molto interessante. Sarò team lead e architect del team che sviluppa i siti pubblici del Consiglio dell’Unione Europea.&lt;/p&gt;  &lt;p&gt;In realtà ci sono anche dei motivi collegati al tipo di lavoro, dei quali ho parlato sul mio blog in inglese:  &lt;a href="http://codeclimber.net.nz/archive/2010/02/03/so-long-avanade-and-thanks-for-all-the-fish.aspx" target="_blank"&gt;So Long Avanade, and Thanks for All the Fish&lt;/a&gt;. Ma la voglia di andare via dell’Italia e l’arrivo ormai quasi inaspettato dell’offerta dal Consiglio sono state le due cause scatenanti.&lt;/p&gt;  &lt;p&gt;Anche &lt;a href="http://tech.piyodesign.it/" target="_blank"&gt;Daniela&lt;/a&gt; si è già dimessa, e dopo aver imparato il francese si metterà alla ricerca di un posto come UX. Fortunatamente in Belgio è un ruolo rispettato e richiesto, a differenza dell’Italia.&lt;/p&gt;  &lt;p&gt;Per quel che riguarda la community, continuerò, insieme a &lt;a href="http://blogs.ugidotnet.org/BlogEma/Default.aspx"&gt;Emanuele&lt;/a&gt; e &lt;a href="http://blogs.ugidotnet.org/makka/Default.aspx"&gt;Claudio&lt;/a&gt; a gestire &lt;a href="http://ugialt.net/"&gt;UGIALT.NET&lt;/a&gt; e ad organizzare le prossime conferenze.&lt;/p&gt;  &lt;p&gt;E ora, ancora meno di due mesi da passare in Italia e poi svalicherò le Alpi per andare verso il Belgio.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1ac44e25-0907-4f22-b628-b31cb932bc68" class="wlWriterEditableSmartContent"&gt;Tags: &lt;a href="http://del.icio.us/popular/avanade" rel="tag"&gt;avanade&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/lavoro" rel="tag"&gt;lavoro&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/belgio" rel="tag"&gt;belgio&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/trasferimento" rel="tag"&gt;trasferimento&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/piyo/aggbug/97941.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/Q3ks6Kh0dNk" height="1" width="1"/&gt;</description><dc:creator>Simone Chiaretta</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/piyo/archive/2010/02/03/in-esilio-volontario.aspx</feedburner:origLink></item><item><title>Ho fatto e sistemato un danno sul nostro TFS 2010</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/QUPGXvTbuqY/ho-fatto-e-sistemato-un-danno-sul-nostro-tfs-2010.aspx</link><pubDate>Wed, 03 Feb 2010 15:42:26 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/IvanF/archive/2010/02/03/ho-fatto-e-sistemato-un-danno-sul-nostro-tfs-2010.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/IvanF/comments/97940.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/IvanF/comments/commentRss/97940.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/IvanF/archive/2010/02/03/ho-fatto-e-sistemato-un-danno-sul-nostro-tfs-2010.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blogs.ugidotnet.org/IvanF/services/trackbacks/97940.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/IvanF/rss.aspx">Ho fatto e sistemato un danno sul nostro TFS 2010</source><description>&lt;p&gt;Ormai è qualche mese che usiamo TFS 2010 e io da poco ho avuto la brillante idea di attivare i test autoamtici su ogni build, con tanto di registrazione degli eventi Intellitrace con un limite di 100Mb per file. Fantastico … … peccato che dopo 500 build il nsotro fantastico DB era diventato di 50Gb e aveva occupato tutto il disco :S&lt;/p&gt;  &lt;p&gt;Chiaramente sono corso ai ripari disattivando subito l’Intellitrace su ogni build (in Continuous Integration), estendendo leggermente il disco dati, mettendo il recovery model del DB in simple, facendo un bel backup con successivo shrink del transaction log.&lt;/p&gt;  &lt;p&gt;A questo punto il modo più veloce che ho trovato per cancellare questi mega allegati è stato di operare direttamente sul DB della Defaultcollection con il seguente TSQL:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;delete from tbl_AttachmentContent where AttachmentId in (SELECT top 10 tbl_Attachment.AttachmentId      &lt;br /&gt;FROM   tbl_Attachment     ORDER BY tbl_Attachment.UncompressedLength DESC, tbl_Attachment.AttachmentId) &lt;/p&gt;    &lt;p&gt;delete from tbl_Attachment where AttachmentId in (SELECT top 10 tbl_Attachment.AttachmentId      &lt;br /&gt;FROM   tbl_Attachment     ORDER BY tbl_Attachment.UncompressedLength DESC, tbl_Attachment.AttachmentId)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Come vedete elimino 10 record alla volta, perchè l’eliminazione porta ad una crescita del transaction log di circa 1Gb e avendo pochissimo spazio a disposizone inizialmente ho fatto 10 allegati alla volta, dopo qualche shrink del DB sono salito a 50.&lt;/p&gt;  &lt;p&gt;Adesso il nostro TFS è di nuovo in forma.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/IvanF/aggbug/97940.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/QUPGXvTbuqY" height="1" width="1"/&gt;</description><dc:creator>Ivan Fioravanti</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/IvanF/archive/2010/02/03/ho-fatto-e-sistemato-un-danno-sul-nostro-tfs-2010.aspx</feedburner:origLink></item><item><title>Raf on Channel9</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/pOgPa9ovoKc/raf-on-channel9.aspx</link><pubDate>Wed, 03 Feb 2010 10:38:53 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/raffaele/archive/2010/02/03/raf-on-channel9.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/raffaele/comments/97939.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/raffaele/comments/commentRss/97939.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/raffaele/archive/2010/02/03/raf-on-channel9.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://blogs.ugidotnet.org/raffaele/services/trackbacks/97939.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/raffaele/rss.aspx">Raf on Channel9</source><description>&lt;p&gt;Missione conclusa con successo. Ieri sera &lt;a href="http://blogs.msdn.com/pietrobr/" target="_blank"&gt;Pietro&lt;/a&gt; mi ha intervistato in un breve video in cui racconto la costruzione di un sensore per Windows 7 realizzato per il workshop UGIdotNET tenutosi nel pomeriggio nell'auditorium di Microsoft Italia. &lt;a href="http://channel9.msdn.com/posts/PietroBrambati/Windows-7-Sensor-and-Location-Platform-dalle-API-all-UMDF-Sensor-Driver/" target="_blank"&gt;La registrazione del video è su Channel9&lt;/a&gt;.    &lt;br /&gt;Nel video c'è una rapida overview della costruzione del dispositivo, il firmware del microcontrollore, il device driver per Windows ed infine l'applicazione che lo utilizza.&lt;/p&gt;  &lt;p&gt;Tutto parte da ieri durante la mia sessione "&lt;a href="http://www.ugidotnet.org/events/CommunityTourEnvisioning.aspx" target="_blank"&gt;Windows 7: sensori e multitouch cambiano il modo di interagire con il PC&lt;/a&gt;" ho ri-mostrato il &lt;a href="http://www.iamraf.net/Articles/SurfRaf-home-made-surface-for-Windows-7" target="_blank"&gt;SurfRaf&lt;/a&gt; con nuove demo e con gli aggiornamenti di WPF 4.0 beta2.&lt;/p&gt;  &lt;p&gt;Ma la novità era chiaramente il dispositivo USB che ho chiamato RafStorm:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/IMG_2672.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="IMG_2672" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/IMG_2672_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_thumb_4.png" width="244" height="184" /&gt;&lt;/p&gt;  &lt;p&gt;Questo dispositivo è un anemometro molto casalingo che legge (vedi cavetto) i buchi in un piattello (preso da un vecchio hard disk) con 16 buchi. Una forcella costituita da un fototransistor e un led legge la presenza/assenza dei buchi. Calcolando il numero di buchi al secondo e sapendo che ci sono 16 buchi per giro, si ricava facilmente il numero di RPM (giri al minuto).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_10.png"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_thumb_7.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_thumb_2.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_thumb_5.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/raffaele/WindowsLiveWriter/RafonChannel9_A3CA/image_thumb_6.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;La reale novità di questo dispositivo è che viene visto come "Sensore" da Windows 7 e questo implica diversi vantaggi molto importanti:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Più processi contemporaneamente possono usare il dispositivo senza doversi contendere il canale di comunicazione&lt;/li&gt;    &lt;li&gt;Le applicazioni possono usare i nuovi dispositivi della stessa categoria senza neppure dover essere ricompilati&lt;/li&gt;    &lt;li&gt;Non è ncessario usare alcuna libreria del produttore. Nulla di nulla. Le Sensor API espongono i dati con un certo formato a seconda della categoria di cui il sensore fa parte. È il driver dei sensori costruito dal produttore del sensore a dover esporre i dati in modo coerente con la categoria.&lt;/li&gt;    &lt;li&gt;Security! Dal pannello di controllo gli amministratori del PC possono permettere o negare agli utenti l'uso di ogni singolo sensore. Sempre dal pannello di controllo gli utenti possono scegliere se rendere disponibile o meno i sensori alle applicazioni.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Avevo scritto l'applicazione demo in C# che usa le il &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack" target="_blank"&gt;wrapper per API di Windows 7&lt;/a&gt; (tra cui quelle dei sensori) già lo scorso anno. Quando ho finito di costruire il device ed il suo driver, l'applicazione ha visto il mio device automaticamente.&lt;/p&gt;  &lt;p&gt;La chiave di svolta che consente di trasformare un "normale" dispositivo in un "Windows 7 Sensor" è il driver (in modalità User Mode e perciò aprova di bluescreen) che dialoga con il dispositivo ed espone i dati alle Sensor API.&lt;/p&gt;  &lt;p&gt;La semplificazione del modello dei sensori significa poter utilizzare i sensori anche in applicazioni in cui la sensoristica non sia lo scopo primario. Pensate ad esempio al valore aggiunto di cambiare la skin da chiara a scura leggendo la luminosità della stanza. Oppure a leggere l'apertura e chiusura cassetto per un POS.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/raffaele/aggbug/97939.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/pOgPa9ovoKc" height="1" width="1"/&gt;</description><dc:creator>Raffaele Rialdi</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/raffaele/archive/2010/02/03/raf-on-channel9.aspx</feedburner:origLink></item><item><title>Video su Be-It</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/E7YXarSIblY/video-su-be-it.aspx</link><pubDate>Wed, 03 Feb 2010 09:54:48 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/rgm/archive/2010/02/03/video-su-be-it.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/rgm/comments/97938.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/97938.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/rgm/archive/2010/02/03/video-su-be-it.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/97938.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/rgm/rss.aspx">Video su Be-It</source><description>&lt;p&gt;Grazie al buon Lorenzo, posso provare il player embedded per i video di Be-It. Ecco qui sotto il player con listati i miei tre video :) vediamo se funziona  se ho fatto tutto correttamente.&lt;/p&gt;
&lt;script src="http://www.microsoft.com/italy/beit/js/microsoftbeit/microsoftbeit.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;&lt;![CDATA[microsoftbeitvideosload('microsoftbeitvideo511');]]&gt;&lt;/script&gt;

&lt;div id="microsoftbeitvideo511"&gt;&lt;div&gt;
    &lt;a href="http://www.microsoft.com/italy/beit/Generic.aspx?video=e4731e7c-9e37-4e77-a71b-06b51673da87"&gt;Introduzione a Team Build 2008&lt;/a&gt;&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/italy/beit/Generic.aspx?video=49896572-bfe1-4137-b996-7938670ae3fd"&gt;Customizzare Team Build 2008&lt;/a&gt;&lt;br /&gt;
    &lt;a href="http://www.microsoft.com/italy/beit/Generic.aspx?video=b5a1fb66-0a53-4803-918a-1be0f22027af"&gt;Gestire efficacemente il ciclo di vita di un Database&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/97938.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/E7YXarSIblY" height="1" width="1"/&gt;</description><dc:creator>Gian Maria  Ricci</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/rgm/archive/2010/02/03/video-su-be-it.aspx</feedburner:origLink></item><item><title>UgiDotNet CT: la cena!</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/3L-3IP_7g1I/ugidotnet-ct-la-cena.aspx</link><pubDate>Wed, 03 Feb 2010 21:21:42 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-la-cena.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/flexy/comments/97947.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/flexy/comments/commentRss/97947.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-la-cena.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/flexy/services/trackbacks/97947.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/flexy/rss.aspx">UgiDotNet CT: la cena!</source><description>&lt;p&gt;Dopo tanto parlare eccoci a quella che è stata definita all’unanimità la sessione più bella della serata: la cena! Siamo andati tutti al RoadHouse in via rivoltana:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00298_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00298" border="0" alt="SNC00298" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00298_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00299_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00299" border="0" alt="SNC00299" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00299_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00300_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00300" border="0" alt="SNC00300" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00300_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00302_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00302" border="0" alt="SNC00302" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00302_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Veramente una bellissima serata! Abbiamo mangiato l’impossibile…e la coda alla cassa lo ha dimostrato! Vi dico solo che alla fine ci hanno regalato il limoncello! Ah, dimenticavo, io non l’ho assaggiata ma la torta sembrava buonissima….&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00301_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SNC00301" border="0" alt="SNC00301" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTlacena_13A3F/SNC00301_thumb.jpg" width="224" height="297" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/flexy/aggbug/97947.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/3L-3IP_7g1I" height="1" width="1"/&gt;</description><dc:creator>Michele Aponte</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-la-cena.aspx</feedburner:origLink></item><item><title>UgiDotNet CT: Prototopizzazione con Alessandro Scardova</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/GsENa3SNJFk/ugidotnet-ct-prototopizzazione-con-alessandro-scardova.aspx</link><pubDate>Wed, 03 Feb 2010 21:04:45 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-prototopizzazione-con-alessandro-scardova.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/flexy/comments/97946.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/flexy/comments/commentRss/97946.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-prototopizzazione-con-alessandro-scardova.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/flexy/services/trackbacks/97946.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/flexy/rss.aspx">UgiDotNet CT: Prototopizzazione con Alessandro Scardova</source><description>&lt;p&gt;Alessandro Scardova ci parla di prototipi dell’interfaccia utente.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTPrototopizzazioneconAlessandr_10281/SNC00295_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SNC00295" border="0" alt="SNC00295" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTPrototopizzazioneconAlessandr_10281/SNC00295_thumb.jpg" width="378" height="284" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Prototipo concettuale: il Mock-up&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Da forma ad un0idea &lt;/li&gt;    &lt;li&gt;Bassa fedeltà &lt;/li&gt;    &lt;li&gt;Orizzontale &lt;/li&gt;    &lt;li&gt;Veloce (tools) &lt;/li&gt;    &lt;li&gt;Limiti &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;ma il limite forte è che il mock-up è statico! Grazie a Sketch Flow possiamo rendere dinamico il prototipo, in modo che il cliente riesca con poco sforzo a darci feedback su quanto realizzato. La funzionalità è oggi una delle chiavi di successo del software: facilità d’uso, ergonomia, soddisfacimento delle aspettative.&lt;/p&gt;  &lt;p align="justify"&gt;Prototipo funzionale:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Funzionalità&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Non funziona :D&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;media fedeltà&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Orizzontale&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Stessa tecnologia&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Usability&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Tools (WPF &amp;amp; SL)&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;SketchFlow&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Nel team va aggiunta una nuova figura: User Experience Integrator:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Una nuova figura professionale&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;Oltre il “devigner”&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Studia la usability delle applicazioni&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;non solo il web&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Tramite tra il creativo e il team&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;E si va subito con una demo! Alessandro ci mostra blend3 + sketchflow creando un progetto da zero, in particolare una WPF Scketchflow Application (l’alternativa è quella silverlight).&lt;/p&gt;  &lt;p align="justify"&gt;Per testare la user interface possiamo invece creare un prototipo “funzionante”, che è diverso da funzionale:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;UI Test&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Alta fedeltà&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Verticale&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Stessa tecnologia&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Validazione&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;Input utente&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div align="justify"&gt;Logica business&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Backend fake&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Tools (.NET)&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;Blend&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div align="justify"&gt;Visual Studio&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Sono utilizzati per validare la logica di business. Concludendo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Ogni fase ha il suo prototipo&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Il prototipo si butta&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div align="justify"&gt;Ma non le idee&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.ugidotnet.org/flexy/aggbug/97946.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/GsENa3SNJFk" height="1" width="1"/&gt;</description><dc:creator>Michele Aponte</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-prototopizzazione-con-alessandro-scardova.aspx</feedburner:origLink></item><item><title>Introduzione a MEF</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/1AJXeK4Fc7s/introduzione-a-mef.aspx</link><pubDate>Wed, 03 Feb 2010 08:04:34 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/federicoD/archive/2010/02/03/introduzione-a-mef.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/federicoD/comments/97937.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/federicoD/comments/commentRss/97937.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/federicoD/archive/2010/02/03/introduzione-a-mef.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blogs.ugidotnet.org/federicoD/services/trackbacks/97937.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/federicoD/rss.aspx">Introduzione a MEF</source><description>&lt;p&gt;In questo periodo l’universita’ o meglio un suo laboratorio di ricerca mi ha dato l’opportunita’ (oltre che lo stimolo) di studiare MEF e le Parallel Extensions utilizzando il .NET 3.5, ed io ho colto la palla al balzo!&lt;/p&gt;
&lt;p&gt;Cosi’ ho deciso di scrivere una serie di post su MEF sperando che possano interessare a qualcuno. Di seguito trovate la lista dei post che seguiranno nelle prossime settimane:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;Introduzione a MEF&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt; Imports &amp;amp; Exports&lt;/li&gt;
    &lt;li&gt;Catalogs&lt;/li&gt;
    &lt;li&gt;Recomposition&lt;/li&gt;
    &lt;li&gt;Metadata&lt;/li&gt;
    &lt;li&gt;Internals? “Fluent Composition”? &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Cos’e’ MEF?&lt;/strong&gt;    &lt;br /&gt;
Il Managed Extensibility Framework (MEF) permette la creazione di applicazioni estendibili in maniera semplice e veloce evitando al programmatore di crearsi una propria infrastruttura per la gestione dei plugins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Come funziona?&lt;/strong&gt;    &lt;br /&gt;
Dall’immagine sottostante possiamo notare che MEF puo’ essere “diviso” in 3 parti:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;I Catalogs (DirectoryCatalog, AssemblyCatalog, TypeCatalog, CustomCatalog) che si occupano di scovare i nostri plugins&lt;/li&gt;
    &lt;li&gt;Il CompositionContainer che soddisfa le dipendenze ed espone gli Exports al mondo esterno &lt;/li&gt;
    &lt;li&gt;Le Parts o meglio le Composable Parts che possono offrire dei servizi (Exports) e ne possono importare altri (Imports) da altre Composable Parts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image002_2.jpg"&gt;&lt;img height="377" border="0" width="501" style="border: 0px none ; display: inline;" title="clip_image002" alt="clip_image002" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image002_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una Composable Part e’ sostanzialmente l’istanza di una nostra classe che espone o utilizza dei servizi ed ogni Import/Export avra’ un determinato contratto che verra’ specificato tramite degli attributi. Il Container interagisce con i Catalogs per avere accesso alle Composable Parts e quindi risolvere le dipendenze. &lt;/p&gt;
&lt;p&gt;Ora che abbiamo un’infarinatura molto generale di cosa sia MEF e di come funzioni diamo un’occhiata alla prima applicazione.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image004_2.jpg"&gt;&lt;img height="292" border="0" width="238" style="border: 0px none ; display: inline;" title="clip_image004" alt="clip_image004" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image004_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbiamo creato due progetti il primo (IntroductionToMEFSample) che contiene un’applicazione di prova, il secondo che contiene il contratto che i plugins dovreanno rispettare.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image006_2.jpg"&gt;&lt;img height="119" border="0" width="294" style="border: 0px none ; display: inline;" title="clip_image006" alt="clip_image006" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image006_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'applicazione di prova e’ un progetto WPF dove utilizzo il pattern MVVM ed in particolare la versione implementata da Sacha Barber chiamata Cinch (in realta’ non e’ un semplice framework MVVM…infatti dentro troviamo un bel po’ di marchingegni utili). Ho utilizzato Cinch al posto di altri framework MVVM perche’ non l’avevo mai provato, quindi non uso nessuna chicca particolare.&lt;/p&gt;
&lt;p&gt;Come possiamo vedere il MainViewModel e’ molto semplice…espone semplicemente una proprieta’ Plugin che conterra’ il plugin caricato da MEF. La proprieta’ Plugin pero’ e’ decorata con l’attributo Import che dira’ a MEF ed in particolare al CompositionContainer che deve essere valorizzata.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image008_2.jpg"&gt;&lt;img height="207" border="0" width="336" style="border: 0px none ; display: inline;" title="clip_image008" alt="clip_image008" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image008_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La classe MainViewModel invece e’ decorata con l’attributo Export che dice al CompositionContainer che il MainViewModel e’ l’implementazione di un servizio.&lt;/p&gt;
&lt;p&gt;Passando alla MainWindow vediamo che implementa una proprieta’ ViewModel decorata anch’essa con l’attributo Import.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image010_2.jpg"&gt;&lt;img height="180" border="0" width="374" style="border: 0px none ; display: inline;" title="clip_image010" alt="clip_image010" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image010_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Di seguito troviamo l’implementazione di un plugin che implementera’ l’interfaccia IPlugin, cioe’ il contratto da noi definito. In questo caso con l’attributo Export abbiamo anche specificato il tipo da esportare, o meglio il tipo di servizio che offre la nostra Composable Part.&lt;/p&gt;
&lt;p&gt;Togliendo il typeof(IPlugin) e lasciando un semplice Export il CompositionContainer non sara’ in grado di risolvere le dipendenze.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image012_2.jpg"&gt;&lt;img height="278" border="0" width="306" style="border: 0px none ; display: inline;" title="clip_image012" alt="clip_image012" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image012_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Passiamo ora alla parte fondamentale…&lt;strong&gt;come fa MEF a capire a chi associare cosa?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image014_2.jpg"&gt;&lt;img height="135" border="0" width="608" style="border: 0px none ; display: inline;" title="clip_image014" alt="clip_image014" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image014_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nel costruttore della view abbiamo creato il CompositionContainer passandogli come parametro un AssemblyCatalog (che tratteremo nei prossimi post) al quale abbiamo passato l’assembly corrente, in quanto all’interno del nostro progetto abbiamo il plugin che vogliamo ed inoltre il ViewModel della view&lt;/p&gt;
&lt;p&gt;Infine abbiamo chiamato l’extension method ComposeParts passandogli l’istanza della nostra classe (anch’essa e’ una ComposablePart in quanto utilizza dei servizi cioe’ il ViewModel). Il ComposeParts risolvera’ le dipendenze (in realta’ se ne occupa il metodo Compose del container) ed avremo il nostro progetto bello e funzionante.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image016_2.jpg"&gt;&lt;img height="94" border="0" width="244" style="border: 0px none ; display: inline;" title="clip_image016" alt="clip_image016" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/IntroduzioneaMEF_7F99/clip_image016_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/federicoD/aggbug/97937.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/1AJXeK4Fc7s" height="1" width="1"/&gt;</description><dc:creator>Federico Degrandis</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/federicoD/archive/2010/02/03/introduzione-a-mef.aspx</feedburner:origLink></item><item><title>ExtJs Online Gui Designer</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/tWcNrhEEzQ0/extjs-online-gui-designer.aspx</link><pubDate>Wed, 03 Feb 2010 08:02:35 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/alessage/archive/2010/02/03/extjs-online-gui-designer.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/alessage/comments/97936.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/alessage/comments/commentRss/97936.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/alessage/archive/2010/02/03/extjs-online-gui-designer.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/alessage/services/trackbacks/97936.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/alessage/rss.aspx">ExtJs Online Gui Designer</source><description>E' da un po' che utilizzo il famoso framework javascript &lt;a href="http://www.extjs.com/"&gt;Extjs&lt;/a&gt; per il layout di siti, ho trovato recentemente due siti che mettono a disposizione online due editor che ti facilitano nelle costruzioni delle interfacce&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.projectspace.nl/"&gt;http://www.projectspace.nl/&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://tof2k.com/ext/formbuilder/"&gt;http://tof2k.com/ext/formbuilder/&lt;/a&gt;&lt;br /&gt;&lt;img src="http://blogs.ugidotnet.org/alessage/aggbug/97936.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/tWcNrhEEzQ0" height="1" width="1"/&gt;</description><dc:creator>Alessandro Gervasoni</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/alessage/archive/2010/02/03/extjs-online-gui-designer.aspx</feedburner:origLink></item><item><title>UgiDotNet CT: Architecting Enterprise Web Solutions con Andrea Saltarello</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/J5jO9zCQKIk/ugidotnet-ct-architecting-enterprise-web-solutions-con-andrea-saltarello.aspx</link><pubDate>Wed, 03 Feb 2010 20:55:07 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-architecting-enterprise-web-solutions-con-andrea-saltarello.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/flexy/comments/97944.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/flexy/comments/commentRss/97944.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-architecting-enterprise-web-solutions-con-andrea-saltarello.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blogs.ugidotnet.org/flexy/services/trackbacks/97944.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/flexy/rss.aspx">UgiDotNet CT: Architecting Enterprise Web Solutions con Andrea Saltarello</source><description>&lt;p align="justify"&gt;Ed ecco Andrea che accende il suo mac…. :D, sì, sta usando un mac con Windows 7 Ultimate virtualizzato! E’ sempre un grande! &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTArchitectingEnterpriseWebsolu_EAD5/SNC00289_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00289" border="0" alt="SNC00289" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTArchitectingEnterpriseWebsolu_EAD5/SNC00289_thumb.jpg" width="265" height="200" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTArchitectingEnterpriseWebsolu_EAD5/SNC00291_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00291" border="0" alt="SNC00291" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTArchitectingEnterpriseWebsolu_EAD5/SNC00291_thumb.jpg" width="264" height="199" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="justify"&gt;Si parte con le solite definizioni di software di qualità (ISO/IEC 9126), architettura (ISO/IEC 42010) e UML (ISO/IEC 19501).  Guadatevi i video, perchè non posso riportare i gesti che sta facendo…. Riassumo: siamo pagati per soddisfare i requisiti, non per divertirci!&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTArchitectingEnterpriseWebsolu_EAD5/SNC00290_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SNC00290" border="0" alt="SNC00290" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCTArchitectingEnterpriseWebsolu_EAD5/SNC00290_thumb.jpg" width="303" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Progettare significa:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;raccogliere requisiti&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;formulare i requisiti&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;effettuare scelte &lt;em&gt;“requisite driven”&lt;/em&gt; tenendo a mente che &lt;em&gt;“architecture is hard to change”&lt;/em&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;esprimere le scelte mediante view&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;[opzionale] salva la cheerleader, salva il  mondo :D&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;E si va con un bel case study: Progetto Gutenberg – Amiacque – Managed Design.  Amiacque è il consorzio Acqua Potabile della provincia di Milano, 200+ comuni serviti, 2M+ utenti, azienda pubblica, Portale “legacy” implemenato in PHP su MySQL. bisognava in pratica fare l’home banking dell’acqua…poi volevano anche un CMS. Le funzionalità richieste sono state:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Sportello per clienti finali&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Sportello per amministratori&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Pagamento on-line&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;opportune funzionalità di backoffice&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Oracle RAC&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Integrazione con sistema commerciale&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Concordanza:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Accessibilità (è una PA)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;registrazione degli accessi effettuati da AdS in accorso al provvedimento GU n.300 emesso dal Garante per la protezione dei dati personali in data 24 dicembre 2008&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;rispetto della normativa attinente gli amministratori (di condominio)&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Disponibilità:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;SLA 13x7 (7 AM – 8 PM)&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Usabilità:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Gli utenti di backoffice  devono avere una UX simile a quella attuale!&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Lo sportello è un “home banking”&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;E’ finito il tempo… :D Ma c’è sempre la cena!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/flexy/aggbug/97944.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/J5jO9zCQKIk" height="1" width="1"/&gt;</description><dc:creator>Michele Aponte</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-architecting-enterprise-web-solutions-con-andrea-saltarello.aspx</feedburner:origLink></item><item><title>UgiDotnet CT: WCF RIA Services == RAD for Silverlight</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/HYd7Jo3qPJc/ugidotnet-ct-wcf-ria-services-rad-for-silverlight.aspx</link><pubDate>Wed, 03 Feb 2010 20:49:56 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-wcf-ria-services-rad-for-silverlight.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/flexy/comments/97943.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/flexy/comments/commentRss/97943.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-wcf-ria-services-rad-for-silverlight.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.ugidotnet.org/flexy/services/trackbacks/97943.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/flexy/rss.aspx">UgiDotnet CT: WCF RIA Services == RAD for Silverlight</source><description>&lt;p align="justify"&gt;Corrado Cavalli ci presenta WCF RIA Services illustrandoci come questa tecnologia ci permetta di realizzare applicazioni LOB con Silverlight in maniera RAD. L’insieme della parte di presentazione e la parte che sta sul server rappresenta la classica Rich Internet Application, il che significa avere a che fare con applicazioni n-tier.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00285_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00285" border="0" alt="SNC00285" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00285_thumb.jpg" width="270" height="204" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00286_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00286" border="0" alt="SNC00286" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00286_thumb.jpg" width="271" height="204" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="justify"&gt;Alcuni aspetti problematici da gestire&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Sincronizzazione dei client&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Propagazione eccezioni&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Batch Mode&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;risolvere questi problemi rappresenta uno sforzo non indifferente, possiamo però usare i RIA Services per semplificarci la vita. Parliamo di un insieme di framework, tools e servizi per la semplificazione delle problematiche RIA&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Data Shaping (Paging, Sorting, Filtering)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Rules (Validazone, Autorizzazione, User Settings, Concorrenza)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Ottimizzazioni (invio batch di dati al server9&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Lo scopo è rendere fruibili le operazioni e le entità di business nella maniera più semplice e naturale possibile. Cosa da non sottovalutare è che non sono legato da uno specifico data acces (però usare EF &amp;amp; L2S aiuta!). Per utilizzare subito questa tecnologia basta scaricare i WCF RIA Service per Visual Studio 2010 Beta 2.&lt;/p&gt;  &lt;p align="justify"&gt;Corrado ci mostra subito una demo, realizzando un catalogo musicale (il suo commento: perlomeno non ho usato northwind…:D) (per la demo vi rimando ai video delle sessioni che saranno disponibili nei prossimi giorni). &lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00287_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SNC00287" border="0" alt="SNC00287" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00287_thumb.jpg" width="292" height="220" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Come funziona? Viene creata un’infrastruttura che lega client e server:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Runtime via WCF&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Statico (Code generation e Shared code via Visual Studio)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;il legame è trasparente per lo sviluppatore&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Enable .NET RIA Services link in Visual Studio&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Il punto cruciale è la classe DomainService, che rappresenta l’insieme delle operazioni CRUD messe a disposizione lato server. Può essere autogenerata da Visual Studio, possiamo usare LinqToSqlDomainservvice e LinqToentitiesDomainService. L’altro oggetto cruciale è il DomainContext che  è la versione lato client del DomainService, che ci offre un insieme di elementi quante sono le entità esposte dal servizio, un oggetto EntityQuery&amp;lt;T&amp;gt; quante sono le operazioni di lettura espose dal servizio, il metodo load(EntityQuery&amp;lt;T&amp;gt;) che esegue la query invocando il relativo metodo del server, rejectchange e submitchange. E’ fortemente basato su delle convezioni, ad esempio ogni metodo del servizio che torna un’entità genera una query GetXXX e ReturnXXX, deve ritornare &amp;lt;T&amp;gt;, IEnumerable&amp;lt;T&amp;gt; o IQueryable&amp;lt;T&amp;gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Ad ogni tipo esposto dal DomainService possono essere associati dei metadati che controllano la generazione lato client:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;[Name].metadata.cs&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;E’ una classe parziale decorata con MetadataTypeAttribute&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Permette di arricchire i tipi senza agire sui tipi stessi (POCO)&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Posso usare degli attributi di validazione:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Required&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;StrinLenght&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;RegularExpression&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Range&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Display&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Custom&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Oltre alle classiche funzionalità di CRUD, possiamo invocare un qualsiasi metodo di business utilizzando l’attributo [Invoke] : il metodo così decorato rappresenta un mio classico metodo esposto con wcf (lato client diventa un metodo sul context). se voglio che il metodo sia invocato alla SubmitChanges uso l’attributo [Update] sul metodo. &lt;/p&gt;  &lt;p align="justify"&gt;La unit of work viene elaborata secondo questa sequenza:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Submit – riceve il changeset&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;authorizeChangeSet – verifica i permessi&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;ValidateChangeSet – esegue la validazione&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;ExecuteChangeSet – esegue le operazioni&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;PersistChangeSet – invoca la submit del context&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;ResolveChangeSet – processa le unit che hanno avuto problemi di concorrenza&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;tutti virtual che posso overridare. Un ulteriore attributo, [Resolve], permette di definire la nostra logica di risoluzione della concorrenza. E’ possibile inolte utilizzare lo stesso meccanismo di autenticazione, ruoli e profili di ASP.NET. lato client la parte di autorizzazione è esposta da WebContext. &lt;/p&gt;  &lt;p align="justify"&gt;Tutti i domain services in una web application generano il relativo context, quindi se ho due applicazionni silverlight che usano i miei servizi possono realizzare una ria services class library e referenziarla nella mia applicazione silverlight.&lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p&gt;Perdonate eventuali imprecisioni ma era difficile seguire e scrivere conteporaneamente! Vi lascio con una foto emblematica del risultato della sessione:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00288_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SNC00288" border="0" alt="SNC00288" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotnetCTWCFRIAServicesRADforSilverlig_CE1C/SNC00288_thumb.jpg" width="316" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/flexy/aggbug/97943.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/HYd7Jo3qPJc" height="1" width="1"/&gt;</description><dc:creator>Michele Aponte</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-ct-wcf-ria-services-rad-for-silverlight.aspx</feedburner:origLink></item><item><title>UgiDotNet Community Tour: noi ci siamo!</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/TRYw9E3ydts/ugidotnet-community-tour-noi-ci-siamo.aspx</link><pubDate>Wed, 03 Feb 2010 20:39:35 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-community-tour-noi-ci-siamo.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/flexy/comments/97942.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/flexy/comments/commentRss/97942.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-community-tour-noi-ci-siamo.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/flexy/services/trackbacks/97942.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/flexy/rss.aspx">UgiDotNet Community Tour: noi ci siamo!</source><description>&lt;p align="justify"&gt;Non  potevamo non esserci all’ultima tappa del community tour, specialmente se è UgiDotNet a chiudere questa serie di eventi. Io e il buon Antonio, da bravi napoletani a Milano, ci siamo persi tra metro e autobus, ma alla fine siamo riusciti ad arrivare in orario! si parte con una keynote di Lorenzo, Andrea e Raf che ci illustrano l’agenda della giornata. Ci sono state due track, noi abbiamo seguito le prime due di quella Web e l’ultima della track Envisioning. Purtroppo in sala non c’era segnale wind quindi non ho potuto postare live, dovrete accontentarvi della differita! :D&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCommunityTournoicisiamo_CC22/SNC00283_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00283" border="0" alt="SNC00283" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCommunityTournoicisiamo_CC22/SNC00283_thumb.jpg" width="262" height="198" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCommunityTournoicisiamo_CC22/SNC00284_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNC00284" border="0" alt="SNC00284" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/flexy/WindowsLiveWriter/UgiDotNetCommunityTournoicisiamo_CC22/SNC00284_thumb.jpg" width="265" height="200" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.ugidotnet.org/flexy/aggbug/97942.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/TRYw9E3ydts" height="1" width="1"/&gt;</description><dc:creator>Michele Aponte</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/flexy/archive/2010/02/03/ugidotnet-community-tour-noi-ci-siamo.aspx</feedburner:origLink></item><item><title>OpenAgile Vs Scrum</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/bDu1T11A1gs/openagile-vs-scrum.aspx</link><pubDate>Tue, 02 Feb 2010 21:51:00 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/luKa/archive/2010/02/02/openagile-vs-scrum.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/luKa/comments/97935.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/luKa/comments/commentRss/97935.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/luKa/archive/2010/02/02/openagile-vs-scrum.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/luKa/services/trackbacks/97935.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/luKa/rss.aspx">OpenAgile Vs Scrum</source><description>&lt;!-- TRANSLATE ITALIAN START --&gt;
&lt;div style="text-align: center; font-family: Verdana;"&gt; &lt;a href="javascript:var%20t=((window.getSelection&amp;amp;&amp;amp;window.getSelection())||(document.getSelection&amp;amp;&amp;amp;document.getSelection())||(document.selection&amp;amp;&amp;amp;document.selection.createRange&amp;amp;&amp;amp;document.selection.createRange().text));var%20e=(document.charset||document.characterSet);if(t!=''){location.href='http://translate.google.com/translate_t?text='+t+'&amp;amp;hl=en&amp;amp;langpair=en|it&amp;amp;tbb=1&amp;amp;ie='+e;}else{location.href='http://translate.google.com/translate?u='+escape(location.href)+'&amp;amp;hl=en&amp;amp;langpair=en|it&amp;amp;tbb=1&amp;amp;ie='+e;};" title="Clicca per tradurre questa pagina Web. Seleziona e clicca per tradurre la selezione."&gt;Traduci al ITALIANO &amp;gt;&amp;gt;&amp;gt;&lt;/a&gt; &lt;/div&gt;
&lt;!-- TRANSLATE END --&gt;  &lt;br style="font-family: Verdana;" /&gt;
&lt;span style="font-family: Verdana;"&gt;&lt;img hspace="20" height="176" border="0" align="left" width="283" vspace="20" alt="" src="http://www.interactivearchitecture.org/wp-content/imagebank/mirrors.jpg" /&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Read about in this interesting post: &lt;/span&gt;&lt;a style="font-family: Verdana;" href="http://www.agileadvice.com/2010/02/01/uncategorized/comparison-of-openagile-with-scrum/"&gt;Comparison of OpenAgile with Scrum&lt;/a&gt;&lt;br style="font-family: Verdana;" /&gt;
&lt;br style="font-family: Verdana;" /&gt;
&lt;span style="font-family: Verdana;"&gt; To me they are really the same thing, explained and described in two different ways. &lt;/span&gt;&lt;br style="font-family: Verdana;" /&gt;
&lt;span style="font-family: Verdana;"&gt; This means to me twice the chances to understand it right... or one chance to understand it twice deeper. Indeed.&lt;/span&gt;&lt;br style="font-family: Verdana;" /&gt;
&lt;br style="font-family: Verdana;" /&gt;
&lt;span style="font-family: Verdana;"&gt; If you are really curious about the deep similarities read this excerpt from OpenAgile &lt;/span&gt;&lt;a style="font-family: Verdana;" href="http://blogs.ugidotnet.org/luKa/archive/0001/01/01/the-six-blind-men-and-the-elephant-again.aspx"&gt;The six blind men and the elephant&lt;/a&gt;&lt;span style="font-family: Verdana;"&gt; and compare it with &lt;/span&gt;&lt;a style="font-family: Verdana;" href="http://blogs.ugidotnet.org/luKa/archive/0001/01/01/root-cause-analysis-diagrammi-sense-making-again.aspx"&gt;Sense Making&lt;/a&gt;&lt;span style="font-family: Verdana;"&gt; a complexity science tool that stands at the foundations of Scrum.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana; color: rgb(153, 204, 0);"&gt;And you? Do you see more differences or more similarities?&lt;/span&gt;&lt;br style="font-family: Verdana;" /&gt;
&lt;br style="font-family: Verdana;" /&gt;
&lt;br style="font-family: Verdana;" /&gt;
&lt;div style="text-align: center; font-family: Verdana;"&gt; Tags :  &lt;a href="http://blogs.ugidotnet.org/luKa/Tags/Team+Work" rel="tag"&gt;Team Work&lt;/a&gt; | &lt;a href="http://blogs.ugidotnet.org/luKa/Tags/Agile" rel="tag"&gt;Agile&lt;/a&gt; | &lt;a href="http://blogs.ugidotnet.org/luKa/Tags/Complessità" rel="tag"&gt;Complessità&lt;/a&gt; | &lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/luKa/aggbug/97935.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/bDu1T11A1gs" height="1" width="1"/&gt;</description><dc:creator>Luca Minudel</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/luKa/archive/2010/02/02/openagile-vs-scrum.aspx</feedburner:origLink></item><item><title>Workshop &amp;quot;UGIdotNET feat. Community Tour&amp;quot;</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/1Rz4YnoYko8/workshop-quotugidotnet-feat.-community-tourquot.aspx</link><pubDate>Tue, 02 Feb 2010 20:17:15 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/Markino/archive/2010/02/02/workshop-quotugidotnet-feat.-community-tourquot.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/Markino/comments/97934.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/Markino/comments/commentRss/97934.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/Markino/archive/2010/02/02/workshop-quotugidotnet-feat.-community-tourquot.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/Markino/services/trackbacks/97934.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/Markino/rss.aspx">Workshop &amp;quot;UGIdotNET feat. Community Tour&amp;quot;</source><description>Eccomi di ritorno dal workshop "UGIdotNET feat. Community Tour". Piacevole partecipare nuovamente ad un evento offline community anche se in versione ridotta rispetto a quelli del passato, ma ci piace anche così. (continua)&lt;img src="http://blogs.ugidotnet.org/Markino/aggbug/97934.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/1Rz4YnoYko8" height="1" width="1"/&gt;</description><dc:creator>Marco Barzaghi</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/Markino/archive/2010/02/02/workshop-quotugidotnet-feat.-community-tourquot.aspx</feedburner:origLink></item><item><title>Valore Radio Button con Jquery</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/JZtydblggT0/valore-radio-button-con-jquery.aspx</link><pubDate>Tue, 02 Feb 2010 10:43:05 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/alessage/archive/2010/02/02/valore-radio-button-con-jquery.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/alessage/comments/97933.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/alessage/comments/commentRss/97933.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/alessage/archive/2010/02/02/valore-radio-button-con-jquery.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/alessage/services/trackbacks/97933.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/alessage/rss.aspx">Valore Radio Button con Jquery</source><description>$("input[name='radiobuttonname']:checked").val()&lt;img src="http://blogs.ugidotnet.org/alessage/aggbug/97933.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/JZtydblggT0" height="1" width="1"/&gt;</description><dc:creator>Alessandro Gervasoni</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/alessage/archive/2010/02/02/valore-radio-button-con-jquery.aspx</feedburner:origLink></item><item><title>Ribbon, PRISM &amp;amp; RegionAdapterBase</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/eceZoC0geSM/ribbon-prism-amp-regionadapterbase.aspx</link><pubDate>Tue, 02 Feb 2010 08:42:46 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/federicoD/archive/2010/02/02/ribbon-prism-amp-regionadapterbase.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/federicoD/comments/97932.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/federicoD/comments/commentRss/97932.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/federicoD/archive/2010/02/02/ribbon-prism-amp-regionadapterbase.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/federicoD/services/trackbacks/97932.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/federicoD/rss.aspx">Ribbon, PRISM &amp;amp; RegionAdapterBase</source><description>&lt;p&gt;Da qualche giorno ho iniziato ad utilizzare PRISM all’interno di un progetto universitario e visto che c’ero venerdi’ scorso ho partecipato al workshop tenuto da &lt;a href="http://dotnetmarche.org/"&gt;DotNetMarche&lt;/a&gt; su WPF, MVVM e UI Composition (a dir poco fantastico, soprattutto la cena :D ).&lt;/p&gt;
&lt;p&gt;Per la UI ho scelto di utilizzare i &lt;a href="http://www.codeplex.com/wikipage?ProjectName=wpf&amp;amp;title=WPF%20Ribbon%20Preview"&gt;WPF Ribbon Controls&lt;/a&gt;, visto che sono free, abbastanza documentati e anche se hanno qualche “magagna” in fondo funzionano bene.&lt;/p&gt;
&lt;p&gt;Il mio intento e’ di fare in modo che ogni modulo dell’applicazione possa iniettare, oltre che alla view principale, anche un menu’, o meglio un RibbonTab, in quanto il menu’ di base della shell e’ un controllo Ribbon.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/RibbonPRISMIRegionAdapter_84C7/ribbon.png"&gt;&lt;img height="166" border="0" width="555" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/RibbonPRISMIRegionAdapter_84C7/ribbon_thumb.png" alt="ribbon" title="ribbon" style="border: 0px none ; display: inline;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/RibbonPRISMIRegionAdapter_84C7/ribbontab.png"&gt;&lt;img height="180" border="0" width="554" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/federicoD/WindowsLiveWriter/RibbonPRISMIRegionAdapter_84C7/ribbontab_thumb.png" alt="ribbontab" title="ribbontab" style="border: 0px none ; display: inline;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Mi sono cimentato in questa “impresa” prima di finir di leggere la &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40&amp;amp;displaylang=en"&gt;Composite Application Guidance for WPF&lt;/a&gt; o meglio proprio una manciata di pagine prima della sezione sulle regions…&lt;/p&gt;
&lt;p&gt;All’inizio, quindi, ho provato semplicemente ad aggiungere il menu’ alla MenuRegion (visto che ha funzionato con un TabControl per la main view perche’ non dovrebbe funzionare con il Ribbon? :D ) ed infatti non veniva visualizzato nulla.&lt;/p&gt;
&lt;p&gt;Cosi’ ho chiesto a &lt;a href="http://dotnetumbria.org/blogs/possanzini/"&gt;Paolo Possanzini&lt;/a&gt; alcune delucidazione e molto gentilmente mi ha spiegato a cosa servono i Region Adapters e quando utilizzarli!&lt;/p&gt;
&lt;p&gt;Alla fine ho creato un RibbonRegionAdapter per la Ribbon&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; RibbonRegionAdapter : RegionAdapterBase&amp;lt;Ribbon&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; Ribbon regionTarget;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; RibbonRegionAdapter(IRegionBehaviorFactory factory)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;             : &lt;span style="color: rgb(0, 0, 255);"&gt;base&lt;/span&gt;(factory)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Adapt(IRegion region, Ribbon regionTarget)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;.regionTarget = regionTarget;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;             regionTarget.Tabs.Clear();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;             region.ActiveViews.CollectionChanged += &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; NotifyCollectionChangedEventHandler(OnActiveViewsChanged);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; IRegion CreateRegion()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; AllActiveRegion();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; OnActiveViewsChanged(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, NotifyCollectionChangedEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;switch&lt;/span&gt; (e.Action)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt; NotifyCollectionChangedAction.Add:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;                     &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (RibbonTab v &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; e.NewItems)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;                         regionTarget.Tabs.Add(v);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt;                     &lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum31" style="color: rgb(96, 96, 96);"&gt;  31:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt; NotifyCollectionChangedAction.Remove:&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum32" style="color: rgb(96, 96, 96);"&gt;  32:&lt;/span&gt;                     &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (RibbonTab v &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; e.NewItems)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum33" style="color: rgb(96, 96, 96);"&gt;  33:&lt;/span&gt;                         regionTarget.Tabs.Remove(v);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum34" style="color: rgb(96, 96, 96);"&gt;  34:&lt;/span&gt;                     &lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum35" style="color: rgb(96, 96, 96);"&gt;  35:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum36" style="color: rgb(96, 96, 96);"&gt;  36:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span id="lnum37" style="color: rgb(96, 96, 96);"&gt;  37:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ed ora tutto funziona correttamente (o quasi…ma questo e’ un altro discorso)…&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/federicoD/aggbug/97932.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/eceZoC0geSM" height="1" width="1"/&gt;</description><dc:creator>Federico Degrandis</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/federicoD/archive/2010/02/02/ribbon-prism-amp-regionadapterbase.aspx</feedburner:origLink></item><item><title>Domani SurfRaf e ...</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/ZFFat2l9Dgk/domani-surfraf-e.aspx</link><pubDate>Mon, 01 Feb 2010 13:01:36 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/raffaele/archive/2010/02/01/domani-surfraf-e.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/raffaele/comments/97930.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/raffaele/comments/commentRss/97930.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/raffaele/archive/2010/02/01/domani-surfraf-e.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://blogs.ugidotnet.org/raffaele/services/trackbacks/97930.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/raffaele/rss.aspx">Domani SurfRaf e ...</source><description>&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/corrado" target="_blank"&gt;Corrado&lt;/a&gt; non te la prendere con me, tuttalpiù con il &lt;a href="http://blogs.ugidotnet.org/pape/" target="_blank"&gt;Presidente&lt;/a&gt; che per la seconda volta di seguito ci ha messo in track parallele ;-)&lt;/p&gt;  &lt;p&gt;Oltre a tenere vivo lo spirito di &lt;a href="http://www.iamraf.net/Articles/SurfRaf-home-made-surface-for-Windows-7" target="_blank"&gt;SurfRaf&lt;/a&gt; nelle demo del MultiTouch, sono riuscito a terminare in tempo la costruzione di un &lt;u&gt;nuovo&lt;/u&gt; hardware per la demo dei sensori. E se al workshop verranno i *veri* geek, l'hardware è irresistibile! :)&lt;/p&gt;  &lt;p&gt;Prometto che non mi porto il saldatore dietro e che parlerò soprattutto di software (managed) :-p&lt;/p&gt;  &lt;p&gt;See you tomorrow!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/raffaele/aggbug/97930.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/ZFFat2l9Dgk" height="1" width="1"/&gt;</description><dc:creator>Raffaele Rialdi</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/raffaele/archive/2010/02/01/domani-surfraf-e.aspx</feedburner:origLink></item><item><title>Realizzare prototipi con SketchFlow</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/F1-sEv3EQ7I/realizzare-prototipi-con-sketchflow.aspx</link><pubDate>Mon, 01 Feb 2010 12:13:26 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/allePalle_blog/archive/2010/02/01/realizzare-prototipi-con-sketchflow.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/allePalle_blog/comments/97929.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/allePalle_blog/comments/commentRss/97929.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/allePalle_blog/archive/2010/02/01/realizzare-prototipi-con-sketchflow.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/allePalle_blog/services/trackbacks/97929.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/allePalle_blog/rss.aspx">Realizzare prototipi con SketchFlow</source><description>&lt;p&gt;Domani al Workshop "&lt;a href="http://www.ugidotnet.org/events/CommunityTourEnvisioning.aspx" target="_blank"&gt;UGIdotNET feat. Community Tour&lt;/a&gt;" terrò una presentazione su come realizzare prototipi funzionali con SketchFlow, incluso in Blend 3.0: vedremo la differenza tra un &lt;strong&gt;Mock-Up&lt;/strong&gt; e un &lt;strong&gt;Prototipo Funzionale&lt;/strong&gt; e un breve accenno al &lt;strong&gt;Prototipo Funzionante&lt;/strong&gt;. Gli argomenti sono gli stessi della &lt;a href="http://dotdotnet.org/content/Tour09win.aspx" target="_blank"&gt;presentazione di Imola&lt;/a&gt;, alla quale ho aggiunto un accenno a come SketchFlow si può inserire nel ciclo di vita di un progetto software, migliorandone la qualità.&lt;/p&gt;  &lt;p&gt;Ci si vede là!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/allePalle_blog/aggbug/97929.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/F1-sEv3EQ7I" height="1" width="1"/&gt;</description><dc:creator>Alessandro Scardova</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/allePalle_blog/archive/2010/02/01/realizzare-prototipi-con-sketchflow.aspx</feedburner:origLink></item><item><title>Ingenium. It&amp;rsquo;s time to make a change.</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/gv0zfqdZRAc/ingenium.-itrsquos-time-to-make-a-change.aspx</link><pubDate>Mon, 01 Feb 2010 08:29:16 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/dsenatore/archive/2010/02/01/ingenium.-itrsquos-time-to-make-a-change.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/dsenatore/comments/97928.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/dsenatore/comments/commentRss/97928.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/dsenatore/archive/2010/02/01/ingenium.-itrsquos-time-to-make-a-change.aspx#comment</comments><slash:comments>8</slash:comments><trackback:ping>http://blogs.ugidotnet.org/dsenatore/services/trackbacks/97928.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/dsenatore/rss.aspx">Ingenium. It&amp;rsquo;s time to make a change.</source><description>&lt;p&gt;&lt;img style="DISPLAY: inline; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px" align="right" alt="" src="http://www.codesapiens.net/public/Ingeniumlogosmall.jpg" /&gt; Tre anni fa ho cominciato un percorso che mi ha portato ad intraprendere la professione di Ingegnere Libero Professionista. In tre anni di lavoro posso dire di essermi veramente messo alla prova con moltissime tipologie di progetti. Il cambiamento, come prevedevo tre anni fa, ha portato grandi miglioramenti e nuove soddisfazioni nella mia vita.&lt;/p&gt;
&lt;p&gt;E’ con grande orgoglio che oggi annuncio la nascita della società di software &lt;a href="http://www.ingeniumsoft.com/"&gt;Ingenium Software Engineering&lt;/a&gt;, con la quale continuerò la mia attività di consulente e con la quale proporrò dei prodotti software sviluppati in proprio.&lt;/p&gt;
&lt;p&gt;Ingenium nasce con in mente un concetto fondamentale, ovvero che il Software è un’opera dell’ingegno, e come tale va trattato. Il nostro obiettivo primario è la soddisfazione del nostro cliente e la totale attenzione alle sue necessità. I progetti e i case-studies che abbiamo affrontato in questi anni ci permettono di affrontare praticamente ogni tipo di progetto informatico, sia esso di integrazione o sviluppo ad-hoc, impiegando qualsiasi tecnologia web o desktop.&lt;/p&gt;
&lt;p&gt;Se siete interessati a conoscerci, volete sapere come lavoriamo, che tecnologie utilizziamo o volete collaborare con noi, &lt;a href="http://www.ingeniumsoft.com/"&gt;visitate il nostro sito web&lt;/a&gt;. Saremo felici di condividere con voi il nostro ottimismo per la nuova avventura che abbiamo intrapreso!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/dsenatore/aggbug/97928.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/gv0zfqdZRAc" height="1" width="1"/&gt;</description><dc:creator>Davide Senatore</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/dsenatore/archive/2010/02/01/ingenium.-itrsquos-time-to-make-a-change.aspx</feedburner:origLink></item><item><title>Data type mismatch in criteria expression in MS Access</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/fCi-tfM-iv8/data-type-mismatch-in-criteria-expression-in-ms-access.aspx</link><pubDate>Sun, 31 Jan 2010 19:39:41 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/BabbaBlog/archive/2010/01/31/data-type-mismatch-in-criteria-expression-in-ms-access.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/BabbaBlog/comments/97927.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/BabbaBlog/comments/commentRss/97927.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/BabbaBlog/archive/2010/01/31/data-type-mismatch-in-criteria-expression-in-ms-access.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.ugidotnet.org/BabbaBlog/services/trackbacks/97927.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/BabbaBlog/rss.aspx">Data type mismatch in criteria expression in MS Access</source><description>&lt;p&gt;Oggi sono diventato scemo per fare un inserimento di una data in MS Access… non ho capito bene il problema e se è un baco, ma praticamente se non converto la data evitando che ci siano i millisecondi access si incazza come una bestia… mahh!!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public override void Save(OleDbConnection conn)     &lt;br /&gt;{      &lt;br /&gt;    string sqlcmd = @"INSERT INTO miatabella (UserName, DteRichiesta) Values (?,?)";      &lt;br /&gt;    using (OleDbCommand cmd = new OleDbCommand(sqlcmd, conn))      &lt;br /&gt;    {      &lt;br /&gt;        cmd.CommandType = CommandType.Text;      &lt;br /&gt;        cmd.Parameters.AddWithValue("UserName", this.UserName);      &lt;br /&gt;        cmd.Parameters.AddWithValue("DteRichiesta", this.DteRichiesta);      &lt;br /&gt;        cmd.ExecuteNonQuery();      &lt;br /&gt;    }      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Questa il metodo super complesso di conversione:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public static DateTime GetMSAccessDate(DateTime date)     &lt;br /&gt;{      &lt;br /&gt;    return new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second);      &lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.ugidotnet.org/BabbaBlog/aggbug/97927.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/fCi-tfM-iv8" height="1" width="1"/&gt;</description><dc:creator>Paolo Ongari</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/BabbaBlog/archive/2010/01/31/data-type-mismatch-in-criteria-expression-in-ms-access.aspx</feedburner:origLink></item><item><title>[Entity Framework] Gestione runtime dei metadati</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/ywGceKsyHaA/entity-framework-gestione-runtime-dei-metadati.aspx</link><pubDate>Sat, 30 Jan 2010 15:49:43 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/dsantarelli/archive/2010/01/30/entity-framework-gestione-runtime-dei-metadati.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/dsantarelli/comments/97926.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/97926.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/dsantarelli/archive/2010/01/30/entity-framework-gestione-runtime-dei-metadati.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/97926.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/dsantarelli/rss.aspx">[Entity Framework] Gestione runtime dei metadati</source><description>&lt;p&gt;Il comportamento di default del wizard dell’EF accorpa i metadati del modello come risorse del nostro assembly e inserisce una stringa di connessione nell’ app.config o nel web.config in modo da referenziare a runtime tali risorse:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;connectionStrings&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;add&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;name&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;"&lt;span style="color: blue"&gt;NorthwindEntities&lt;/span&gt;"&lt;span style="color: blue"&gt;        &lt;br /&gt;     &lt;/span&gt;&lt;span style="color: red"&gt;connectionString&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;&lt;strong&gt;metadata=res://*/NorthwindModel.csdl|res://*/NorthwindModel.ssdl|res://*/NorthwindModel.msl;...&lt;/strong&gt;&lt;/span&gt;"       &lt;br /&gt;     &lt;span style="color: red"&gt;providerName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.Data.EntityClient&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 8pt; mso-no-proof: yes"&gt;connectionStrings&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-no-proof: yes"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Tuttavia, “embeddare” i metadati del nostro modello come risorsa dell’assembly può costituire un limite: infatti sorgerebbero dei problemi qualora volessimo&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;esporre i metadati alla modifica di agenti esterni &lt;/li&gt;    &lt;li&gt;referenziare tramite connection string dei metadati definiti altrove sul file system &lt;/li&gt;    &lt;li&gt;caricare i metadati on-demand magari leggendoli da stream di rete&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Infatti, esistono dei casi in cui può essere utile distinguere tra metadati di test e metadati di produzione o comunque prevedere delle politiche che possano richiedere storage model (SSDL) e mapping model (MSL) diversi, pur mantenendo l’integrità del modello concettuale (CSDL) utilizzato dallo sviluppatore.&lt;/p&gt;  &lt;p&gt;Una prassi molto comune è impostare l’opzione &lt;em&gt;'&lt;strong&gt;Metadata Artifact Processing&lt;/strong&gt;&lt;/em&gt;' del designer a '&lt;em&gt;&lt;strong&gt;Copy to Output Directory&lt;/strong&gt;&lt;/em&gt;'.  &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/dsantarelli/WindowsLiveWriter/EntityFrameworkGestioneruntimedeimetadat_124D3/immaginejz%5B1%5D_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="immaginejz[1]" border="0" alt="immaginejz[1]" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/dsantarelli/WindowsLiveWriter/EntityFrameworkGestioneruntimedeimetadat_124D3/immaginejz%5B1%5D_thumb.jpg" width="244" height="115" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;In questo modo nella bin del nostro progetto troviamo i metadati SSDL, MSL e CSDL separati fisicamente dalla .dll di output.     &lt;br /&gt;Quindi abbiamo già raggiunto l’obiettivo di poter modificare i metadati (solitamente SSDL e MSL) senza dover ricompilare la nostra applicazione. A questo punto possiamo scegliere di modificare la nostra connection string in modo che punti al corretto insieme di file:     &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;string&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt; connectionString = &lt;span style="color: #a31515"&gt;@"&lt;strong&gt;metadata=.\NorthwindModel.csdl|.\NorthwindModel.ssdl|.\NorthwindModel.msl&lt;/strong&gt;;         &lt;br /&gt;                            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;provider=System.Data.SqlClient; provider connection string=""...&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;"" "&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;;     &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;NorthwindContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NorthwindContext&lt;/span&gt;(connectionString)) &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;{ ... &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-no-proof: yes"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Uno step ulteriore che si può prevedere è il caricamento dinamico di metadati non soltanto da una locazione fisica su file system, ma anche da un generico stream (es. da un web server via HTTP). A riguardo, il seguente esempio mostra come caricare dinamicamente CSDL, SSDL e MSL in modo da creare un oggetto di tipo &lt;a href="http://msdn.microsoft.com/it-it/library/system.data.entityclient.entityconnection.aspx" target="_blank"&gt;EntityConnection&lt;/a&gt; da passare al nostro ObjectContext: &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 8pt; mso-no-proof: yes"&gt;     &lt;br /&gt;// Get CSDL/SSDL/MSL from a generic stream ...      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;string&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt; csdl = &lt;span style="color: #a31515"&gt;"&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&amp;lt;Schema...&amp;lt;/Schema&amp;gt;"&lt;/span&gt;;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; ssdl = &lt;span style="color: #a31515"&gt;"&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&amp;lt;Schema...&amp;lt;/Schema&amp;gt;"&lt;/span&gt;;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; msl = &lt;span style="color: #a31515"&gt;"&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&amp;lt;Mapping...&amp;lt;/Mapping&amp;gt;"&lt;/span&gt;;      &lt;p /&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;XmlTextReader&lt;/span&gt; csdlXmlReader = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;XmlTextReader&lt;/span&gt;(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringReader&lt;/span&gt;(csdl));      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;XmlTextReader&lt;/span&gt; ssdlXmlReader = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;XmlTextReader&lt;/span&gt;(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringReader&lt;/span&gt;(ssdl));      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;XmlTextReader&lt;/span&gt; mslXmlReader = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;XmlTextReader&lt;/span&gt;(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringReader&lt;/span&gt;(msl));      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;EdmItemCollection&lt;/span&gt; edmItemCollection = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EdmItemCollection&lt;/span&gt;(&lt;span style="color: blue"&gt;new&lt;/span&gt;[] { csdlXmlReader });      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;StoreItemCollection&lt;/span&gt; storeItemCollection = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StoreItemCollection&lt;/span&gt;(&lt;span style="color: blue"&gt;new&lt;/span&gt;[] { ssdlXmlReader });      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;StorageMappingItemCollection&lt;/span&gt; storageMappingItemCollection = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StorageMappingItemCollection&lt;/span&gt;(edmItemCollection, storeItemCollection, &lt;span style="color: blue"&gt;new&lt;/span&gt;[] { mslXmlReader });      &lt;br /&gt;      &lt;p&gt;       &lt;br /&gt;&lt;/p&gt;   &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 8pt; mso-no-proof: yes"&gt;// Create the metadata workspace for the EntityConnection ...     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;MetadataWorkspace&lt;/span&gt; metadataWorkspace = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MetadataWorkspace&lt;/span&gt;();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;metadataWorkspace.RegisterItemCollection(edmItemCollection);     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;metadataWorkspace.RegisterItemCollection(storeItemCollection);     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;metadataWorkspace.RegisterItemCollection(storageMappingItemCollection);     &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; sqlConnectionString = &lt;span style="color: #a31515"&gt;@"Data Source=.\SQLSRV08;Initial Catalog=Northwind;User ID=XXX;Password=XXX;"&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: #2b91af"&gt;EntityConnection&lt;/span&gt; entityConnection = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EntityConnection&lt;/span&gt;(metadataWorkspace,&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt;(sqlConnectionString));      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;NorthwindContext&lt;/span&gt; context = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NorthwindContext&lt;/span&gt;(entityConnection)) &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-ansi-language: en-us; mso-no-proof: yes" lang="EN-US"&gt;{ ... &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; mso-no-proof: yes"&gt;}     &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6de21075-0887-4062-aded-878384be6ca9" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/Entity+Framework" rel="tag"&gt;Entity Framework&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EF" rel="tag"&gt;EF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/metadati" rel="tag"&gt;metadati&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/97926.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/ywGceKsyHaA" height="1" width="1"/&gt;</description><dc:creator>Dario Santarelli</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/dsantarelli/archive/2010/01/30/entity-framework-gestione-runtime-dei-metadati.aspx</feedburner:origLink></item><item><title>Guardare alla propria adozione di Scrum/XP da una angolazione diversa</title><link>http://feedproxy.google.com/~r/UgidotnetLatestBlogPosts/~3/0lKCMqI5xDo/guardare-alla-propria-adozione-di-scrumxp-da-una-angolazione-diversa.aspx</link><pubDate>Fri, 29 Jan 2010 19:57:22 GMT</pubDate><guid isPermaLink="false">http://blogs.ugidotnet.org/luKa/archive/2010/01/29/guardare-alla-propria-adozione-di-scrumxp-da-una-angolazione-diversa.aspx</guid><wfw:comment>http://blogs.ugidotnet.org/luKa/comments/97924.aspx</wfw:comment><wfw:commentRss>http://blogs.ugidotnet.org/luKa/comments/commentRss/97924.aspx</wfw:commentRss><comments>http://blogs.ugidotnet.org/luKa/archive/2010/01/29/guardare-alla-propria-adozione-di-scrumxp-da-una-angolazione-diversa.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://blogs.ugidotnet.org/luKa/services/trackbacks/97924.aspx</trackback:ping><source url="http://blogs.ugidotnet.org/luKa/rss.aspx">Guardare alla propria adozione di Scrum/XP da una angolazione diversa</source><description>&lt;!-- TRANSLATE ENGLISH START --&gt;
&lt;div style="text-align: center; font-family: Verdana;"&gt; &lt;a href="javascript:var%20t=((window.getSelection&amp;amp;&amp;amp;window.getSelection())||(document.getSelection&amp;amp;&amp;amp;document.getSelection())||(document.selection&amp;amp;&amp;amp;document.selection.createRange&amp;amp;&amp;amp;document.selection.createRange().text));var%20e=(document.charset||document.characterSet);if(t!=''){location.href='http://translate.google.com/translate_t?text='+t+'&amp;amp;hl=it&amp;amp;langpair=it|en&amp;amp;tbb=1&amp;amp;ie='+e;}else{location.href='http://translate.google.com/translate?u='+escape(location.href)+'&amp;amp;hl=it&amp;amp;langpair=it|en&amp;amp;tbb=1&amp;amp;ie='+e;};" title="Click to translate this web page. Select and click to translate the selection."&gt;Translate into ENGLISH &amp;gt;&amp;gt;&amp;gt;&lt;/a&gt; &lt;/div&gt;
&lt;!-- TRANSLATE END --&gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;br style="font-family: Verdana;" /&gt;
&lt;span style="font-family: Verdana;"&gt;Ecco dei riferimenti sull'argomento:&lt;/span&gt;&lt;br /&gt;
&lt;br style="font-family: Verdana;" /&gt;
&lt;ul style="font-family: Verdana;"&gt;
    &lt;li&gt;&lt;span style="color: rgb(153, 204, 0); font-weight: bold;"&gt;Nokia  Test&lt;/span&gt; di Bas Vodde e Jeff Sutherland: &lt;a href="http://jeffsutherland.com/scrum/nokiatest.pdf"&gt;pdf&lt;/a&gt; e &lt;a href="http://antoine.vernois.net/scrumbut/"&gt;on-line&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt; A  Better Team&lt;/span&gt; di James Shore: &lt;a href="http://www.abetterteam.org/"&gt;on-line&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;span style="color: rgb(0, 153, 255); font-weight: bold;"&gt;Scrum  Checklist&lt;/span&gt; di Henrik Kniberg (Crisp): &lt;a href="http://www.crisp.se/scrum/checklist/"&gt;pdf&lt;br /&gt;
    &lt;br /&gt;
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 255);"&gt;Catalog  of Scrum Smells&lt;/span&gt; della Scrum Community: &lt;a href="http://scrumcommunity.pbworks.com/Scrum+Smells"&gt;link&lt;br /&gt;
    &lt;br /&gt;
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;User  Story Smells &lt;/span&gt;di Tom Perry: &lt;a href="http://agiletools.wordpress.com/2007/12/20/toms-catalog-of-user-story-smells/"&gt;link&lt;br /&gt;
    &lt;br /&gt;
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold; color: rgb(128, 128, 128);"&gt;Scrum  Master Anti Patterns&lt;/span&gt; di Paul Hodgetts: &lt;a href="http://aplnoc.blogspot.com/2009/03/oc-apln-mtg-april-1st-scrummaster-anti.html"&gt;link&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;span style="color: rgb(153, 204, 0); font-weight: bold;"&gt; How  to Choose Quality Candidates/Consultants for Your Large Company Agile  Initiative&lt;/span&gt;&lt;br /&gt;
    di Daryl Kulak &amp;amp; Anita Shankar: &lt;a href="http://www.methodsandtools.com/archive/archive.php?id=73"&gt;link&lt;br /&gt;
    &lt;br /&gt;
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a style="font-weight: normal;" href="http://scrumftw.blogspot.com/2009/11/scrum-youre-doing-it-wrong-when.html"&gt;Scrum. You're doing it wrong when...&lt;/a&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;br /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana;"&gt;      &lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;E per riflettere sui risultati ecco &lt;/span&gt;&lt;a style="font-family: Verdana;" href="http://www.scrumalliance.org/resource_download/598"&gt;i fondamentali&lt;/a&gt;&lt;span style="font-family: Verdana;"&gt; e la &lt;/span&gt;&lt;span style="font-family: Verdana;" /&gt;&lt;a style="font-family: Verdana;" href="http://blogs.ugidotnet.org/luKa/archive/2010/01/11/root-cause-analysis-diagrammi-sense-making-again.aspx"&gt;Root Cause Analysis&lt;/a&gt;&lt;br style="font-family: Verdana;" /&gt;
&lt;a id="ctl00_ctl00_pageContent_postsContent_Editor_hlEntryLink" title="view: Scrum: un processo di sviluppo Empirico 3 (generative&amp;#xD;&amp;#xA;rules)" href="http://blogs.ugidotnet.org/luKa/archive/0001/01/01/scrum-un-processo-di-sviluppo-empirico-3-generative-rules.aspx"&gt;&lt;br style="font-family: Verdana;" /&gt;
&lt;/a&gt; &lt;span style="font-family: Verdana;" /&gt;&lt;a style="font-family: Verdana;" href="http://blogs.ugidotnet.org/luKa/archive/2010/01/11/root-cause-analysis-diagrammi-sense-making-again.aspx"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/a&gt;
&lt;div style="text-align: center; font-family: Verdana;"&gt;  Tags :  &lt;a href="http://blogs.ugidotnet.org/luKa/Tags/Team+Work" rel="tag"&gt;Team Work&lt;/a&gt; |  &lt;a href="http://blogs.ugidotnet.org/luKa/Tags/Agile" rel="tag"&gt;Agile&lt;/a&gt; | &lt;a href="http://blogs.ugidotnet.org/luKa/Tags/Leadership" rel="tag"&gt;Leadership&lt;/a&gt; |  &lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/luKa/aggbug/97924.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/UgidotnetLatestBlogPosts/~4/0lKCMqI5xDo" height="1" width="1"/&gt;</description><dc:creator>Luca Minudel</dc:creator><feedburner:origLink>http://blogs.ugidotnet.org/luKa/archive/2010/01/29/guardare-alla-propria-adozione-di-scrumxp-da-una-angolazione-diversa.aspx</feedburner:origLink></item></channel></rss>
