<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>WCF - Indigo</title>
        <link>http://blogs.ugidotnet.org/matteomigliore/category/3158.aspx</link>
        <description>WCF - Indigo</description>
        <language>it-IT</language>
        <copyright>Matteo Migliore</copyright>
        <generator>Subtext Version 2.1.0.3</generator>
        <item>
            <title>Serializzazione: WCF perch&amp;egrave; sei tu WCF - Serialization: WCF why are you WCF</title>
            <link>http://blogs.ugidotnet.org/matteomigliore/archive/2010/04/07/serializzazione-wcf-perchegrave-sei-tu-wcf-serialization-wcf-why.aspx</link>
            <description>&lt;p&gt;Ho passato gli utlimi 3 giorni a cercare di risolvere un problema di serializzazione di un DTO gerarchico (Customer che contiene un IEnumerable&amp;lt;Customer&amp;gt;) e non ne uscivo, il bello è che la stessa cosa l’ho fatta in decine di altri casi. Il massimo del dettaglio dell’errore che riuscivo ad ottenere era &lt;a title="http://msdn.microsoft.com/en-us/library/system.executionengineexception.aspx" href="http://msdn.microsoft.com/en-us/library/system.executionengineexception.aspx"&gt;ExecutionEngineException&lt;/a&gt; che ovviamente non serviva a nulla. Poi con il tool &lt;a title="Service Trace Viewer Tool (SvcTraceViewer.exe)" href="http://msdn.microsoft.com/en-us/library/ms732023.aspx"&gt;Microsoft Service Trace Viewer&lt;/a&gt; sono riuscito a capire qualcosa in più.    &lt;br /&gt;    &lt;br /&gt;Le cose da sottolineare sono:    &lt;br /&gt;- il DTO è gerarchico come già detto    &lt;br /&gt;- il DTO contiene delle property di tipo IEnumerable&amp;lt;T&amp;gt;    &lt;br /&gt;    &lt;br /&gt;Detto questo, alla fine da questo errore “&lt;font color="#ff0000"&gt;Object Graph for Type Xxx Contains Cycles and Cannot be Serialized if Reference Tracking is Disabled&lt;/font&gt;” sono riuscito ad arrivare a questo articolo: &lt;a href="http://www.codingbliss.com/cb/?p=73"&gt;http://www.codingbliss.com/cb/?p=73&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;In sostanza la soluzione consiste nel markare il DTO con l’attributo DataContract (che dalla versione 3.5 SP1 di WCF non è più necessario) specificando &lt;em&gt;&lt;font color="#0080ff"&gt;DataContract(IsReference = true)&lt;/font&gt;&lt;/em&gt;:    &lt;br /&gt;[DataContract(IsReference = true)]    &lt;br /&gt;public class Person    &lt;br /&gt;{    &lt;br /&gt;    [DataMember]    &lt;br /&gt;    public string Name    &lt;br /&gt;    { get; set; }    &lt;br /&gt;    &lt;br /&gt;   [DataMember]    &lt;br /&gt;   public IEnumerable&amp;lt;Person&amp;gt; Children    &lt;br /&gt;   { get; set; }    &lt;br /&gt;}    &lt;br /&gt;    &lt;br /&gt;E tutto si è messo a funzionare. Ora devo verificare se il problema si presenta anche con WCF 4.0. Spero di no e spero di non dover più perdere giornate a risolvere un problema (bug?) come questo :-).    &lt;br /&gt;    &lt;br /&gt;Matteo Migliore.    &lt;br /&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:93a588ef-d3d7-46e4-83a7-e8b13207a159" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/serialization" rel="tag"&gt;serialization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WCF+bug" rel="tag"&gt;WCF bug&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/matteomigliore/aggbug/98324.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matteo Migliore</dc:creator>
            <guid>http://blogs.ugidotnet.org/matteomigliore/archive/2010/04/07/serializzazione-wcf-perchegrave-sei-tu-wcf-serialization-wcf-why.aspx</guid>
            <pubDate>Wed, 07 Apr 2010 11:54:09 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/matteomigliore/comments/98324.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/matteomigliore/archive/2010/04/07/serializzazione-wcf-perchegrave-sei-tu-wcf-serialization-wcf-why.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/matteomigliore/comments/commentRss/98324.aspx</wfw:commentRss>
        </item>
        <item>
            <title>[TimeTracker] Dal class-diagram al diagramma ER</title>
            <link>http://blogs.ugidotnet.org/matteomigliore/archive/2008/01/07/timetracker-dal-class-diagram-al-diagramma-er.aspx</link>
            <description>&lt;div&gt;Ho iniziato a lavorare ad un progetto di cui parlerò fra qualche settimana. Anticipo che si tratta di un &lt;a title="Time Tracker Starter Kit : The Official Microsoft ASP.NET Site" href="http://www.asp.net/downloads/starter-kits/time-tracker/"&gt;TimeTracker&lt;/a&gt;, il cui scopo principale è quello di racchiudere vari principi del design object oriented e di metodologie di sviluppo del software. L'obiettivo sarebbe anche quello di creare un presentation layer che offra degli spunti concreti ed infine avere a disposizione un TimeTracker realmente utilizzabile.&lt;br /&gt;
&lt;br /&gt;
Nel frattempo scriverò qualche post durante "l'avanzamento dei lavori". Ho quasi terminato il disegno del &lt;a title="Class diagram on Wikipedia" href="http://en.wikipedia.org/wiki/Class_diagram"&gt;class diagram&lt;/a&gt; e la cosa che mi ha dato maggiormente soddisfazione al momento è il fatto di essere in grado di generare il database direttamente dal class diagram attraverso &lt;a title="hibernate.org - NHibernate for .NET" href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt; e la corretta definizione dei &lt;a title="Chapter 5. Basic O/R Mapping" href="http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/mapping.html"&gt;file di mapping&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Per un motivo (database già esistente) o l'altro (mancanza di tempo) non ho mai sfruttato questa feature di NHibernate davvero utile. &lt;br /&gt;
&lt;br /&gt;
I due vantaggi sostanziali sono:&lt;br /&gt;
- possibilità di generare qualunque database supportato da NHibernate&lt;br /&gt;
- definizione dei vincoli nei file di mapping&lt;br /&gt;
&lt;br /&gt;
Anche se alla fine della fiera si tratta solamente di query T-SQL "create table" o "alter table", è stupefacente avere il database (Sql Server 2005) vuoto un momento e il momento dopo averlo completamente popolato ovviamente ottenendo gratis anche il &lt;a title="ER model on Wikipedia" href="http://en.wikipedia.org/wiki/Entity-relationship_model"&gt;database diagram&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Una cosa fatta meglio del diagramma ER (Management Studio) rispetto al class diagram (VIsual Studio 2008): il metodo di riorganizzazione del grafico... per il resto, beh è come sparare sulla croce rossa :-D. Il confronto tra i due modelli:&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;table style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="VERTICAL-ALIGN: top; MARGIN-RIGHT: 5px"&gt;Class diagram&lt;br /&gt;
            &lt;a href="http://farm3.static.flickr.com/2085/2173589876_2be671a8b4_o.jpg"&gt;&lt;img alt="Class diagram TimeTracker" src="http://farm3.static.flickr.com/2085/2173589876_e2570ca4fe_m.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td style="PADDING-LEFT: 5px"&gt;Diagramma ER&lt;br /&gt;
            &lt;a href="http://farm3.static.flickr.com/2085/2172798305_62808a6f94_o.jpg"&gt;&lt;img alt="Diagramma ER TimeTracker" src="http://farm3.static.flickr.com/2085/2172798305_bdb3411a66_m.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
Spero di avere abbastanza tempo per poter andare avanti speditamente :-). In teoria dovrebbe anche entrarci Silverlight 1.1 in minima parte, ma è da vedere.&lt;br /&gt;
&lt;br /&gt;
A breve seguiranno altre notizie.&lt;br /&gt;
&lt;br /&gt;
Matteo Migliore.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/matteomigliore/aggbug/90583.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matteo Migliore</dc:creator>
            <guid>http://blogs.ugidotnet.org/matteomigliore/archive/2008/01/07/timetracker-dal-class-diagram-al-diagramma-er.aspx</guid>
            <pubDate>Sun, 06 Jan 2008 23:45:07 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/matteomigliore/comments/90583.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/matteomigliore/archive/2008/01/07/timetracker-dal-class-diagram-al-diagramma-er.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/matteomigliore/comments/commentRss/90583.aspx</wfw:commentRss>
        </item>
        <item>
            <title>[WCF] Registrare WCF in IIS</title>
            <link>http://blogs.ugidotnet.org/matteomigliore/archive/2007/12/29/wcf-registrare-wfc-in-iis.aspx</link>
            <description>&lt;div&gt;Se avete installato VS2008 prima di IIS (nel mio caso IIS7 in Vista) è necessario registrare le estensioni per WFC, che altrimenti non sono ammesse, ottenendo l'errore HTTP 405  "Method not allowed".&lt;br /&gt;
&lt;br /&gt;
Per risolvere il problema è sufficiente lanciare l'utility "ServiceModelReg":&lt;br /&gt;
"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r&lt;br /&gt;
&lt;br /&gt;
Attenzione anche alla classe a cui punta il servizio. Se si crea prima il servizio in VS e poi lo si rinomina non viene aggiornato il riferimento nel codice di markup. Per risolvere:&lt;br /&gt;
- tasto destro sul servizio (file .svc)&lt;br /&gt;
- View Markup&lt;br /&gt;
- controllare che l'attributo Service punti alla classe corretta&lt;br /&gt;
&lt;br /&gt;
&lt;a title="Wenlong Dong's Blog : ASP.NET Compatibility Mode" href="http://blogs.msdn.com/wenlong/archive/2006/01/23/516041.aspx"&gt;Questo&lt;/a&gt; è articolo spiega come ospitare servizi WCF in modalità ASP.NET compatibile.&lt;br /&gt;
&lt;a title="Thom Robbins .NET Weblog : Introducing the &amp;lt;DataContract&amp;gt;" href="http://blogs.msdn.com/trobbins/archive/2006/12/29/introducing-the-datacontract.aspx"&gt;Qui&lt;/a&gt; invece un semplice ma chiaro esempio di un servizio WCF. &lt;br /&gt;
&lt;br /&gt;
Buoni servizi a tutti :-D.&lt;br /&gt;
&lt;br /&gt;
Matteo Migliore.&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/matteomigliore/aggbug/90492.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matteo Migliore</dc:creator>
            <guid>http://blogs.ugidotnet.org/matteomigliore/archive/2007/12/29/wcf-registrare-wfc-in-iis.aspx</guid>
            <pubDate>Sat, 29 Dec 2007 21:49:42 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/matteomigliore/comments/90492.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/matteomigliore/archive/2007/12/29/wcf-registrare-wfc-in-iis.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/matteomigliore/comments/commentRss/90492.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
