<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>DDD</title>
        <link>http://blogs.ugidotnet.org/rgm/category/2875.aspx</link>
        <description>DDD</description>
        <language>it-IT</language>
        <copyright>Gian Maria  Ricci</copyright>
        <generator>Subtext Version 2.1.0.3</generator>
        <item>
            <title>CSDD&amp;ndash;programming pornography</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2011/10/31/csddndashprogramming-pornography.aspx</link>
            <description>&lt;p&gt;In realtà la frase “programming pornography” la ho sentita da &lt;a href="http://codebetter.com/gregyoung/"&gt;Greg Young&lt;/a&gt; durante il DDD Day, ma si allinea ad uno degli altri importanti concetti che sono emersi durante il campus DDD. In questo caso Alberto ha sottolineato il fatto di come nelle discussioni nei gruppi DDD troppo spesso si parla di tecnicismi e nella maggioranza dei casi si parla quasi sempre di ORM.&lt;/p&gt;  &lt;p&gt;Il concetto in questo caso è che il vantaggio maggiore del DDD è il metodo di approcciare il problema, ovvero cercare di &lt;em&gt;sviscerare&lt;/em&gt; le logiche ed individuare le &lt;strong&gt;&lt;em&gt;Entità&lt;/em&gt;&lt;/strong&gt; che possono meglio modellare le logiche del dominio reale. Naturalmente, dato che l’approccio è principalmente teso alla “scoperta”, il primo modello difficilmente sarà quello giusto, per cui è necessario per lo meno nelle fasi iniziali farne più di uno e scegliere quello che “ci soddisfa maggiormente”, capendo poi che molto probabilmente verrà comunque cambiato. Il vero valore quindi è nella stesura del modello e non nella sua implementazione, per cui bisognerebbe cercare di dedicare più tempo alla modellazione, cercando di non farci “traviare” dagli aspetti tecnici.&lt;/p&gt;  &lt;p&gt;Purtroppo questo accade perché la community DDD è giovane, non esiste ancora da nessuna parte una “reference implementation” e difficilmente ne esisterà mai una, per questo bisogna accettare che in realtà il vero valore è nel modello e la realizzazione tramite codice è “programming pornography”, che probabilmente verrà rifatta per ogni progetto. Debbo dire che io sono il primo che lamento la mancanza in rete di “codice di esempio”, che possa aiutare a parlare concretamente di DDD con del codice sottomano, ma negli ultimi tempi sto realizzando che la parte implementativa è sicuramente importantissima, ma troppo spesso diventa dominante, quando invece la parte dominante dovrebbe essere il modello e la parte implementativa un corollario.&lt;/p&gt;  &lt;p&gt;Questo coincide con un raffreddamento del mio entusiasmo sugli ORM, che inizio a considerare talvolta degli “antipattern” che troppo spesso spostano la nostra attenzione lontano dalla &lt;em&gt;ciccia. &lt;/em&gt;Nondimeno avere in rete delle implementazioni concrete e funzionanti di Event Sourcing, Domain Events e quant’altro, sicuramente gioverebbe a tutto il movimento, perché permetterebbe di poter dire “ok mi concentro nel modello, dato che comunque un paio di implementazioni con cui iniziare ad implementare il modello ci sono”.&lt;/p&gt;  &lt;p&gt;Gian Maria.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/100484.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2011/10/31/csddndashprogramming-pornography.aspx</guid>
            <pubDate>Mon, 31 Oct 2011 11:33:51 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2011/10/31/csddndashprogramming-pornography.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/100484.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/100484.aspx</trackback:ping>
        </item>
        <item>
            <title>CSDD&amp;ndash;Aggregate root</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2011/10/18/csddndashaggregate-root.aspx</link>
            <description>&lt;p&gt;Dopo la prima lettura del libro di Evans (e vi assicuro che vale la pena di leggerlo almeno due volte), uno dei principi che maggiormente ho apprezzato è senza dubbio quello dell’&lt;em&gt;&lt;strong&gt;AGGREGATE ROOT &lt;/strong&gt;e degli &lt;strong&gt;AGGREGATES&lt;/strong&gt;&lt;/em&gt; in generale.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;An aggregate is a cluster of associated objects that we treat as a unit for the purpose of data changes.&lt;/p&gt; &lt;/blockquote&gt;    &lt;p&gt;L’importanza di questo pattern è la stessa del &lt;strong&gt;&lt;em&gt;BOUNDED CONTEXT&lt;/em&gt;&lt;/strong&gt; perchè porta alla riduzione della complessità, limitando la possibilità di instaurare relazioni tra gli oggetti. Il livello di granularità di frazionamento di questo pattern è minore del &lt;strong&gt;&lt;em&gt;BOUNDED CONTEXT &lt;/em&gt;&lt;/strong&gt;e può costituire essenzialmente un ulteriore livello di suddivisione. Partiamo quindi dal problema che vogliamo evitare, che è essenzialmente lo stesso mostrato nel &lt;a href="http://blogs.ugidotnet.org/rgm/archive/2011/09/20/isolare-il-problema-con-i-bounded-context-csddd-campus.aspx"&gt;post precedente&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/Windows-Live-Writer/Divide-et-impera_7D50/image_thumb_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;In domini complessi infatti, un singolo &lt;strong&gt;&lt;em&gt;BOUNDED CONTEXT&lt;/em&gt;&lt;/strong&gt; può essere molto complesso ed è deleterio permettere ad ogni oggetto di poter dialogare direttamente con qualsiasi altro oggetto nello stesso contesto, perchè si rischia di ricadere in un contesto cosi interconnesso che è poco gestibile. In pratica un &lt;strong&gt;&lt;em&gt;AGGREGATE &lt;/em&gt;&lt;/strong&gt;non è altro che un insieme di oggetti che rappresenta un’entità ben definita del dominio e l’&lt;strong&gt;AGGREGATE ROOT&lt;/strong&gt; è l’oggetto che incapsula tutto il gruppo e ne costituisce la barriera di accesso. Non esiste una regola generale per individuare un &lt;strong&gt;&lt;em&gt;AGGREGATE&lt;/em&gt;&lt;/strong&gt;, ma in generale, se in un contesto abbiamo oggetti che da soli non hanno molto significato, ma acquistano significato presi assieme, questo potrebbe molto facilmente essere un aggregato.&lt;/p&gt;  &lt;p&gt;Se facciamo un esempio nel dominio di un ipotetico gioco di ruolo, potremmo dire che un &lt;em&gt;Guerriero&lt;/em&gt; è composto da un insieme di oggetti come ad esempio le &lt;em&gt;caratteristiche (&lt;/em&gt;forza, intelligenza, presenza, etc), dalle abilità (uso delle armi, salto, corsa, etc) e tutto questo insieme di oggetti costituisce la rappresentazione in questo &lt;strong&gt;&lt;em&gt;BOUNDED CONTEXT&lt;/em&gt;&lt;/strong&gt; dell’entità &lt;em&gt;Guerriero. &lt;/em&gt;In questo caso infatti una caratteristica ad esempio non ha alcun senso se non associata al concetto di Guerriero e quindi ne costituisce una parte.&lt;/p&gt;  &lt;p&gt;Il primo vantaggio del’&lt;strong&gt;&lt;em&gt;AGGREGATE&lt;/em&gt;&lt;/strong&gt; è quello di presentare all’esterno un unico punto di contatto, chiamato &lt;strong&gt;&lt;em&gt;AGGREGATE ROOT&lt;/em&gt;&lt;/strong&gt;, in particolare esiste un principio che permette ad &lt;em&gt;un repository di gestire solamente gli aggregate root. &lt;/em&gt;L’&lt;strong&gt;&lt;em&gt;AGGREGATE ROOT&lt;/em&gt;&lt;/strong&gt; diviene quindi un ulteriore astrazione che favorisce il concetto di &lt;strong&gt;&lt;em&gt;incapsulamento.&lt;/em&gt;&lt;/strong&gt; Cosi come una classe protegge il suo stato interno grazie ai metodi e fornisce una &lt;strong&gt;interfaccia &lt;/strong&gt;o &lt;strong&gt;contratto&lt;/strong&gt; che implementa la comunicazione con l’esterno, un’&lt;strong&gt;&lt;em&gt;AGGREGATE ROOT&lt;/em&gt;&lt;/strong&gt; incapsula una serie di oggetti che rappresentano l’aggregato..&lt;/p&gt;  &lt;p&gt;Grazie a questa astrazione è quindi possibile ridurre il numero di interconnessioni tra oggetti, perché queste ultime sono limitate agli &lt;strong&gt;&lt;em&gt;AGGREGATE ROOT&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;L’aspetto del salvataggio è particolarmente importante, abbiamo infatti due assunti precisi&lt;/p&gt;  &lt;p&gt;1) Solo gli aggregate root possono essere gestiti tramite repository   &lt;br /&gt;2) Ogni aggregato ha il suo repository per la gestione della persistenza.&lt;/p&gt;  &lt;p&gt;Questo significa che se un particolare aggregato è cosi complesso che ci viene facile salvarlo su un NoSQL, possiamo farlo senza problemi, altri aggregati potrebbero per esempio salvarsi semplicemente serializzando su disco, oppure chiamando un servizio esterno che li persiste &lt;em&gt;on the cloud.&lt;/em&gt; Questa affermazione solitamente scatena ogni sorta di obiezioni, primo tra tutti il dire “come faccio I report?”, quando in una interfaccia debbo mostrare dei dati che vengono da aggregati differenti che prestazioni avrò se debbo prendere I dati da sorgenti eterogenee e poi magari aggregare in memoria? Purtroppo come in molte aree del DDD non esiste un’unica risposta, e dobbiamo capire se il vantaggio che abbiamo magari usando un NoSQL non ci fa perdere da altre parti.&lt;/p&gt;  &lt;p&gt;Una soluzione possibile è CQRS + DOMAIN EVENTS, ogni cambiamento significativo di un &lt;strong&gt;&lt;em&gt;AGGREGATE ROOT&lt;/em&gt;&lt;/strong&gt; genererà infatti un evento di dominio, che dovrà essere gestito da un Handler apposito che terrà aggiornate le classiche viste readonly su cui fare le query. Alcuni db NoSQL come raven hanno dei plugin che permettono automaticamente di tenere sincronizzato un database SQL con alcune proprietà degli oggetti salvati. L’obiettivo è quello di cercare di racchiudere la complessità del problema nel dominio e non nell’infrastruttura che ci sta attorno (leggasi ORM). La morale è, se debbo fare carte false per persistere una gerarchia complessa con un ORM, solo perché “tutto il resto è persistito con un ORM”, probabilmente non abbiamo necessariamente preso la strada giusta e vale la pena di pensare se un &lt;strong&gt;&lt;em&gt;AGGREGATE&lt;/em&gt;&lt;/strong&gt; o un intero &lt;strong&gt;&lt;em&gt;BOUNDED CONTEXT &lt;/em&gt;&lt;/strong&gt;non possano usare strategie differenti di persistenza.&lt;/p&gt;  &lt;p&gt;alk.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/100459.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2011/10/18/csddndashaggregate-root.aspx</guid>
            <pubDate>Tue, 18 Oct 2011 18:01:09 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2011/10/18/csddndashaggregate-root.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/100459.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/100459.aspx</trackback:ping>
        </item>
        <item>
            <title>Considerazioni sul campus #CSDDD</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2011/09/06/considerazioni-sul-campus-csddd.aspx</link>
            <description>&lt;p&gt;Questo fine settimana, il sottoscritto ed altre strane persone :), si sono chiuse in un agriturismo marchigiano e sotto la guida di &lt;a href="http://albertobrandolini.wikidot.com/"&gt;ZioBrando&lt;/a&gt; hanno passato tutto il fine settimana a parlare di DDD. (trovate alcune foto nel mio profilo facebook).&lt;/p&gt;  &lt;p&gt;L’esperienza è stata decisamente positiva, diciamo che mi sono convinto ancora di più che il DDD sia applicabile in molti più scenari di quello che pensavo. L’unica pecca è stata l’avere scritto poco codice e sostanzialmente ce ne siamo andati con ancora alcuni dubbi a livello “implementativo”, del tipo, come faccio cosa? Un handler di un domain event ha senso che sia in un aggregate?, e cosi via, ma comunque moltissime idee si sono chiarite.&lt;/p&gt;  &lt;p&gt;I concetti base sono che: è fondamentale avere tanta carta su cui tracciare le proprie idee e avere voglia di esplorare per capire il dominio. Nei prossimi giorni, tempo permettendo :), cercherò di enunciare quelli che per me sono i concetti più importanti che abbiamo appreso nel campus, che potete comunque vedere anche in questa foto, che rappresenta il nostro learning tree del campus.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/Windows-Live-Writer/Considerazioni-sul-campus-CSDDD_A643/image_2.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/Windows-Live-Writer/Considerazioni-sul-campus-CSDDD_A643/image_thumb.png" width="600" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Stay tuned&lt;/p&gt;  &lt;p&gt;Gian Maria.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/100325.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2011/09/06/considerazioni-sul-campus-csddd.aspx</guid>
            <pubDate>Tue, 06 Sep 2011 07:32:32 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2011/09/06/considerazioni-sul-campus-csddd.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/100325.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/100325.aspx</trackback:ping>
        </item>
        <item>
            <title>Repository, altre considerazioni</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/09/28/88586.aspx</link>
            <description>&lt;p&gt;In un &lt;a href="http://www.guisa.it/forums/1340/ShowThread.aspx"&gt;thread&lt;/a&gt; su guisa si è un po parlato di costruttori e persistenza. Sempre continuando il discorso del &lt;a href="http://blogs.ugidotnet.org/rgm/articles/88129.aspx"&gt;repository&lt;/a&gt;, volevo dare la mia opinione su come i costruttori si legano al repository. Come anche &lt;a href="http://martinfowler.com/eaaCatalog/repository.html"&gt;Fowler&lt;/a&gt; dice, la costruzione di un oggetto non è pertinenza del repository, ma il repository ha il seguente scopo
&lt;/p&gt;&lt;p&gt;&lt;em&gt;Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.
&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Per questa ragione il ciclo di vita di un oggetto è il seguente: chiamando uno dei costruttori o un metodo factory si crea una nuova istanza, questa nuova istanza è transiente per utilizzare la notazione di Nhibernate. A questo punto il &lt;em&gt;repository&lt;/em&gt; entra in gioco perché presenta all'utente una interfaccia &lt;em&gt;collection-like, &lt;/em&gt;ovvero si comporta come un contenitore in memoria, internamente il repository dialoga con il layer di persistenza e quindi lo stato dell'oggetto diventa persistente, ma per il chiamante tutto questo è completamente trasparente. Una delle convenienze dei repository è che si possono creare repository solamente per le root degli aggreati in modo da impedire all'utilizzatore di andare a ricostruire direttamente oggetti interni di un aggretago. Una discussione approfondita è comunque fatta nel libro di &lt;a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=pd_bbs_sr_1/102-4528641-0531317?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190984167&amp;amp;sr=8-1"&gt;Evans&lt;/a&gt;. Personalmente però non amo l'utilizzo di costruttori o metodi factory per effettuare la &lt;em&gt;reconstitution&lt;/em&gt; di un oggetto, ma preferisco accentrare il tutto nel repository.
&lt;/p&gt;&lt;p&gt;Alk.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/88586.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/09/28/88586.aspx</guid>
            <pubDate>Fri, 28 Sep 2007 13:00:07 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/09/28/88586.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/88586.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/88586.aspx</trackback:ping>
        </item>
        <item>
            <title>Repository e LINQ</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/10/87724.aspx</link>
            <description>Premesso che sono alle prime armi con LINQ, in questo post faccio vedere una prima ipotesi di come il nostro repository possa dare funzionalità di query per LINQ grazie al progetto LINQ to NHIbernate.

Alk.&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87724.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/10/87724.aspx</guid>
            <pubDate>Fri, 10 Aug 2007 15:10:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/10/87724.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87724.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87724.aspx</trackback:ping>
        </item>
        <item>
            <title>Repository – Fluent Query Interface</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/07/87510.aspx</link>
            <description>Quarta parte degli articoli sul repository.&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87510.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/07/87510.aspx</guid>
            <pubDate>Tue, 07 Aug 2007 12:52:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/07/87510.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87510.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87510.aspx</trackback:ping>
        </item>
        <item>
            <title>Repository non generico</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/06/87453.aspx</link>
            <description>Terza parte della serie di post su come realizzare un repository pattern.&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87453.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/06/87453.aspx</guid>
            <pubDate>Mon, 06 Aug 2007 15:47:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/06/87453.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87453.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87453.aspx</trackback:ping>
        </item>
        <item>
            <title>Gestire un repository Generico [1]</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/05/87368.aspx</link>
            <description>seconda parte del post sull'argomento "repository pattern"

Alk.&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87368.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/05/87368.aspx</guid>
            <pubDate>Sun, 05 Aug 2007 08:05:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/05/87368.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87368.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87368.aspx</trackback:ping>
        </item>
        <item>
            <title>Gestire un repository generico</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/05/87367.aspx</link>
            <description>Prima parte di una serie di post sull'argomento "repository Pattern" In relazione ad un thread aperto su guisa. (http://www.guisa.it/forums/1258/ShowThread.aspx#1258)

Alk.&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87367.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/05/87367.aspx</guid>
            <pubDate>Sun, 05 Aug 2007 08:01:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/05/87367.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87367.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87367.aspx</trackback:ping>
        </item>
    </channel>
</rss>
