<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joan Domènech Bas</title>
	<atom:link href="http://www.joandome.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joandome.com</link>
	<description>- Experiències i curiositats amb .NET -</description>
	<lastBuildDate>Sun, 13 Mar 2011 00:32:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Retornar informaci&#243; d&#8217;una excepci&#243; a Silverlight a trav&#233;s de WCF</title>
		<link>http://www.joandome.com/2011/03/12/retornar-informaci-duna-excepci-a-silverlight-a-travs-de-wcf/</link>
		<comments>http://www.joandome.com/2011/03/12/retornar-informaci-duna-excepci-a-silverlight-a-travs-de-wcf/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 20:33:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Exceptions]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://www.joandome.com/?p=133</guid>
		<description><![CDATA[Si tenim un client Silverlight que per obtenir dades o executar processos ho fa a través de web services WCF, com podem dur un control i tractament de les possibles excepcions que es poden donar? En un primer moment, es &#8230; <a href="http://www.joandome.com/2011/03/12/retornar-informaci-duna-excepci-a-silverlight-a-travs-de-wcf/">Continua llegint <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Si tenim un client Silverlight que per obtenir dades o executar processos ho fa a través de web services WCF, com podem dur un control i tractament de les possibles excepcions que es poden donar?</p>
<p>En un primer moment, es podria pensar que resulta similar al tractament d’errors en altres contextos…doncs bé, malauradament en Silverlight no és així. Els WCF suporten els anomenats “<em>FaultContracts</em>”, però Silverlight no suporta un <em>service contract</em> amb un <em>fault contract</em>. En cas de fer-ho el servei es convertiria inservible pels clients Silverlight. Per altra banda tampoc es podria “llençar” l’excepció i que el client Silverlight la capturi però, tot i que l’excepció s’enviarà correctament, serà el navegador qui no deixi passar aquesta informació. En aquest cas, l’únic que el client Silverlight rebrà serà una <em>CommunicationException</em> amb el missatge d’error “<em>The remote server returned an error: NotFound</em>”.</p>
<p>Com es pot comprovar l’error retornat no dóna cap pista de quin ha estat l’autèntic error que s’ha produït en el nostre WCF. Una possible solució seria utilitzar un paràmetre <em>out</em> en el servei utilitzant una <em>wrapper type</em>, la qual passi el tipus d’excepció juntament amb el missatge cap al client Silverlight.</p>
<p>El procediment del servei WCF quedaria de la següent manera:</p>
<pre class="csharpcode">[OperationContract]
<span class="kwrd">public</span> <span class="kwrd">void</span> ProvaServei (<span class="kwrd">out</span> OwnFaultContract eWCF)
{ 

    eWCF = <span class="kwrd">null</span>;

    <span class="kwrd">try</span>
    {
        ...
    }
    <span class="kwrd">catch</span> (Exception ex)
    {
        eWCF = <span class="kwrd">new</span> OwnFaultContract()
        {
            ExType = ex.GetType().FullName,
            Message = ex.Message
        };
    }
}</pre>
<p>La classe del tipus propi pel retorn de l’error:</p>
<pre class="csharpcode">[DataContract]
<span class="kwrd">public</span> <span class="kwrd">class</span> OwnFaultContract
{
    [DataMember]
    <span class="kwrd">public</span> <span class="kwrd">string</span> ExType { get; set; }
    [DataMember]
    <span class="kwrd">public</span> <span class="kwrd">string</span> Message { get; set; }
}</pre>
<style type="text/css">
<p>.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; }</style>
]]></content:encoded>
			<wfw:commentRss>http://www.joandome.com/2011/03/12/retornar-informaci-duna-excepci-a-silverlight-a-travs-de-wcf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Com afegir controls dinàmicament en un Custom Control de Silverlight</title>
		<link>http://www.joandome.com/2010/11/27/com-afegir-controls-dinamicament-en-un-custom-control-de-silverlight-2/</link>
		<comments>http://www.joandome.com/2010/11/27/com-afegir-controls-dinamicament-en-un-custom-control-de-silverlight-2/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 17:35:50 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.joandome.com/?p=117</guid>
		<description><![CDATA[En el meu cas, em vaig trobar amb la necessitat de crear un Custom Control per a Silverlight, el qual havia de ser un contenidor d’altres controls, com poden ser els TextBox. Per crear un control propi de Silverlight tenim &#8230; <a href="http://www.joandome.com/2010/11/27/com-afegir-controls-dinamicament-en-un-custom-control-de-silverlight-2/">Continua llegint <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En el meu cas, em vaig trobar amb la necessitat de crear un <em>Custom Control</em> per a Silverlight, el qual havia de ser un contenidor d’altres controls, com poden ser els TextBox. Per crear un control propi de Silverlight tenim un fitxer xaml a on especificar l’estil que emprarà el control i un altre fitxer amb el codi intern específic d’aquest.</p>
<p>En el fitxer xaml a on es defineix l’estil, se li crea un <em>template</em> amb un control de tipus <em>StackPanel</em> a dins, i en aquest <em>panel</em> se li posa un nom concret per poder-lo identificar.</p>
<pre class="code"><span style="color: blue;">&lt;</span><span style="color: #a31515;">Style </span><span style="color: red;">TargetType</span><span style="color: blue;">="controls:StatusControl"&gt;
    &lt;</span><span style="color: #a31515;">Setter </span><span style="color: red;">Property</span><span style="color: blue;">="Template" &gt;
        &lt;</span><span style="color: #a31515;">Setter.Value</span><span style="color: blue;">&gt;
            &lt;</span><span style="color: #a31515;">ControlTemplate </span><span style="color: red;">TargetType</span><span style="color: blue;">="controls:StatusControl"&gt;
                &lt;</span><span style="color: #a31515;">StackPanel </span><span style="color: red;">x</span><span style="color: blue;">:</span><span style="color: red;">Name</span><span style="color: blue;">="ThePanel"  </span><span style="color: red;">Orientation</span><span style="color: blue;">="Horizontal"/&gt;
            &lt;/</span><span style="color: #a31515;">ControlTemplate</span><span style="color: blue;">&gt;
        &lt;/</span><span style="color: #a31515;">Setter.Value</span><span style="color: blue;">&gt;
    &lt;/</span><span style="color: #a31515;">Setter</span><span style="color: blue;">&gt;
&lt;/</span><span style="color: #a31515;">Style</span><span style="color: blue;">&gt;
</span></pre>
<p>Per altra banda, en el fitxer de codi definim en una nova classe el nostre control Silverlight. En ella, definim en una constant el nom que té l’<em>StackPanel</em> dins del <em>ControlTemplate</em> que s’ha definit anteriorment. Llavors, quan sobreescrivim la funció <em>OnApplyTemplate</em>, cridarem a la funció <em>GetTemplateChild(…)</em> per obtenir una referència del nostre <em>StackPanel</em>, especificant el nom d’aquest, a partir de la constant declarada abans.</p>
<pre class="code">[<span style="color: #2b91af;">TemplatePart</span>(Name = <span style="color: #2b91af;">StatusControl</span>.PanelElement, Type = <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">Panel</span>))]
<span style="color: blue;">public class </span><span style="color: #2b91af;">StatusControl </span>: <span style="color: #2b91af;">Control
</span>{
    <span style="color: blue;">private const string </span>PanelElement = <span style="color: #a31515;">"ThePanel"</span>;
    <span style="color: blue;">protected </span><span style="color: #2b91af;">Panel </span>thePanel;
    <span style="color: blue;">public </span>StatusControl()
    {
        DefaultStyleKey = <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">StatusControl</span>);
    }
    <span style="color: blue;">public override void </span>OnApplyTemplate()
    {
        <span style="color: blue;">base</span>.OnApplyTemplate();
        <span style="color: green;">// Obtenim el panel que hi ha en el template
        </span>thePanel = GetTemplateChild(PanelElement) <span style="color: blue;">as </span><span style="color: #2b91af;">Panel</span>;
    }
}</pre>
<p>Ara ens trobem que ja podem treballar des del codi amb la referència al nostre <em>panel</em>. Per això, en el cas de que es desitgés afegir un control dins del nostre control-contenidor, l’únic que caldria fer seria el següent:</p>
<pre class="code"><span style="color: blue;">public void </span>AfegirControl()
{
<span style="color: #2b91af;"><span style="color: #444444;">    </span>TextBlock </span>t = <span style="color: blue;">new </span><span style="color: #2b91af;">TextBlock</span>();
    t.Text = <span style="color: #a31515;">"Etiqueta 1"</span>;
    thePanel.Children.Add(t);
}</pre>
<p>Creem un nou control del tipus que sigui, en aquest cas un <em>TextBlock</em>. Li especifiquem degudament les seves propietats, com pot ser el text a mostrar i l’afegim com a “<em>child”</em> dins del nostre <em>panel.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joandome.com/2010/11/27/com-afegir-controls-dinamicament-en-un-custom-control-de-silverlight-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducci&#243; al consum de serveis WCF des de Silverlight</title>
		<link>http://www.joandome.com/2010/11/23/introducci-al-consum-de-serveis-wcf-des-de-silverlight/</link>
		<comments>http://www.joandome.com/2010/11/23/introducci-al-consum-de-serveis-wcf-des-de-silverlight/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 19:47:00 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://www.joandome.com/?p=101</guid>
		<description><![CDATA[Ara ja fa un temps endarrere que m’he introduït en el món del Silverlight, ja que és la tecnologia que estic utilitzant en el projecte en el qual estic treballant. En el seu moment em vaig tindre de mirar com &#8230; <a href="http://www.joandome.com/2010/11/23/introducci-al-consum-de-serveis-wcf-des-de-silverlight/">Continua llegint <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ara ja fa un temps endarrere que m’he introduït en el món del Silverlight, ja que és la tecnologia que estic utilitzant en el projecte en el qual estic treballant. En el seu moment em vaig tindre de mirar com es consumien els serveis WCF des de Silverlight. Doncs bé a continuació deixo un video que em va anar molt bé per aprendre les bases. Concretament és un video extret de la web <a href="http://www.silverlight.net">www.silverlight.net</a> i l’autor és en Tim Heuer, qui s’explica d’allò més bé.</p>
<p><object style="width:400px;height:338px;" autoupdate="true" data="data:application/x-silverlight-2," type="application/x-silverlight-2"><param value="2.0.31005.0" name="MinRuntimeVersion"/><param name="source" value="http://www.silverlight.net/clientbin/mediaplayer/MsCommunities.MediaPlayer.xap" /><param value="videoid=16522" name="InitParams"/><a href="http://go2.microsoft.com/fwlink/?LinkID=114576&amp;v=2.0"><img style="border-width: 0px;" alt="Install Silverlight" src="http://i1.silverlight.net/resources/images/content/misc/Install-Silverlight-400x338-VideoSize.png?cdn_id=10292010"/></a></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joandome.com/2010/11/23/introducci-al-consum-de-serveis-wcf-des-de-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una nova etapa&#8230;</title>
		<link>http://www.joandome.com/2010/10/12/una-nova-etapa/</link>
		<comments>http://www.joandome.com/2010/10/12/una-nova-etapa/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 10:21:44 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.joandome.com/?p=98</guid>
		<description><![CDATA[He decidit renovar una mica la meva web. Ja portava uns dies que ho tenia al cap i sempre trobava alguna cosa més important a fer abans que dedicar una estona a actualitzar-la. La principal raó d&#8217;aquest update és l&#8217;objectiu &#8230; <a href="http://www.joandome.com/2010/10/12/una-nova-etapa/">Continua llegint <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>He decidit renovar una mica la meva web. Ja portava uns dies que ho tenia al cap i sempre trobava alguna cosa més important a fer abans que dedicar una estona a actualitzar-la. La principal raó d&#8217;aquest <em>update</em> és l&#8217;objectiu de crear un espai a on guardar totes aquelles vivències amb les que em trobo al dia a dia a la feina. És a dir, crear un recopilatori de situacions com a enginyer/programador i les seves posteriors solucions perquè si al cap d&#8217;un temps m&#8217;hi torno a trobar cara a cara amb elles, pugui resoldre-les sense perdre un altre cop el mateix temps emprat anteriorment.</p>
<p>Espero, també, que aquest pugui ser un lloc de consulta per aquelles persones que també busquin solucions als mateixos problemes amb els que m&#8217;hagi pogut trobar jo abans.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joandome.com/2010/10/12/una-nova-etapa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

