<rss version="2.0" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.Net</title>
        <link>http://blogs.ugidotnet.org/crasch/category/.Net.aspx</link>
        <description>Varie su .net</description>
        <language>it-IT</language>
        <copyright>Carlo Folini</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Custom Configuration in ASP.NET 2.0: tips</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2006/04/21/39218.aspx</link>
            <description>&lt;P&gt;Ciao,&lt;/P&gt;
&lt;P&gt;un paio di tips collegati al post di &lt;A href="http://blogs.ugidotnet.org/lmauri/archive/2006/04/21/39183.aspx"&gt;Luca&lt;/A&gt;&lt;/P&gt;Visto che ci ho perso un po' di tempo ....&lt;BR&gt;Per specificare il nome del tag degli elementi all'interno di "actions" nella classe in cui si implementa la collezione "MyActionCollection" bisogna specificare il nome con la propriet&amp;#224; ElementName.&lt;BR&gt;Es. se volessimo mettere un tag "pippo" (evviva la fantasia)&lt;BR&gt;&lt;TEXTAREA id=TextArea1 rows=15 cols=100&gt;public sealed class MyActionCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new MyAction();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((MyAction)element).Name;
}
public override ConfigurationElementCollectionType CollectionType
{
get
{
return ConfigurationElementCollectionType.BasicMap;
}
}
protected override string ElementName
{
get
{
return "pippo";
}
}
}
&lt;/TEXTAREA&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Altra chicca poco documentata se vogliamo specificare la configurazione in un file separato definiamo la configSection in maniera usuale, ma al posto di inserire l'xml corrispondente direttamente nel app.config o web.config mettiamo un 'placeholder' con l'attributo configSource che ha come valore il nome del file. &lt;BR&gt;es:&lt;BR&gt;&lt;TEXTAREA id=Textarea2 rows=10 cols=100&gt;&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"&amp;gt;
&amp;lt;configSections&amp;gt;
    &amp;lt;section name="loggingConfiguration" restartOnExternalChanges="true" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging"/&amp;gt;
&amp;lt;/configSections&amp;gt;
&amp;lt;loggingConfiguration configSource="LoggingConfiguration.config"/&amp;gt;
&amp;lt;/configuration&amp;gt; 
&lt;/TEXTAREA&gt;&lt;BR&gt;&lt;LOGGINGCONFIGURATION configSource="LoggingConfiguration.config" /&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/39218.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2006/04/21/39218.aspx</guid>
            <pubDate>Fri, 21 Apr 2006 18:28:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2006/04/21/39218.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/39218.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/39218.aspx</trackback:ping>
        </item>
        <item>
            <title>.Net Fusion &amp; security</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2006/02/07/34403.aspx</link>
            <description>&lt;P&gt;Interessante sito per sapere tutto (o quasi) su fusion e security in .Net.&lt;/P&gt;
&lt;P&gt;Scritto per la 1.1 ha degli aggiornamenti significativi per la 2.0.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.grimes.demon.co.uk/workshops/index.htm"&gt;http://www.grimes.demon.co.uk/workshops/index.htm&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/34403.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2006/02/07/34403.aspx</guid>
            <pubDate>Tue, 07 Feb 2006 00:32:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2006/02/07/34403.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/34403.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/34403.aspx</trackback:ping>
        </item>
        <item>
            <title>Launch event streaming...</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/11/07/29387.aspx</link>
            <description>&lt;P&gt;Sembra che il webcast su&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/emea/steveballmerlive/"&gt;http://www.microsoft.com/emea/steveballmerlive/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;non &amp;#232; disponibile.&lt;/P&gt;
&lt;P&gt;Su &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/windowsserversystem/applicationplatform/launch2005/keynote.mspx"&gt;http://www.microsoft.com/windowsserversystem/applicationplatform/launch2005/keynote.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;sembra (in differita?) disponibile&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/29387.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/11/07/29387.aspx</guid>
            <pubDate>Mon, 07 Nov 2005 19:20:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/11/07/29387.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/29387.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/29387.aspx</trackback:ping>
        </item>
        <item>
            <title>Riflessioni sull'accedere ai servizi tramite un 'router' di messaggio</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/10/24/28580.aspx</link>
            <description>&lt;P&gt;Nelle scorse settimane ho discusso sull'opportunit&amp;#224; o meno di far passare tutte le chiamate al SOS (Service Oriented Server ;-)) attraverso un unico servizio (per intenderci un asmx) che invia il messaggio al servizio corretto in base al contenuto.&lt;/P&gt;
&lt;P&gt;Venendo da un modo di applicazioni n-tier, questo paradigma non mi &amp;#232; molto congeniale.&lt;BR&gt;Una delle principali problematiche che vedo sono legate alla facilit&amp;#224; con cui uno sviluppatore riesce a 'trovare' i servizi che gli servono per implementare una determinata funzionalit&amp;#224; (tale concetto lo riassumo come discoverability, che mi sembra rendere bene l'idea, ma non &amp;#232; forse neanche inglese!).&lt;BR&gt;Averli in un asmx raggruppati per tipologie coerenti facilita molto in contrasto con doverli andare a ricercare in una qualche sorta di metabase.&lt;/P&gt;
&lt;P&gt;Chiaramente la strada maestra sarebbe quella di avere un coordinatore (analista?) che scriva della documentazione e degli sviluppatori che la leggano....nessuno &amp;#232; perfetto!&lt;/P&gt;
&lt;P&gt;L'altra &amp;#232; legata agli strumenti che uno sviluppatore deve avere per creare i&amp;nbsp;contratti. Creare un asmx &amp;#232; banale, creare un sistema per censire i 'contratti' in un metabase &amp;#232; gi&amp;#224; pi&amp;#249; difficile.&lt;/P&gt;
&lt;P&gt;Ho trovato un articolo di Rocky Lhotka &lt;A href='http://www.theserverside.net/articles/showarticle.tss?id=SOAVersioningCovenant"'&gt;http://www.theserverside.net/articles/showarticle.tss?id=SOAVersioningCovenant"&lt;/A&gt; (Barbieri Lorenzo vedi che anch'io mi st&amp;#242; impegnando sulle regole dell'usabilit&amp;#224; specialmente sulla 4 ;-) )&lt;BR&gt;che parla di questi argomenti, che mi ha chiarito un po' le motivazioni di ragionare per covenant (patti) in contrapposizione ai servizi.&lt;BR&gt;Riassumendo e semplificando (da un punto di vista non troppo SOA) dice che anche per i servizi dovrebbero esserci dei meccanismi simili agli overload dei metodi. Questo per semplificare l'estensibilit&amp;#224; dei metodi.&lt;BR&gt;In effetti se cerchiamo di esporre un metodo con degli overload in un asmx viene ritornato un errore quando andiamo a recuperare il wsdl del servizio.&lt;/P&gt;
&lt;P&gt;Parlando del servizio unico, lui lo sconsiglia proprio per i discorsi di 'discoverability'.&lt;BR&gt;Lhotka dice anche di aver richiesto al team di Indigo il supporto nell'IDE di tali feature....devo ancora riuscire a installare WCF per capire come si relazionano i data contract con questi discorsi.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/28580.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/10/24/28580.aspx</guid>
            <pubDate>Mon, 24 Oct 2005 00:20:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/10/24/28580.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/28580.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/28580.aspx</trackback:ping>
        </item>
        <item>
            <title>Skin per winform</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/10/20/28403.aspx</link>
            <description>&lt;P&gt;Alcuni prodotti (anche per .net 2.0) per skinning delle winform....&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dotnetskin.net/" target=_blank&gt;&lt;FONT color=#355ea0&gt;DotNetSkin&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.sunisoft.com/irisskin/" target=_blank&gt;&lt;FONT color=#355ea0&gt;IrisSkin&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.stardock.com/"&gt;http://www.stardock.com/&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/28403.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/10/20/28403.aspx</guid>
            <pubDate>Thu, 20 Oct 2005 22:46:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/10/20/28403.aspx#feedback</comments>
            <slash:comments>92</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/28403.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/28403.aspx</trackback:ping>
        </item>
        <item>
            <title>Condividere i tipi nei proxy generati con WSDL.exe </title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/10/17/28165.aspx</link>
            <description>&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Dovendo gestire le chiamate ad un numero elevato di servizi .asmx (sia che si chiamino da asp.net che da smartclient) nasce il problema di come gestire i casi in cui uno schema &amp;#232; condiviso da pi&amp;#249; servizi.&lt;/P&gt;
&lt;P&gt;Per i casi 'semplici' con l'utilizzo del "add web references" di visual studio 2005 si ottiene un proxy che ingloba i tipi esposti da quel servizio. Avremo quindi inclusi sia i tipi semplici che 'entity object' e DataSet.&lt;/P&gt;
&lt;P&gt;Nel primo caso sar&amp;#224; aggiunta la definizione nel file Reference.cs&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: black 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: black 1px solid; WIDTH: 704px; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; HEIGHT: 200px; BACKGROUND-COLOR: gainsboro"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.26")]&lt;BR&gt;[System.SerializableAttribute()]&lt;BR&gt;[System.Diagnostics.DebuggerStepThroughAttribute()]&lt;BR&gt;[System.ComponentModel.DesignerCategoryAttribute("code")]&lt;BR&gt;[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://myNamespace/")]&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;partial &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;class &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;SalesOrderDetail {&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;private int &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;salesOrderIdField;&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;private decimal &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;unitPriceField;&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;private string &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;carrierTrackingNumberField;&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;private &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;System.DateTime modifiedDateField;&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #808080; FONT-FAMILY: Courier New"&gt;/// &lt;remarks/&gt;&lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public int &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;SalesOrderId {&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;get &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;return this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.salesOrderIdField;&lt;BR&gt;        }&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;set &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.salesOrderIdField = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;value&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;;&lt;BR&gt;        }&lt;BR&gt;    }&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #808080; FONT-FAMILY: Courier New"&gt;/// &lt;remarks/&gt;&lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public decimal &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;UnitPrice {&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;get &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;return this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.unitPriceField;&lt;BR&gt;        }&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;set &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.unitPriceField = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;value&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;;&lt;BR&gt;        }&lt;BR&gt;    }&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #808080; FONT-FAMILY: Courier New"&gt;/// &lt;remarks/&gt;&lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public string &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;CarrierTrackingNumber {&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;get &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;return this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.carrierTrackingNumberField;&lt;BR&gt;        }&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;set &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.carrierTrackingNumberField = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;value&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;;&lt;BR&gt;        }&lt;BR&gt;    }&lt;BR&gt;    &lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #808080; FONT-FAMILY: Courier New"&gt;/// &lt;remarks/&gt;&lt;BR&gt;    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;public &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;System.DateTime ModifiedDate {&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;get &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;return this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.modifiedDateField;&lt;BR&gt;        }&lt;BR&gt;        &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;set &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;{&lt;BR&gt;            &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;this&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.modifiedDateField = &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;value&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;;&lt;BR&gt;        }&lt;BR&gt;    }&lt;BR&gt;}&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;nel secondo oltre che al codice (un tipo che eredita da System.Data.DataSet) avremo anche l'xsd corrispondente al typed dataset.&lt;/P&gt;
&lt;P&gt;La classe generata ha un namespace in cui 'vivono' i tipi.&lt;/P&gt;
&lt;P&gt;Di default il namespace &amp;#232; composto dal namespace di default dell'applicazione (impostato nelle properties del progetto nel tab "Application") con il nome impostato in fase di "add web reference" (che di default &amp;#232; localhost).&lt;/P&gt;
&lt;P&gt;Tale default pu&amp;#242; essere modificato andando a impostare la propriet&amp;#224; "Custom Tool Namespace" sul file .map.&lt;/P&gt;
&lt;P&gt;Nei casi pi&amp;#249; complessi pu&amp;#242; capitare che un tipo sia condiviso da pi&amp;#249; asmx magari in progetti diversi.&lt;/P&gt;
&lt;P&gt;Per poter gestire al meglio questo scenario magari avremo messo i tipi condivisi in una o pi&amp;#249; library aggiunta come reference ai progetti.&lt;/P&gt;
&lt;P&gt;Per il meccanismo sopra descritto ogni volta che aggiungiamo un servizio al nostro client viene generato un nuovo proxy.&lt;/P&gt;
&lt;P&gt;Fino alla versione 2.0 del framework le possibili soluzioni (che mi vengono in mente) erano lo scordarsi l'add web reference (e farsi qualcosa di custom per portarsi a spasso i tipi) oppure impostare lo stesso namespace per i proxy generati e togliere a mano i tipi ridondanti (operazione che bisognava ripetere ogni volta che si faceva una "update web reference").&lt;/P&gt;
&lt;P&gt;Dalla 2.0 &amp;#232; stato aggiunto il supporto per questi scenari tramite lo switch &lt;EM&gt;/sharetypes&lt;/EM&gt; del wsdl.exe.&lt;/P&gt;
&lt;P&gt;Specificando i servizi che si vogliono utilizzare con lo switch impostato verr&amp;#224; generato un unico proxy che mette a fattor comune i tipi uguali (the namespace, name, and wire signature must be identical).&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;C:\cf3 &gt;wsdl /sharetypes http:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//localhost:1032/SimpleObject/Service1.asmx http://localhost:1056/SimpleObject2/Service2.asmx /namespace:MyClientNamespace.MyObjects&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Microsoft (R) Web Services Description Language Utility&lt;BR&gt;[Microsoft (R) .NET Framework, Version 2.0.50727.26]&lt;BR&gt;Copyright (C) Microsoft Corporation. All rights reserved.&lt;BR&gt;Writing file &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff00ff; FONT-FAMILY: Courier New"&gt;'C:.cs'&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;(che io sappia ndr)Il supporto &amp;#232; disponibile attualmente solo con wsdl.exe, per cui per poterlo utilizzare dal vs2005 &amp;#232; necessario un po' di manovre con gli add-in o con qualche macro.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;L'idea &amp;#232; di ciclare, ogni volta che viene richiesta una "update web reference", &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;su tutte le Web References.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Per ogni reference prendere l'url, aggiungerlo alla comand line di wsdl.exe, cancellare i files sottostanti (*.map, xsd, wsdl, disco) eseguire il comando e prendersi la classe generata.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Disclaimer: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;questa soluzione non &amp;#232; stata testata in maniera 'esaustiva' (come peraltro si desume dal progetto di esempio).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Viste le lamentele sul formato del mio ultimo post (come potete vedere) mi sono munito di IMHO.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Qualcuno ha idea del perch&amp;#232; in fase di aggiunta immagini clickando sul tasto browse mi becco &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;---------------------------&lt;BR&gt;Microsoft Internet Explorer&lt;BR&gt;---------------------------&lt;BR&gt;An error has occurred in this dialog.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Error: 73&lt;BR&gt;Object doesn't support this property or method&lt;BR&gt;---------------------------&lt;BR&gt;OK   &lt;BR&gt;---------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Riferimenti:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&lt;A href="http://blogs.thinktecture.com/cweyer/archive/2004/08/11/212843.aspx"&gt;http://blogs.thinktecture.com/cweyer/archive/2004/08/11/212843.aspx&lt;/A&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://imhoproject.org/"&gt;&lt;FONT face=Verdana size=1&gt;powered by IMHO 1.2&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/28165.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/10/17/28165.aspx</guid>
            <pubDate>Mon, 17 Oct 2005 22:57:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/10/17/28165.aspx#feedback</comments>
            <slash:comments>174</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/28165.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/28165.aspx</trackback:ping>
        </item>
        <item>
            <title>Comparazione performance di dataset 2.0 e entity object </title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/09/29/27200.aspx</link>
            <description>&lt;P&gt;Era un po' che volevo fare qualche prova a riguardo ma, da buon programmatore, sono essenzialmente pigro.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Partendo dalla demo dell'&lt;A href="http://www.theserverside.net/articles/showarticle.tss?id=PickingSmartClient"&gt;articolo&lt;/A&gt; di Brian Noyes in cui f&amp;#224; una analisi delle varie tipologie di comunicazione utilizzabili da uno smarclient, sono andato a vedere come si relazionano queste due modalit&amp;#224; di portarsi a spasso i dati (prescindendo da ragionamenti da quale sia meglio in termini di SO ;-)).&lt;/P&gt;
&lt;P&gt;Essenzialmente un'applicazione winform che chiama un webservice che interroga l'adventrure works (Il tutto fatto con la RC di vs2005 e la CTP di settembre di SQL).&lt;/P&gt;
&lt;P&gt;I dati vengono presi con una query 'semplice' ovvero&lt;/P&gt;
&lt;P&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesOrderID, UnitPrice, CarrierTrackingNumber, ModifiedDate&lt;BR&gt;FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sales.SalesOrderDetail&lt;BR&gt;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SalesOrderID &amp;lt; 44000)&lt;/P&gt;
&lt;P&gt;estraendo circa 300 record (un&amp;nbsp;numero di record&amp;nbsp;verosimile per quello che solitamente mi serve).&lt;/P&gt;
&lt;P&gt;Questi dati vengono poi messi da un oggetto di accesso ai dati &amp;nbsp;in un array di 'entity object' in un caso &lt;/P&gt;
&lt;P&gt;&lt;TEXTAREA id=TextArea1 style="WIDTH: 597px; HEIGHT: 130px"&gt;using System;
namespace SmartClientCommDataAccess
{
[Serializable]
public class SalesOrderDetail
{
private int m_SalesOrderId;
public int SalesOrderId
{
get
{
return m_SalesOrderId;
}
set
{
m_SalesOrderId = value;
}
}
private decimal m_UnitPrice;
public decimal UnitPrice
{
get
{
return m_UnitPrice;
}
set
{
m_UnitPrice = value;
}
}
private string m_CarrierTrackingNumber;
public string CarrierTrackingNumber
{
get
{
return m_CarrierTrackingNumber;
}
set
{
m_CarrierTrackingNumber = value;
}
}
private DateTime m_ModifiedDate;
public DateTime ModifiedDate
{
get
{
return m_ModifiedDate;
}
set
{
m_ModifiedDate = value;
}
}
}
}
&lt;/TEXTAREA&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;e in un dataset tipizzato nell'altro.&lt;/P&gt;
&lt;P&gt;Dal webservice vengono esposti i due metodi corrispondenti, che oltre a ritornare l'oggetto ritornano anche il tempo di esecuzione (ticks).&lt;/P&gt;
&lt;P&gt;Nel caso del dataset il metodo &amp;#232;:&lt;/P&gt;
&lt;P&gt;&lt;TEXTAREA id=Textarea2 style="WIDTH: 630px; HEIGHT: 141px"&gt;[WebMethod]
public MyDataSet GetSalesDetailDataset(out long timeTicks)
{
long start = HiResTimer.Ticks;
ServiceObject so = new ServiceObject();
MyDataSet res = new MyDataSet();
res.EnforceConstraints = false;
res.SchemaSerializationMode = SchemaSerializationMode.ExcludeSchema;
res = so.GetSalesDetailDataset();
res.RemotingFormat = SerializationFormat.Binary;
long end = HiResTimer.Ticks;
timeTicks = end - start;
return res;
}
&lt;/TEXTAREA&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;HiResTimer &amp;#232; un timer un po' pi&amp;#249; preciso del DateTime.now.ticks usato da Noyes (comunque non sposta di molto il discorso sigh!).&lt;/P&gt;
&lt;P&gt;Lo smart client chiama questi due ws e f&amp;#224; qualche ulteriore statistica sui tempi.&lt;/P&gt;
&lt;P&gt;&lt;TEXTAREA id=Textarea3 style="WIDTH: 641px; HEIGHT: 193px"&gt;long start = HiResTimer.Ticks;
localhost.WebServiceShim shim = new TestClient.localhost.WebServiceShim();
TestClient.localhost.MyDataSet myDet = shim.GetSalesDetailDataset(out ticks);
long endCall = HiResTimer.Ticks;
dataGridView1.DataSource = myDet.SalesOrderDetail;
long endDataBind = HiResTimer.Ticks;
textService.Text = "Dataset Ticks: Call=" + ShowTimings(endCall - start, endDataBind - start) + Environment.NewLine
+ "service=" + ShowTimings(ticks, endDataBind - start) + Environment.NewLine
+ "Serialize=" + ShowTimings(endCall - start - ticks, endDataBind - start) + Environment.NewLine
+ "databind=" + ShowTimings(endDataBind - endCall, endDataBind - start) + Environment.NewLine
+ "total=" + ShowTimings(endDataBind - start, endDataBind - start);
&lt;/TEXTAREA&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Il risultato &amp;#232; che, ovviamente, gli entity object sono pi&amp;#249; performanti.&lt;/P&gt;
&lt;P&gt;Per questi abbiamo il risultato seguente&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;Array Ticks: Call=44,421 milliseconds 87% (Tick=159010)
service=4,2731 milliseconds 8% (Tick=15296)
Serialize=40,148 milliseconds 78% (Tick=143714)
databind=6,4647 milliseconds 12% (Tick=23141)
total=50,886 milliseconds 100% (Tick=182151) &lt;/PRE&gt;&amp;nbsp;per i dataset&lt;BR&gt;
&lt;P&gt;&lt;PRE&gt;Dataset Ticks: Call=122,01 milliseconds 78% (Tick=436775)
service=14,126 milliseconds 9% (Tick=50568)
Serialize=107,89 milliseconds 69% (Tick=386207)
databind=34,048 milliseconds 21% (Tick=121878)
total=156,06 milliseconds 100% (Tick=558653) &lt;/PRE&gt;Ovvero un tempo di mezzo decimo per gli EO contro un decimo e mezzo per dataset ovvero un fattore 3.&lt;BR&gt;&lt;BR&gt;Aumentando il numero di records (5000) le differenze si assottigliano arrivando ad un fattore 2&lt;BR&gt;
&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;Array Ticks: Call=236,04 milliseconds 95% (Tick=844919)
service=40,865 milliseconds 16% (Tick=146280)
Serialize=195,17 milliseconds 78% (Tick=698639)
databind=11,527 milliseconds 4% (Tick=41263)
total=247,56 milliseconds 100% (Tick=886182)
&lt;/PRE&gt;&lt;BR&gt;&amp;nbsp;per i dataset&lt;BR&gt;
&lt;P&gt;&lt;PRE&gt;Dataset Ticks: Call=412,00 milliseconds 71% (Tick=1474794)
service=46,953 milliseconds 8% (Tick=168073)
Serialize=365,05 milliseconds 63% (Tick=1306721)
databind=164,91 milliseconds 28% (Tick=590316)
total=576,91 milliseconds 100% (Tick=2065110) &lt;/PRE&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/27200.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/09/29/27200.aspx</guid>
            <pubDate>Thu, 29 Sep 2005 01:39:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/09/29/27200.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/27200.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/27200.aspx</trackback:ping>
        </item>
        <item>
            <title>Io c'era!</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/09/07/25953.aspx</link>
            <description>&lt;P&gt;come promesso il post!&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;Ciao&lt;/P&gt;
&lt;P&gt;CArlo&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/25953.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/09/07/25953.aspx</guid>
            <pubDate>Wed, 07 Sep 2005 15:33:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/09/07/25953.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/25953.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/25953.aspx</trackback:ping>
        </item>
        <item>
            <title>Visualizzazione grafica occupazione spazio su disco</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/08/25/25099.aspx</link>
            <description>Se ogni tanto vi chiedete cosa riempie il vostro disco fisso questo tool f&amp;#224; per voi! &lt;A title="MSDN Weblogs" href="http://blogs.msdn.com/alexbarn/archive/2005/08/24/456098.aspx"&gt;My hard disk&lt;/A&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/25099.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/08/25/25099.aspx</guid>
            <pubDate>Thu, 25 Aug 2005 18:44:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/08/25/25099.aspx#feedback</comments>
            <slash:comments>198</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/25099.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/25099.aspx</trackback:ping>
        </item>
        <item>
            <title>Utilizzo dataset tipizzati in asp.net 2.0</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/04/06/13690.aspx</link>
            <description>&lt;P&gt;Dopo un po' di manovre sono finalmente riuscito a fare il databind di un dataset tipizzato in un progetto asp.net 2.0 ad una GridView.&lt;/P&gt;
&lt;P&gt;Premetto che la cosa dovrebbe essere banale, ma con i bachi della ctp di febbraio non &amp;#232; cos&amp;#236; semplice.&lt;/P&gt;
&lt;P&gt;L'idea dovrebbe essere creo un progetto asp.net aggiungo un dataset che contiene ad esempio la tabella customers del northwind aggiungo una GridView faccio il databind creando un ObjectDataSource sul dataset.&lt;/P&gt;
&lt;P&gt;Questo non funziona! Workaround creo una solution vuota, aggiungo un progetto library e creo un dataset agganciandolo alla tabella.&lt;/P&gt;
&lt;P&gt;Nella stessa solution&amp;nbsp;creo un progetto web gli metto la reference alla library appena creata, aggiungo una GridView creo un ObjectDataSource sul dataset della library. &lt;/P&gt;
&lt;P&gt;Funziona tutto...supporto design time, paging ecc.&lt;/P&gt;
&lt;P&gt;Speriamo che con la beta2 questo sia solo un brutto ricordo!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/13690.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/04/06/13690.aspx</guid>
            <pubDate>Wed, 06 Apr 2005 19:53:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/04/06/13690.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/13690.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/13690.aspx</trackback:ping>
        </item>
    </channel>
</rss>