<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>a deshoras</title>
	<atom:link href="http://adeshoras.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://adeshoras.wordpress.com</link>
	<description>A deshoras. programación, usabilidad, diseño y todo lo relacionado con el desarrollo web</description>
	<lastBuildDate>Mon, 12 Sep 2011 06:41:52 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='adeshoras.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>a deshoras</title>
		<link>http://adeshoras.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://adeshoras.wordpress.com/osd.xml" title="a deshoras" />
	<atom:link rel='hub' href='http://adeshoras.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Métodos internal, unit testing y el atributo InternalsVisibleTo</title>
		<link>http://adeshoras.wordpress.com/2009/11/05/metodos-internal-unit-testing-y-el-atributo-internalsvisibleto/</link>
		<comments>http://adeshoras.wordpress.com/2009/11/05/metodos-internal-unit-testing-y-el-atributo-internalsvisibleto/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 22:12:05 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[internal]]></category>
		<category><![CDATA[modificadores de acceso]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[protected]]></category>
		<category><![CDATA[protected internal]]></category>
		<category><![CDATA[pruebas unitarias]]></category>
		<category><![CDATA[public]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=361</guid>
		<description><![CDATA[Los miembros y métodos en C#, pueden gozar de varios modificadores de acceso. Amigos míos, no solo de públicos y privados vive el hombre.

Hoy vamos a hablar de uno de ellos.
El modificador de acceso internal.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=361&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Los miembros y métodos en C#, pueden gozar de varios modificadores de acceso. Amigos míos, no solo de públicos y privados vive el hombre.</p>
<p>Hoy vamos a hablar de uno de ellos.</p>
<h2>El modificador de acceso internal.</h2>
<p>El modificador de acceso internal, es aquel que nos va a permitir acceder a la clase, miembro, método etc. desde el propio ensamblado.</p>
<p>Que quiere decir esto, pues implica que dentro de un mismo ensamblado vamos a poder acceder a una clase internal como si de una clase pública se tratara, pero fuera de este ensamblado esta clase no va a ser accesible ya que no la estamos exponiendo.</p>
<p>Trabajar con clases internal, considero que es una buena práctica, ya que en los distintos assemblies que vamos generando, únicamente vamos a exponer lo que consideramos fundamental, de manera que el susodicho assembly, queda mucho más encapsulado. Además si el software que estamos desarrollando va a ser distribuido para que lo usen terceros, todavía tenemos más razones para usar este tipo de modificador de acceso.</p>
<h2>Los métodos internal y las pruebas unitarias (unit test) o como acceder a aquello que no expones.</h2>
<p>Hasta aquí, me encanta el modificador de acceso internal, pero ¿qué ocurre cuando tenemos que crear las pruebas unitarias para métodos internal?</p>
<p>Pues muy sencillo, que como no estamos exponiendo muchas clases y métodos, resulta que no lo podemos probar.</p>
<p>Jajajajaja, bueno, esto no es así exactamente aunque sí que es verdad que es una de las primeras cositas que encuentras (si tu desarrollo es TDD compliance claro).</p>
<p>La realidad es que no estamos exponiendo muchas clases por lo tanto no deberíamos poder probarlas, pero el Framework de ASP.NET precisamente cuenta “un mecanismo” para realizar esto.</p>
<h2>El atributo InternalsVisibleTo.</h2>
<p>Pues si amigos míos, el Framework de ASP.NET cuenta con atributo llamado InternalsVisibleTo que nos va a permitir acceder a clases internal desde assemblies externos.</p>
<p>El código necesario sería el siguiente:<br />
<code>[assembly: InternalsVisibleTo("MiAssemblyName.Test")]</code></p>
<p>Y esto, tenemos que colocarlo en el AssemblyInfo de nuestro proyecto.</p>
<p>Nada más por hoy mis druguitos. Aquí se acaba esta sesión de ultraviolencia. Os dejo con The XX, que además de ser unos chavales que hacen una música que me recuerda a los títulos de crédito de documentos tv, son geniales.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/11/05/metodos-internal-unit-testing-y-el-atributo-internalsvisibleto/"><img src="http://img.youtube.com/vi/Pib8eYDSFEI/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=361&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/11/05/metodos-internal-unit-testing-y-el-atributo-internalsvisibleto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>Como aumentar la productividad.</title>
		<link>http://adeshoras.wordpress.com/2009/10/27/como-aumentar-la-productividad/</link>
		<comments>http://adeshoras.wordpress.com/2009/10/27/como-aumentar-la-productividad/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 07:12:48 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[lecturas recomendadas]]></category>
		<category><![CDATA[gestión de equipos]]></category>
		<category><![CDATA[liderazgo]]></category>
		<category><![CDATA[organización]]></category>
		<category><![CDATA[planificación]]></category>
		<category><![CDATA[productividad]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=357</guid>
		<description><![CDATA[Hace algún tiempo, estaba muy interesado en todo lo relacionado con la productividad, y la verdad es que debería estar presente en cualquier tarea de cualquier profesional, independientemente del sector, ya que es algo totalmente positivo y necesario. No acostumbro a escribir post en los que únicamente linke a otro para que se visite, pero [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=357&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hace algún tiempo, estaba muy interesado en todo lo relacionado con la productividad, y la verdad es que debería estar presente en cualquier tarea de cualquier profesional, independientemente del sector, ya que es algo totalmente positivo y necesario.</p>
<p><a title="ver post &quot;Aumentar la productividad&quot; en Alzador.org" href="http://www.alzado.org/articulo.php?id_art=814" target="_blank">No acostumbro a escribir post en los que únicamente linke a otro para que se visite, pero este en concreto me ha parecido tan interesante, que la verdad no me he podido resistir.</a></p>
<p>Si estás gestionando equipos, léelo, ya que es totalmente necesario.</p>
<p>Mientras leía esta mañana mis RSS, estaba escuchando a Portishead. Los más grandes del Trip Hop, que son capaces de crear canciones tan Joy Division como esta.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/10/27/como-aumentar-la-productividad/"><img src="http://img.youtube.com/vi/dNg9SQxip5A/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/357/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=357&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/10/27/como-aumentar-la-productividad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>TDD, Unit Testing y Code Coverage</title>
		<link>http://adeshoras.wordpress.com/2009/10/22/tdd-unit-testing-y-code-coverage/</link>
		<comments>http://adeshoras.wordpress.com/2009/10/22/tdd-unit-testing-y-code-coverage/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 19:32:17 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[buenas prácticas]]></category>
		<category><![CDATA[code coverage]]></category>
		<category><![CDATA[desarrollo de software]]></category>
		<category><![CDATA[metricas]]></category>
		<category><![CDATA[pruebas unitarias]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=346</guid>
		<description><![CDATA[Todo desarrollo de software que se precie debería realizarse según las directrices del TDD (Test Driven Development) o Desarrollo Orientado a Pruebas, ya que nos va a permitir crear un código más mantenible y escalable.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=346&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Todo desarrollo de software que se precie debería realizarse según las directrices del TDD (Test Driven Development) o Desarrollo Orientado a Pruebas, ya que nos va a permitir crear un código más mantenible y escalable.</p>
<p>Esto no es algo nuevo, al contrario, y la verdad es que está bastante trillado, pero siempre es bueno recordarlo ya que lo considero una de las mejores prácticas para el desarrollo de software.</p>
<p>Las pruebas unitarias son, más que útiles, fundamentales ya que nos permiten trabajar de una forma desacoplada y nos ayudan a estructurar y encapsular nuestro código. Pero una vez que las tenemos en verde, ¿Cómo podemos saber qué es lo que se está probando y si están bien hechas?</p>
<p>Aquí es donde entra el Code Coverage.</p>
<h2>El code coverage como medida de calidad de nuestras pruebas unitarias, por lo tanto de nuestro software.</h2>
<p>El Code Coverage, es una medida que nos va a permitir conocer el porcentaje de ejecución de nuestro código, tras haber ejecutado una batería de pruebas.</p>
<p>De esta medida, podemos sacar varias conclusiones:</p>
<ol>
<li> Podemos necesitar más pruebas unitarias.</li>
<li> Hay código que hemos creado, que nunca se va a ejecutar, por lo tanto no es necesario y sobra.</li>
</ol>
<p>El Code Coverage, no es necesario que este al 100%, ya que para conseguir esto, quizás tengamos que realizar pruebas unitarias que realmente no sean tales o no sean muy útiles (por ejemplo que estemos probando el Framework en lugar nuestro código), pero sí que es verdad que cuanto más cercano sea al 100% mejor.</p>
<p>La buena práctica, es trabajar con pruebas unitarias, y usar el code coverage como métrica de la calidad de nuestro software y eficacia de nuestro equipo, ya que lo interesante es ver como el code coverage va creciendo (o por lo menos va manteniéndose) iteración tras iteración en el ciclo de vida del desarrollo el software.</p>
<p>Y para finalizar, deciros, que hay varias herramientas por ahí, aunque yo la verdad, solo he usado la que viene con Visual Studio 2008.</p>
<p>Para activar el Code Coverage, únicamente tenéis que ir a:</p>
<blockquote><p>Test -&gt; Edit Test Run Configuration -&gt; Local Test Run</p></blockquote>
<p>Y en el dialogo que aparece, vamos a la pestaña de Code Coverage y elegimos los proyectos a los que se lo queremos aplicar.</p>
<p>Aqui teneis una captura del Code Coverage de uno de los proyectos que hemos acabado recientemente, aunque no se vea el porcentaje total (por no desvelar el proyecto que es), ha sido un 91%.</p>
<div id="attachment_349" class="wp-caption aligncenter" style="width: 490px"><a href="http://adeshoras.files.wordpress.com/2009/10/code-coverage.jpg"><img class="size-full wp-image-349" title="code-coverage" src="http://adeshoras.files.wordpress.com/2009/10/code-coverage.jpg?w=480&#038;h=134" alt="Code Coverage en el ultimo proyecto en el que he estado" width="480" height="134" /></a><p class="wp-caption-text">Code Coverage en el ultimo proyecto en el que he estado</p></div>
<p>Nada más por hoy mis druguitos. Os dejo que tengo que estudiar, pero no os quedais solos, aqui teneis a The Pains of Being Pure At Heart que son geniales y me ponen mogollon.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/10/22/tdd-unit-testing-y-code-coverage/"><img src="http://img.youtube.com/vi/KLVrTruj_Aw/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=346&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/10/22/tdd-unit-testing-y-code-coverage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>

		<media:content url="http://adeshoras.files.wordpress.com/2009/10/code-coverage.jpg" medium="image">
			<media:title type="html">code-coverage</media:title>
		</media:content>
	</item>
		<item>
		<title>Los métodos extensores.</title>
		<link>http://adeshoras.wordpress.com/2009/09/30/los-metodos-extensores/</link>
		<comments>http://adeshoras.wordpress.com/2009/09/30/los-metodos-extensores/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 20:15:34 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[framework 3]]></category>
		<category><![CDATA[herencia]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[metodos extensores]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=341</guid>
		<description><![CDATA[Los métodos extensores, nos permiten “extender” la funcionalidad de una clase sin que sea necesario usar herencia o polimorfismo pudiendo añadirle funcionalidad a clases “core” del Framework.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=341&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Los métodos extensores, nos permiten “extender” la funcionalidad de una clase sin que sea necesario usar herencia o polimorfismo pudiendo añadirle funcionalidad a clases “core” del Framework.</p>
<p>Hay que tener en cuenta, que estos métodos aunque son muy útiles, en ningún caso pueden sustituir a la herencia de clases.</p>
<p>Para crear un método extensor, necesitamos un código tal como el siguiente:</p>
<p><code>public static string ToMD5(this string str)<br />
{<br />
MD5 md5 = MD5CryptoServiceProvider.Create();<br />
ASCIIEncoding encoding = new ASCIIEncoding();<br />
byte[] stream = null;<br />
StringBuilder sb = new StringBuilder();<br />
stream = md5.ComputeHash(encoding.GetBytes(str));<br />
for (int i = 0; i &lt; stream.Length; i++) sb.AppendFormat("{0:x2}", stream[i]);<br />
return sb.ToString();<br />
}</code></p>
<p>Como veis, el metodo extensor, ha de ser estático y ademas, va a recibir siempre como parametro el objeto que lo llama, a este objeto tenemos que añadirle el parametro this.</p>
<p>Así de facil y sencillo. Este tipo de metodos, los había usado con JavaScript y ActionScript, y ahora, mis drugitos, los podemos usar con C#, toda una maravilla.</p>
<p><a title="Descargate el código usado en este post" href="http://cid-4aa6af1b4a447319.skydrive.live.com/self.aspx/a-deshoras-aplicaciones-y-codigos-de-ejemplo/StringExtensionsSolution.zip" target="_blank">Bajate el código y échale un ojo</a>, y cuando uses este tipo de metodos, cuidado, ten en cuenta que no estan pensandos para sustituir la funcionalidad que nos proporciona la herencia, <a title="Ver post sobre los metodos extensores de Francesc Jaumot" href="http://fjaumot.wordpress.com/2008/10/27/metodos-extensores-en-c/" target="_blank">y como bien dicen aquí, es interesante agruparlos en un mismo namespace (que en una única clase)</a>.</p>
<p>Nunca han sido santos de mi devoción los planetas, aunque desde hace unos días, no paro de escuchar su “corrientes circulares en el tiempo”, canción mucho más madura que la mayoría de sus exitos.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/09/30/los-metodos-extensores/"><img src="http://img.youtube.com/vi/o-I4uawGPFA/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/341/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=341&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/09/30/los-metodos-extensores/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>Silverlight, estilos y el atributo BasedOn.</title>
		<link>http://adeshoras.wordpress.com/2009/09/08/silverlight-estilos-y-el-atributo-basedon/</link>
		<comments>http://adeshoras.wordpress.com/2009/09/08/silverlight-estilos-y-el-atributo-basedon/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 18:40:00 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[basedon]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[estilos]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=336</guid>
		<description><![CDATA[Tras los bucólicos días que he pasado al sur del Moncayo vuelve el hombre, no tan descansado como debería pero menos es nada.

Como ya hemos visto en otros post, me encuentro (el 20% de mi jornada laboral) en un proceso de aprendizaje de Silverlight. Tras leer algunos libros sobre el tema, comencé a desarrollar BookLight (;-) codename de una app que gestiona la biblioteca de la empresa) y gracias a esta app, me estoy encontrando con cosas interesantes y otras no tan interesantes.

Una de esas cosas, son los estilos.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=336&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tras los bucólicos días que he pasado al sur del Moncayo vuelve el hombre, no tan descansado como debería pero menos es nada.</p>
<p>Como ya hemos visto en otros post, me encuentro (el 20% de mi jornada laboral) en un proceso de aprendizaje de Silverlight. Tras leer algunos libros sobre el tema, comencé a desarrollar BookLight (;-) codename de una app que gestiona la biblioteca de la empresa) y gracias a esta app, me estoy encontrando con cosas interesantes y otras no tan interesantes.</p>
<p>Una de esas cosas, son los estilos.</p>
<p>Silverlight, nos permite generar una “suite” de estilos que posteriormente podemos ir asignando a los distintos controles de manera que en el momento que modificamos estos estilos, actualiza el aspecto de todos los controles que los “consumen”.</p>
<p>Estos estilos no son exactamente iguales a los (geniales) cas, aunque algo tienen en común. Definen el aspecto del control y en Silverlight (y dpb) pueden definir parte del comportamiento del control, tal como animaciones.</p>
<p>Cuando trabajamos con Blend y nos disponemos a crear estos estilos, nos da la posibilidad de crear el estilo de forma “global” (guardándolo en el app.xaml) o de forma “local” añadiéndolo al propio documento. Estos estilos pueden heredar de otros, y además es sumamente sencillo hacer esto, solo que en Blend no es muy aparente (si os digo la verdad yo no he encontrado la forma, lo cual puede ser normal por otra parte).</p>
<p>Para heredar unos estilos de otros vamos a usar el atributo BasedOn por medio del cual indicaremos cual es el estilo padre. Podeís ver su uso aquí:</p>
<p><code>&lt;Style x:Name="BaseText" TargetType="TextBlock"&gt;<br />
&lt;Setter Property="FontFamily" Value="./../Fonts/Fonts.zip#Arial" /&gt;<br />
&lt;Setter Property="TextWrapping" Value="Wrap" /&gt;<br />
&lt;Setter Property="FontWeight" Value="normal" /&gt;<br />
&lt;/Style&gt;<br />
&lt;Style x:Name="BookLight.BookingBook.Title" TargetType="TextBlock" BasedOn="{StaticResource BaseText}" &gt;<br />
&lt;Setter Property="FontSize" Value="28" /&gt;<br />
&lt;Setter Property="Margin" Value="10, 10, 10, 10" /&gt;<br />
&lt;/Style&gt;<br />
&lt;Style x:Name="BookLight.BookingBook.Title.Success" TargetType="TextBlock" BasedOn="{StaticResource BookLight.BookingBook.Title}" &gt;<br />
&lt;Setter Property="Foreground" Value="#FF66CC00" /&gt;<br />
&lt;/Style&gt;<br />
&lt;Style x:Name="BookLight.BookingBook.Title.Error" TargetType="TextBlock" BasedOn="{StaticResource BookLight.BookingBook.Title}" &gt;<br />
&lt;Setter Property="Foreground" Value="#FFFF6600" /&gt;<br />
&lt;/Style&gt;</code></p>
<p>Y esto es todo. Se despide vuestro amable y querido narrador no sin antes hablaros de The Phenomenal Handclap Band formada por gente de The Jon Spencer Blues Explosion y Mooney Suzuki.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/09/08/silverlight-estilos-y-el-atributo-basedon/"><img src="http://img.youtube.com/vi/n7IdfDrmPTQ/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=336&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/09/08/silverlight-estilos-y-el-atributo-basedon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>Expression Blend y las excepciones en tiempo de diseño.  Excepción: Argument Null Exception. Value cannot be null.</title>
		<link>http://adeshoras.wordpress.com/2009/08/19/expression-blend-y-las-excepciones-en-tiempo-de-diseno-excepcion-argument-null-exception-value-cannot-be-null/</link>
		<comments>http://adeshoras.wordpress.com/2009/08/19/expression-blend-y-las-excepciones-en-tiempo-de-diseno-excepcion-argument-null-exception-value-cannot-be-null/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 15:04:19 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[Blend]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[design time]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[excepciones]]></category>
		<category><![CDATA[excepciones en tiempo de diseño]]></category>
		<category><![CDATA[expression blend]]></category>
		<category><![CDATA[Windows Presentation Foundation]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=321</guid>
		<description><![CDATA[Ahora que me encuentro en pleno aprendizaje de Silverlight y su editor gráfico, es decir Expression Blend, me estoy enfrentando a un mundo nuevo (aunque realmente no sea tan nuevo) con muchas cosas por ver y aprender.

Una de las cosas que me ha sorprendido a la hora de desarrollar con Visual Studio – Blend, es la dualidad que aparece ahora, y de la cual nos podemos beneficiar a la hora de crear las interfaces de usuario que consideremos pertinente. Que exista esta dualidad y podemos trabajamos con el xaml desde diferentes entornos es beneficioso, ya que así cada uno puede decidir cuál es el entorno que más le satisface para crear unas tareas x, por lo tanto, trabajamos más a gusto y a la larga es mejor.

Eso sí, al existir esta dualidad de “ides”, nos vamos a encontrar con casos un poquito peculiares, por ejemplo, el que hoy nos trae aquí.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=321&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ahora que me encuentro en pleno aprendizaje de Silverlight y su editor gráfico, es decir Expression Blend, me estoy enfrentando a un mundo nuevo (aunque realmente no sea tan nuevo) con muchas cosas por ver y aprender.</p>
<p>Una de las cosas que me ha sorprendido a la hora de desarrollar con Visual Studio – Blend, es la dualidad que aparece ahora, y de la cual nos podemos beneficiar a la hora de crear las interfaces de usuario que consideremos pertinente. Que exista esta dualidad y podemos trabajamos con el xaml desde diferentes entornos es beneficioso, ya que así cada uno puede decidir cuál es el entorno que más le satisface para crear unas tareas x, por lo tanto, trabajamos más a gusto y a la larga es mejor.</p>
<p>Eso sí, al existir esta dualidad de “ides”, nos vamos a encontrar con casos un poquito peculiares, por ejemplo, el que hoy nos trae aquí.</p>
<p>Para aprender una nueva tecnología, no hay nada como verse inmerso en un proyecto, donde tengas unos tiempos que cumplir, una funcionalidad que realizar con una calidad x, tengas que trabajar con distintas tecnologías simultáneamente, implementar n patrones  etc. Así pues, revise las aplicaciones que tenemos (en la compañía donde trabajo), y decidí que una aplicación interesante para realizar con silverlight, sería la biblioteca (app que gestiona la adquisición y préstamo de libros teckies), ya que hay que acceder a una db para coger la información, tratar esta información etc. y además le daba una vuelta a una app que hacía años nadie tocaba.</p>
<p>Tras decidir que el codename de la aplicación sería Booklight, comencé a diseñar la interfaz. Tras hacer un diseño (grafico y de interacción) con Fireworks (no lo hice con Blend porque no hay que olvidarse de que el propósito de este desarrollo era aprender) y pensar en cómo podía orientar la arquitectura de esta aplicación, abrí Blend y comencé a plasmar el diseño realizado con Fireworks en Expression Blend. Realice la interfaz y empecé a codificar el asunto, llamadas a servicios wcf, acceso a base de datos, implementación model view viewmodel (del que hablaremos en su momento) y llego un momento que al abrir mi Expression Blend, me encontraba con un error que decía algo así como:</p>
<p><code>Argument Null Exception: Value cannot be null.<br />
Parameter name:stream</code></p>
<div id="attachment_324" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-324" title="argument-null-exception-value-cannot-be-null-wcf-services-stream" src="http://adeshoras.files.wordpress.com/2009/08/argument-null-exception-value-cannot-be-null-wcf-services-stream.jpg?w=480&#038;h=307" alt="Argument null exception. Value cannot be null." width="480" height="307" /><p class="wp-caption-text">Argument null exception. Value cannot be null.</p></div>
<p>Me resulto muy curioso, ya que yo podía hacer un rebuild en Visual Studio y todo estaba ok, pero en Blend seguía el error.</p>
<p>Tras buscar un tiempo en google, descubrí que en tiempo de diseño, se pueden producir excepciones.</p>
<p>En mi caso, en el constructor de una clase, estaba haciendo una llamada asíncrona a un servicio, y como es natural, Blend, no podía ejecutar la llamada.</p>
<p>Para solucionarlo, tan sencillo como comprobar si nuestro cliente rico, está hospedado en un navegador.</p>
<p>El código necesario para esto, el siguiente:</p>
<p><code>HtmlPage.IsEnabled</code></p>
<p>Con esta pequeña funcionalidad, evitaremos este tipo de errores y algún que otro quebradero de cabeza, y cuando abramos nuestro Blend, lo que veremos sera lo que hay que ver, en mi caso, aqui teneís:</p>
<div id="attachment_325" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-325" title="ovacion-error-solucionado" src="http://adeshoras.files.wordpress.com/2009/08/ovacion-error-solucionado.jpg?w=480&#038;h=260" alt="interfaz en la que hay que trabajar" width="480" height="260" /><p class="wp-caption-text">interfaz en la que hay que trabajar</p></div>
<p>Ahora quizá deberíamos debatir sobre si Expression Blend tiene que mostrar excepciones o no, pero creo que será en otro momento, aunque os adelante que a mi parecer, Blend debería dedicarse únicamente a ayudarnos a plasmar toda nuestra creatividad en un medio digital. En Flash (durante 2 años desarrolle con Action Script), esto está mejor resuelto, aunque también es verdad que el tratamiento de excepciones de flash (yo me quede en Flash 2.0, cuando comenzaron a orientarlo a objetos) era un poquito pobre.</p>
<p>Nada más amigos, es Agosto y debería estar de vacaciones y la verdad no se qué hago aquí. De momento, vamos con los más grandes del 2 tone.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/08/19/expression-blend-y-las-excepciones-en-tiempo-de-diseno-excepcion-argument-null-exception-value-cannot-be-null/"><img src="http://img.youtube.com/vi/bVcD1xAMTo8/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=321&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/08/19/expression-blend-y-las-excepciones-en-tiempo-de-diseno-excepcion-argument-null-exception-value-cannot-be-null/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>

		<media:content url="http://adeshoras.files.wordpress.com/2009/08/argument-null-exception-value-cannot-be-null-wcf-services-stream.jpg" medium="image">
			<media:title type="html">argument-null-exception-value-cannot-be-null-wcf-services-stream</media:title>
		</media:content>

		<media:content url="http://adeshoras.files.wordpress.com/2009/08/ovacion-error-solucionado.jpg" medium="image">
			<media:title type="html">ovacion-error-solucionado</media:title>
		</media:content>
	</item>
		<item>
		<title>Creando secciones de configuración personalizadas con ConfigurationSection. Como mejorar y organizar los ficheros de configuración y los deployments.</title>
		<link>http://adeshoras.wordpress.com/2009/08/10/creando-secciones-de-configuracion-personalizadas-con-configurationsection-como-mejorar-y-organizar-los-ficheros-de-configuracion-y-los-deployments/</link>
		<comments>http://adeshoras.wordpress.com/2009/08/10/creando-secciones-de-configuracion-personalizadas-con-configurationsection-como-mejorar-y-organizar-los-ficheros-de-configuracion-y-los-deployments/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 20:12:08 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[app.config]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[custon configuration section]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=331</guid>
		<description><![CDATA[Organizar los web.config o app.config, es una tarea que debería estar presente en cualquier ciclo de desarrollo de software. Lamentablemente no siempre se realizan estas tareas, ya que el Framework de ASP.NET, nos facilita una serie de mecanismos para que de una forma muy sencilla, podamos acceder y almacenar la configuración que necesitemos en un momento x.

Anteriormente hemos visto como usando ficheros de settings, podemos organizar nuestro web.config de una forma muy eficiente y sencilla, ahora vamos a ver algo un poquito más avanzado, pero igual de fácil.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=331&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Organizar los web.config o app.config, es una tarea que debería estar presente en cualquier ciclo de desarrollo de software. Lamentablemente no siempre se realizan estas tareas, ya que el Framework de ASP.NET, nos facilita una serie de mecanismos para que de una forma muy sencilla, podamos acceder y almacenar la configuración que necesitemos en un momento x.</p>
<p>Anteriormente hemos visto como usando ficheros de settings, podemos organizar nuestro web.config de una forma muy eficiente y sencilla, ahora vamos a ver algo un poquito más avanzado, pero igual de fácil.</p>
<p>.Net, a través de su Framework (desde la versión 2.0), nos facilita una serie de clases que nos permiten personalizar los ficheros de configuración en función de nuestras necesidades, permitiéndonos crear nuestras propias secciones dentro de la configuración de manera que el web.config o app.config nos va a quedar mucho más organizado y consolidado.</p>
<p>Así pues si estas cansado de almacenar la configuración de tu aplicación como una lista interminable de entradas en el nodo appSettings y quieres organizarlo un poquito, continua leyendo y vamos al asunto.</p>
<h2>Creando la clase que encapsula el acceso a nuestra sección personalizada dentro de la configuración.</h2>
<p>Lo primero que vamos a hacer es crear la clase que nos va a permitir encapsular el acceso a nuestra sección personalizada. Esta clase debe heredar de la clase ConfigurationSection del Framework y posteriormente vamos a ir creando una propiedad por cada ítem que se vaya a almacenar en la configuración.</p>
<p>La clase puede ser algo así:</p>
<p><code>public class BlogSettings : ConfigurationSection<br />
{<br />
}</code></p>
<p>Ahora nos toca crear las propiedades que nos encapsulen el acceso, vamos a ello:</p>
<p><code>[ConfigurationProperty(TITLE_PROPERTY_NAME, DefaultValue="A deshoras", IsRequired=true)]<br />
public string Title<br />
{<br />
get<br />
{<br />
return (string)this[TITLE_PROPERTY_NAME];<br />
}<br />
}</code></p>
<p>Como veis, estas propiedades están marcadas como ConfigurationProperty, y además, le indicamos el nombre de la propiedad dentro de la configuración, el valor por defecto y si es requerida o no.</p>
<h2>Creando un Manager que gestione nuestra clase de configuración.</h2>
<p>Como queremos que esto quede de maravilla, vamos a crear un manager, este se tiene que encargar de automatizar el acceso a la sección de configuración personalizada (custom configuration section) y la modificación si es preciso.</p>
<p>Para realizar estas funciones, vamos a crear una clase estática, que como miembro, tendrá una instancia de la clase que anteriormente hemos creado.</p>
<p>El manager, será algo así:</p>
<p><code>public static class BlogSettingsManager<br />
{<br />
#region constants<br />
private static string BLOG_SETTINGS_NODE_NAME = "BlogSettings";<br />
#endregion<br />
#region members<br />
private static BlogSettings _settings = ConfigurationManager.GetSection(BLOG_SETTINGS_NODE_NAME) as BlogSettings;<br />
#endregion<br />
#region Properties<br />
public static BlogSettings Settings<br />
{<br />
get { return _settings; }<br />
}<br />
#endregion<br />
}</code></p>
<h2>Creando nuestra sección personalizada (custom configuration section) dentro del web.config o app.config.</h2>
<p>Y ya solo nos queda añadir nuestra sección personaliza al web.config o app.config. Para ello, tenemos que añadir un nodo section hijo del nodo configSections, y en este nodo, tenemos que indicar el nombre de nuestra sección, y el tipo, que no viene a ser otra cosa que el nombre de la clase con el namespace y el nombre de la dll donde tengamos la clase que va a gestionar esta configuración (en nuestro caso BlogSettings).</p>
<p>El código sería el siguiente:</p>
<p><code>&lt;configuration&gt;<br />
&lt;configSections&gt;<br />
&lt;section name="BlogSettings" type="CustomConfigurationSection.Framework.BlogSettings, CustomConfigurationSection.Framework"/&gt;<br />
&lt;/configSections&gt;<br />
&lt;BlogSettings Title="Adeshoras" NumberOfItemsPerPage="20" /&gt;<br />
&lt;/configuration&gt;</code></p>
<p>Ahora solo nos queda usarlo a lo largo de nuestra app, y esto amigos míos, es lo más sencillo de todo, sería un código del estilo al siguiente:</p>
<p><code>BlogSettingsManager.Settings.Title</code></p>
<p><a title="Descargate el código usado en este post" href="http://cid-4aa6af1b4a447319.skydrive.live.com/self.aspx/a-deshoras-aplicaciones-y-codigos-de-ejemplo/CustomConfigurationSectionSolution.zip" target="_blank">Como siempre, te recomiendo que te bajes este código y lo veas en vivo y en directo, seguro que te maravilla</a>.</p>
<p>Nada más, como podéis ver mis druguitos, de una forma muy sencilla podemos encapsular el acceso a nuestra configuración y además personalizar los ficheros donde almacenamos la susodicha configuración (en nuestro caso web.config o app.config). Esto es muy simple y elegante y con una funcionalidad de este tipo, los deployments serán más sencillos ya que tendremos mucho más organizados nuestros ficheros de configuración.</p>
<p>Mientras he escrito este post, he estado escuchando a los Misfits y ahora es vuestro turno.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/08/10/creando-secciones-de-configuracion-personalizadas-con-configurationsection-como-mejorar-y-organizar-los-ficheros-de-configuracion-y-los-deployments/"><img src="http://img.youtube.com/vi/_1wbcqY6IIs/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/331/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=331&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/08/10/creando-secciones-de-configuracion-personalizadas-con-configurationsection-como-mejorar-y-organizar-los-ficheros-de-configuracion-y-los-deployments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>El elemento clear para las appSettings y los deployments.</title>
		<link>http://adeshoras.wordpress.com/2009/08/04/el-elemento-clear-para-las-appsettings-y-los-deployments/</link>
		<comments>http://adeshoras.wordpress.com/2009/08/04/el-elemento-clear-para-las-appsettings-y-los-deployments/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 20:05:05 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[app.config]]></category>
		<category><![CDATA[clear]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[despli]]></category>
		<category><![CDATA[despliegues]]></category>
		<category><![CDATA[Directorio Virtual]]></category>
		<category><![CDATA[herencia en web.config]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[web site]]></category>
		<category><![CDATA[web.confi]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=310</guid>
		<description><![CDATA[Desde hace unos días, he estado hablando del tema de los deployments centrándome sobre todo en la herencia de los web.config de nuestras aplicaciones (funcionalidad muy interesante y a tener en cuenta en todo momento). Hay varias formas de sobrescribir esta herencia o de configurar nuestro web.config para que nuestra aplicación trabaje de una forma [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=310&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="Los deployment en A deshoras" href="http://adeshoras.wordpress.com/tag/deployment/" target="_blank">Desde hace unos días, he estado hablando del tema de los deployments </a>centrándome sobre todo en la herencia de los web.config de nuestras aplicaciones (funcionalidad muy interesante y a tener en cuenta en todo momento).</p>
<p>Hay varias formas de sobrescribir esta herencia o de configurar nuestro web.config para que nuestra aplicación trabaje de una forma u otra, y hoy vamos a ver otro mecanismo.</p>
<p>Este mecanismo, no viene a ser otro que el elemento clear de las appSettings.</p>
<p>El elemento clear, quita todas las referencias de los appSettings de nuestra aplicación, y solo nos permite trabajar con la configuración agregada por el elemento add.</p>
<p>Usarlo es muy fácil:</p>
<p><code>&lt;appSettings&gt;<br />
&lt;clear /&gt;<br />
&lt;add key=”NumberOfItems” value=”20” /&gt;<br />
&lt;/appSettings&gt;</code></p>
<p>Útil y fácil como tienen que ser las cosas, ahora amigos, os dejo. Pero os dejo acompañados del fabuloso Bobby Womack y su genial Across 110th Street, inmortalizada por el no menos fabuloso y genial Tarantino en los títulos de crédito de Jackie Brown.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/08/04/el-elemento-clear-para-las-appsettings-y-los-deployments/"><img src="http://img.youtube.com/vi/UOg_8hCC4u4/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/310/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/310/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/310/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=310&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/08/04/el-elemento-clear-para-las-appsettings-y-los-deployments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>Deployments, web.config’s y archivos de settings.</title>
		<link>http://adeshoras.wordpress.com/2009/08/03/deployments-web-configs-y-archivos-de-settings/</link>
		<comments>http://adeshoras.wordpress.com/2009/08/03/deployments-web-configs-y-archivos-de-settings/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 19:02:19 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[app.config]]></category>
		<category><![CDATA[appsetings]]></category>
		<category><![CDATA[archivos de settings]]></category>
		<category><![CDATA[configsections]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[despligues]]></category>
		<category><![CDATA[settings]]></category>
		<category><![CDATA[settings files]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=316</guid>
		<description><![CDATA[Quien no se han encontrado con web.config’s que contienen una cantidad de appSettings que es inmanejable. Supongo que más o menos todos, ya que si no se tiene cuidado, estas appSettings pueden crecer de manera desmesurada complicando mucho los deployments y sobre todo haciendo que las susodichas settings pierdan su efectividad ya que se puede dar el caso de no saber para que se usa cada una (sobre todo si el proyecto lo tienes en producción desde hace n años).

El nodo appSettings, es muy útil ya que nos permite modificar valores que afectan al comportamiento de nuestra aplicación de una forma rápida y efectiva (y sin ser necesario compilar), pero estas como todo, hay que mantenerlas y sobre todo organizarlas.

Con asp.net 2.0, se introdujeron unos nuevos ficheros que nos permitían manejar la configuración de nuestra aplicación de una forma mucho más ordenada y efectiva.

Estos ficheros, eran los ficheros de settings, por medio de ellos, vamos a poder almacenar app settings y acceder a ellas de una forma enumerada. Además cuando creamos un fichero de settings, se genera una clase que nos va a serializar y deserializar de una forma automática y optima el acceso a nuestras settings.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=316&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quien no se han encontrado con web.config’s que contienen una cantidad de appSettings que es inmanejable. Supongo que más o menos todos, ya que si no se tiene cuidado, estas appSettings pueden crecer de manera desmesurada complicando mucho los deployments y sobre todo haciendo que las susodichas settings pierdan su efectividad ya que se puede dar el caso de no saber para que se usa cada una (sobre todo si el proyecto lo tienes en producción desde hace n años).</p>
<p>El nodo appSettings, es muy útil ya que nos permite modificar valores que afectan al comportamiento de nuestra aplicación de una forma rápida y efectiva (y sin ser necesario compilar), pero estas como todo, hay que mantenerlas y sobre todo organizarlas.</p>
<p>Con asp.net 2.0, se introdujeron unos nuevos ficheros que nos permitían manejar la configuración de nuestra aplicación de una forma mucho más ordenada y efectiva.</p>
<p>Estos ficheros, eran los ficheros de settings, por medio de ellos, vamos a poder almacenar app settings y acceder a ellas de una forma enumerada. Además cuando creamos un fichero de settings, se genera una clase que nos va a serializar y deserializar de una forma automática y optima el acceso a nuestras settings.</p>
<p>Para crear un fichero de settings, puedes hacerlo de dos formas:</p>
<ul>
<li>Btn derecho en nuestro proyecto -&gt; Add ítem -&gt; settings file  (en class libraries)</li>
<li>Btn derecho en nuestro proyecto -&gt; properties -&gt; settings (en proyectos web)</li>
</ul>
<p>Una vez que tenemos el archivo creado, ya solo nos queda añadir nuestras settings, el tipo de dato que va a almacenar, el scope (user o application) y por último el valor que almacenan.</p>
<p>Estas settings, al igual que las appSettings, se almacenan en nuestro web.config o app.config, de esta forma, también las podemos modificar sin tener que volver a compilar nuestro proyecto.</p>
<p>Veamos un ejemplo, supongamos que trabajamos con las appSettings, yo defino n appSettings en mi proyecto, y para usarlas debería hacer algo por el estilo a esto:<br />
<code>private const string NUMBER_OF_ITEMS = "NumberOfItems";<br />
public int NumberOfItems<br />
{<br />
get{ return Convert.ToInt32(WebConfigurationManager.AppSettings[NUMBER_OF_ITEMS]); }<br />
}</code></p>
<p>Si utilizamos un archivo de settings, únicamente tendríamos que hacer lo siguiente:</p>
<p><code>Settings.DisplaySettings.Default.NumberOfITems;</code></p>
<p>Siendo Settings el namespace y UrlSettings, la clase que se va a generar para poder encapsular el acceso a la susodichas settings.<br />
Si esto ya os ha gustado (que seguro que sí), lo mejor viene ahora, si trabajamos con nuestro nodo de appSettings, las settings las tenemos que definir más o menos de la siguiente forma:</p>
<p><code>&lt;appSettings&gt;<br />
&lt;add key="NumberOfItems" value="20"/&gt;<br />
&lt;add key="DefaultOrderValue" value="DefaultOrderValue"/&gt;<br />
&lt;/appSettings&gt;</code></p>
<p>Mientras que si trabajamos con este tipo de ficheros y aunque igualmente se almacenan en el web.config, se almacenan de la siguiente forma:</p>
<p><code>&lt;configSections&gt;<br />
&lt;sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" &gt;<br />
&lt;section name="TestSettings.Settings.AppGlobalSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /&gt;<br />
&lt;/sectionGroup&gt;<br />
&lt;/configSections&gt;<br />
&lt;applicationSettings&gt;<br />
&lt;</code><code>TestSettings</code><code>.Settings.AppGlobalSettings&gt;<br />
&lt;setting name="DefaultOrderValue" serializeAs="String"&gt;<br />
&lt;value&gt;date&lt;/value&gt;<br />
&lt;/setting&gt;<br />
&lt;/TestSettings.Settings.AppGlobalSettings&gt;<br />
&lt;/applicationSettings&gt;</code></p>
<p>Como podéis ver mucho más ordenado y eficiente.</p>
<p>Como apunte deciros que la buena práctica recomienda el incluir estas settings y nodos en nuestro web.config o app.config principal, pero si no lo hacéis, esta clase que se autogenera al no encontrar el valor buscado, usa el valor que se le dio cuando se precompiló. Que esto sea una ventaja o inconveniente lo tiene que decidir cada uno, el hecho es que el asunto funciona así.</p>
<p>Recientemente, <a title="Ver la app del iPhone de Nomaders.com" href="http://www.nomaders.com/iphone" target="_blank">hemos realizado una aplicación iPhone (disponible gratis en appstore)</a> para <a title="Ir al sitio web de Nomaders.com" href="http://www.nomaders.com/" target="_blank">Nomaders.com</a>. Esta app explota las API’s de varias redes sociales (<a title="Ir al sitio web de 11870" href="http://11870.com/" target="_blank">11870.com</a>, <a title="Ir al sitio web de Restaurantes.com" href="http://www.restaurantes.com/" target="_blank">Restaurantes.com</a>, <a title="Ir al sitio web de NVivo" href="http://www.nvivo.es/" target="_blank">NVivo</a> y <a title="Ir al sitio web de MiNube" href="http://www.minube.com/" target="_blank">MiNube</a>).</p>
<p>Cada una de las piezas que encapsula el acceso a esas API’s, las ha desarrollado vuestro querido y humilde narrador y para el tema de las configuraciones he usado este tipo de archivos y os aseguro que se trabaja de una forma muy sencilla y además a la hora del deployment, todo queda mucho más ordenado siendo así más fácil de mantener y administrar.</p>
<p>Os dejo chavales, que he quedado para enseñarles a mis colegas mi carro nuevo así que nada más, mientras he escrito este post, he estado escuchando a Sidonie, porque me recuerdan a ti y pq aunque hayan pasado ya casi dos años, cada día me tienes más fascinado.</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/08/03/deployments-web-configs-y-archivos-de-settings/"><img src="http://img.youtube.com/vi/nNyPvxSJmzo/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=316&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/08/03/deployments-web-configs-y-archivos-de-settings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
		<item>
		<title>Como conseguir que no haya herencia en los web.config. El tag location.</title>
		<link>http://adeshoras.wordpress.com/2009/07/31/como-conseguir-que-no-haya-herencia-en-los-web-config-el-tag-location/</link>
		<comments>http://adeshoras.wordpress.com/2009/07/31/como-conseguir-que-no-haya-herencia-en-los-web-config-el-tag-location/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 15:15:42 +0000</pubDate>
		<dc:creator>César</dc:creator>
				<category><![CDATA[deployment]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[despliegues]]></category>
		<category><![CDATA[Directorio Virtual]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[tag location]]></category>
		<category><![CDATA[virtual directory]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web site]]></category>
		<category><![CDATA[Web Sites]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://adeshoras.wordpress.com/?p=298</guid>
		<description><![CDATA[Aunque recientemente hablaba de la herencia de los web.config como algo bueno y que tenemos que tener en cuenta cuando desarrollamos aplicaciones que van a ser ejecutadas en directorios virtuales dentro de Web Sites, esta característica, también nos puede suponer que nos encontremos con algunos problemas. Así, pues, de forma muy sencilla, podemos “desactivar” la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=298&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aunque recientemente hablaba de la herencia de los web.config como algo bueno y que tenemos que tener en cuenta cuando desarrollamos aplicaciones que van a ser ejecutadas en directorios virtuales dentro de Web Sites, esta característica, también nos puede suponer que nos encontremos con algunos problemas.</p>
<p>Así, pues, de forma muy sencilla, podemos “desactivar” la herencia de web.config (o directamente no heredar) consiguiendo de esta forma que cada aplicación, este siendo hospedada por medio de un Web Site o un Virtual Directory, tenga su propia configuración completa.</p>
<p>El <strong>tag del web.config location</strong>, nos va a permitir deshabilitar esta herencia por medio del <strong>atributo inheritInChildApplications</strong>.</p>
<p>Para usarlo, tendríamos que poner dentro los nodos del web.config a los que vamos a hacerles el wrapper.</p>
<p><code>&lt;location path="." inheritInChildApplications="false"&gt;<br />
&lt;connectionStrings&gt;<br />
...<br />
&lt;/connectionStrings&gt;<br />
&lt;system.web&gt;<br />
...<br />
&lt;/system.web&gt;<br />
&lt;/location&gt;</code></p>
<p>Mientras he escrito este post, he estado escuchando a los undertones, así que tu que todavía sigues siendo joven y guapo, dale al play y disfruta de su genial teenage kicks, yo, me subo a zgz que esta tarde tengo que recoger mi cohe nuevo!!!!</p>
<span style="text-align:center; display: block;"><a href="http://adeshoras.wordpress.com/2009/07/31/como-conseguir-que-no-haya-herencia-en-los-web-config-el-tag-location/"><img src="http://img.youtube.com/vi/wGu2lu5XWE8/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adeshoras.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adeshoras.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adeshoras.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adeshoras.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adeshoras.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adeshoras.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adeshoras.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adeshoras.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adeshoras.wordpress.com&amp;blog=3518585&amp;post=298&amp;subd=adeshoras&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adeshoras.wordpress.com/2009/07/31/como-conseguir-que-no-haya-herencia-en-los-web-config-el-tag-location/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f423bd3cc50371ff44ded814291f86af?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">antolingarcia</media:title>
		</media:content>
	</item>
	</channel>
</rss>
