<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>SOA</title>
        <link>http://blogs.ugidotnet.org/FabioCarucci/category/2849.aspx</link>
        <description>SOA</description>
        <language>it-IT</language>
        <copyright>Fabio Carucci</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>L&amp;rsquo;arte del bilanciare: fare coesione e disaccoppiare</title>
            <link>http://blogs.ugidotnet.org/FabioCarucci/archive/2008/12/02/lrsquoarte-del-bilanciare-fare-coesione-e-disaccoppiare.aspx</link>
            <description>Leggete un mio &lt;a href="http://programmazione.it/index.php?entity=eitem&amp;amp;idItem=40679" target="_blank"&gt;articolo&lt;/a&gt;, di 3 puntate, su &lt;a href="http://www.programmazione.it" target="_blank"&gt;Programmazione.It&lt;/a&gt; relativo a riflessioni e suggerimenti sul bilanciamento tra l’alta coesione e il disaccoppiamento delle classi in fase di design. E siccome mi interessa, fatemi sapere le vostre riflessioni sull’argomento.   &lt;br /&gt;  &lt;br /&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a758f6b7-6ca2-4886-adff-54ae1c94d112" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/Programmazione.It" rel="tag"&gt;Programmazione.It&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Coesione" rel="tag"&gt;Coesione&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Disaccoppiamento" rel="tag"&gt;Disaccoppiamento&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Design" rel="tag"&gt;Design&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/.NET+Framework" rel="tag"&gt;.NET Framework&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/FabioCarucci/aggbug/94825.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Fabio Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/FabioCarucci/archive/2008/12/02/lrsquoarte-del-bilanciare-fare-coesione-e-disaccoppiare.aspx</guid>
            <pubDate>Tue, 02 Dec 2008 12:12:18 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/FabioCarucci/comments/94825.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/FabioCarucci/archive/2008/12/02/lrsquoarte-del-bilanciare-fare-coesione-e-disaccoppiare.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/FabioCarucci/comments/commentRss/94825.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/FabioCarucci/services/trackbacks/94825.aspx</trackback:ping>
        </item>
        <item>
            <title>L&amp;rsquo;arte di lavorare con Microsoft Robotics Studio</title>
            <link>http://blogs.ugidotnet.org/FabioCarucci/archive/2008/11/19/lrsquoarte-di-lavorare-con-microsoft-robotics-studio.aspx</link>
            <description>&lt;table cellspacing="0" cellpadding="2" width="901" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://www.fabiocarucci.it/Me/LartedilavorareconMicrosoftRoboticsStudi_A9BA/image.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.fabiocarucci.it/Me/LartedilavorareconMicrosoftRoboticsStudi_A9BA/image_thumb.png" width="179" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="699"&gt;Nel numero 133 di Dicembre di &lt;a href="http://www.ioprogrammo.it" target="_blank"&gt;IoProgrammo&lt;/a&gt;, attualmente in edicola, c’è un mio articolo introduttivo riguardo la piattaforma di sviluppo Microsoft Robotics Studio.           &lt;br /&gt;Buona lettura.           &lt;br /&gt;          &lt;br /&gt;          &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cb54b24e-c160-4f89-9823-fbb41c755987" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/IoProgrammo" rel="tag"&gt;IoProgrammo&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/.NET+Framework" rel="tag"&gt;.NET Framework&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SOA" rel="tag"&gt;SOA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Robotics+Studio" rel="tag"&gt;Robotics Studio&lt;/a&gt;&lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.ugidotnet.org/FabioCarucci/aggbug/94822.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Fabio Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/FabioCarucci/archive/2008/11/19/lrsquoarte-di-lavorare-con-microsoft-robotics-studio.aspx</guid>
            <pubDate>Wed, 19 Nov 2008 11:08:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/FabioCarucci/comments/94822.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/FabioCarucci/archive/2008/11/19/lrsquoarte-di-lavorare-con-microsoft-robotics-studio.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/FabioCarucci/comments/commentRss/94822.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/FabioCarucci/services/trackbacks/94822.aspx</trackback:ping>
        </item>
        <item>
            <title>L'arte di lavorare con SOA e... WCF - #1</title>
            <link>http://blogs.ugidotnet.org/FabioCarucci/archive/2007/10/15/88955.aspx</link>
            <description>&lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;/font&gt;Abbiamo la necessità di implementare un client WCF che sia in grado di effettuare il download automatico dei metadati del servizio remoto e configurare un proxy che sia in grado di stabilire una comunicazione?&lt;/p&gt;
&lt;p align="justify"&gt;Utilizziamo le classi &lt;strong&gt;&lt;em&gt;MetadataExchangeClient, MetadataSet, WsdlImporter &lt;/em&gt;&lt;/strong&gt;e&lt;strong&gt;&lt;em&gt; ServiceEndpointCollection&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p target="_blank"&gt;&lt;img id="id" height="335" alt="MetadataExchangeClient" width="980" border="0" src="http://www.fabiocarucci.it/me/MetadataExchangeClient_ETC_thumb.jpg" /&gt; &lt;/p&gt;
&lt;p align="justify"&gt;creiamo un oggetto &lt;em&gt;MetadataExchangeClient&lt;/em&gt; nel quale definiamo la URI del servizio remoto e specifichiamo di voler richiedere il documento WSDL di descrizione del servizio&lt;/p&gt;
&lt;p align="justify"&gt; &lt;/p&gt;
&lt;p align="justify"&gt; MetadataExchangeClient metadataExchange = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; MetadataExchangeClient&lt;/p&gt;
&lt;pre&gt; (&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; Uri("&lt;span style="COLOR: #8b0000"&gt;http://localhost:8000/ServizioRemoto/?wsdl&lt;/span&gt;"),&lt;/pre&gt;
&lt;pre&gt; MetadataExchangeClientMode.HttpGet);&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p align="justify"&gt;poi creiamo un oggetto &lt;em&gt;MetadataSet&lt;/em&gt; in cui scarichiamo i metadati utilizzando il metodo &lt;em&gt;GetMetadata&lt;/em&gt;() della classe &lt;em&gt;MetadataExchangeClient&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt; &lt;/p&gt;
&lt;p&gt; MetadataSet metadataSet = metadataExchange.GetMetadata();&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p align="justify"&gt; creiamo un oggetto &lt;em&gt;WsdlImporter&lt;/em&gt; dal &lt;em&gt;MetadataSet&lt;/em&gt; che contiene il documento WSDL comprensivo degli endpoints&lt;/p&gt;
&lt;p align="justify"&gt; &lt;/p&gt;
&lt;p&gt; WsdlImporter importer = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; WsdlImporter(metadataSet);&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p align="justify"&gt;e inseriamo gli endpoints nell'apposita collection &lt;em&gt;ServiceEndpointCollection&lt;/em&gt; mediante il metodo &lt;em&gt;ImportAllEndpoints&lt;/em&gt;() della classe &lt;em&gt;WsdlImporter&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; ServiceEndpointCollection endpoints = importer.ImportAllEndpoints();&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p align="justify"&gt; infine, all'interno di un ciclo For..Each configuriamo una variabile proxy per ogni endpoint trovato&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt; (ServiceEndpoint ep &lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt; endpoints)&lt;/p&gt;
&lt;pre&gt;{&lt;/pre&gt;
&lt;pre&gt; IInterfacciaServizio proxy = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; ChannelFactory&amp;lt;IInterfacciaServizio&amp;gt;(ep.Binding, ep.Address).CreateChannel();&lt;/pre&gt;
&lt;pre&gt; ((IChannel) proxy).Open();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="COLOR: #008000"&gt; // codice di elaborazione del servizio&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt; ((IChannel) proxy).Close();&lt;/pre&gt;
&lt;pre&gt;} &lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;p align="justify"&gt;da notare che &lt;em&gt;ChannelFactory&lt;/em&gt; è in grado di generare il proxy basandosi in maniera identica a ciò che riflette il contratto del servizio remoto, quindi se un metodo è dichiarato sincrono l'oggetto proxy avrà la stessa identica implementazione del metodo.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:935eff4c-a599-4367-9423-bcc19c063d61" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/WCF/"&gt;WCF&lt;/a&gt; , &lt;a rel="tag" href="http://technorati.com/tags/.NET3/"&gt;.NET3&lt;/a&gt; , &lt;a rel="tag" href="http://technorati.com/tags/C#/"&gt;C#&lt;/a&gt; &lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/FabioCarucci/aggbug/88955.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Fabio Carucci</dc:creator>
            <guid>http://blogs.ugidotnet.org/FabioCarucci/archive/2007/10/15/88955.aspx</guid>
            <pubDate>Mon, 15 Oct 2007 13:51:50 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/FabioCarucci/comments/88955.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/FabioCarucci/archive/2007/10/15/88955.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/FabioCarucci/comments/commentRss/88955.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/FabioCarucci/services/trackbacks/88955.aspx</trackback:ping>
        </item>
    </channel>
</rss>