<?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>fboiton&#039;s blog &#187; practices</title>
	<atom:link href="http://www.fboiton.com/tag/practices/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fboiton.com</link>
	<description>Blog Técnico y personal: Ideas, Guias, Tutoriales, Comentarios, Pensamientos, Entre otros.</description>
	<lastBuildDate>Sun, 05 Feb 2012 22:01:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>TryParse? Convert? &#8230; mejor &#8220;Maybe&#8221;</title>
		<link>http://www.fboiton.com/tryparse-convert-mejor-maybe</link>
		<comments>http://www.fboiton.com/tryparse-convert-mejor-maybe#comments</comments>
		<pubDate>Wed, 04 Aug 2010 02:09:00 +0000</pubDate>
		<dc:creator>fboiton</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[codign]]></category>
		<category><![CDATA[practices]]></category>

		<guid isPermaLink="false">http://www.fboiton.com/tryparse-convert-mejor-maybe</guid>
		<description><![CDATA[Revisando el MSDN Flash del 2 de agosto me topé con un artículo que me llamó la atención “TryParse vs. Convert” el cual es el planteamiento de la opinion personal de @kodefuguru. Dicho planteamiento me pareció bastante acertado y la &#8230; <a href="http://www.fboiton.com/tryparse-convert-mejor-maybe">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Revisando el MSDN Flash del 2 de agosto me topé con un artículo que me llamó la atención “<a href="http://www.kodefuguru.com/post/2010/06/24/TryParse-vs-Convert.aspx" target="_blank">TryParse vs. Convert</a>” el cual es el planteamiento de la opinion personal de <a href="http://twitter.com/kodefuguru" target="_blank">@kodefuguru</a>. Dicho planteamiento me pareció bastante acertado y la propuesta de utilizar una opción simple y declarativa envolviendo el uso de los “TryParse” en una nueva libreria como una buena práctica lo considero aconsejable.</p>
<p>La opción planteada es el uso de una clase “<a href="http://kodefu.codeplex.com/SourceControl/changeset/view/60306#1234126" target="_blank">Maybe</a>” la cual se puede descargar de <a href="http://kodefu.codeplex.com/SourceControl/changeset/view/60306#1234126" target="_blank">codeplex</a> la cual contiene los métodos para convertir cadenas de caracteres a Entero, Boolean, Byte, etc., asi:</p>
<p><a href="http://www.fboiton.com/images/TryParseConvertmejorMaybe_9E36/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.fboiton.com/images/TryParseConvertmejorMaybe_9E36/image_thumb.png" width="640" height="152"/></a> </p>
<p>Con esto evitamos el lidiar con las excepciones por cadenas con contenido “no convertible” con los “Convert” y tampoco agregamos sentencias condicionales, segun pienso innecesarias y que generan código repetido, por el uso del TryParse.</p>
<p>Una buena práctica que espero les sirva!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fboiton.com/tryparse-convert-mejor-maybe/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando las clases Uri y HTTPUtility para obtener los elementos de una URL</title>
		<link>http://www.fboiton.com/utilizando-las-clases-uri-y-httputility-para-obtener-los-elementos-de-una-url</link>
		<comments>http://www.fboiton.com/utilizando-las-clases-uri-y-httputility-para-obtener-los-elementos-de-una-url#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:49:25 +0000</pubDate>
		<dc:creator>fboiton</dc:creator>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[practices]]></category>

		<guid isPermaLink="false">http://www.fboiton.com/?p=33</guid>
		<description><![CDATA[Recuerdo los tiempos cuando para obtener algunos elementos de una URL como el nombre del Archivo o el Query String trabajabamos manipulador de cadenas que separaba por “/”, “?”…. y bueno, olvidemos eso. La .NET Framework nos provee 2 herramientas &#8230; <a href="http://www.fboiton.com/utilizando-las-clases-uri-y-httputility-para-obtener-los-elementos-de-una-url">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recuerdo los tiempos cuando para obtener algunos elementos de una URL como el nombre del Archivo o el Query String trabajabamos manipulador de cadenas que separaba por “/”, “?”…. y bueno, olvidemos eso.</p>
<p>La .NET Framework nos provee 2 herramientas <em>Uri</em> y el método <em>ParseQueryString </em>de la&#160; <em>HttpUtility</em> cuyos detalles de documentación se encuentran acá:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/system.web.httputility.parsequerystring.aspx">HttpUtility.ParseQueryString Method</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.uri.aspx">Uri Class</a> </li>
</ul>
<p>Demos una vista a la Uri Class, para esta clase debemos tener el namespace <em>System</em> incluido en nuestra clase. Luego de instanciarla pasando con el constructor el URL con el que vamos a trabajar, tenemos ya las diferentes partes accesibles por medio de atributos del objeto.</p>
<p> <code>
<p>&#160;&#160;&#160; var uri = new Uri(url);      <br />&#160;&#160;&#160; Debug.Write(uri.AbsolutePath);       <br />&#160;&#160;&#160; Debug.Write(uri.AbsoluteUri);       <br />&#160;&#160;&#160; Debug.Write(uri.Query);       <br />&#160;&#160;&#160; Debug.Write(uri.Host);       <br />&#160;&#160;&#160; Debug.Write(uri.Port);       </p>
<p> </code>
<p>Y ahora HttpUtility.ParseQueryString, este método es estático asi que podemos utilizarlo con habilitar el namespace <em>System.Web</em></p>
<p> <code>
<p>using System.Web;</p>
<p>//…class structure</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; NameValueCollection qryStringCollection = HttpUtility.ParseQueryString(“a=1&amp;b=2&amp;c=3”);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Response.Write(qryStringCollection[&quot;a&quot;]); // escribirá 1       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Response.Write(qryStringCollection[&quot;b&quot;]); // escribirá 2       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Response.Write(qryStringCollection[&quot;c&quot;]); // escribirá 3       </p>
<p> </code>
<p>como verán el método retorna una “NameValueCollection” cuyo comportamiento es como un diccionario (llave, valor).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fboiton.com/utilizando-las-clases-uri-y-httputility-para-obtener-los-elementos-de-una-url/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Website Generic Handlers</title>
		<link>http://www.fboiton.com/aspnet-website-generic-handlers</link>
		<comments>http://www.fboiton.com/aspnet-website-generic-handlers#comments</comments>
		<pubDate>Thu, 24 Jun 2010 15:22:35 +0000</pubDate>
		<dc:creator>fboiton</dc:creator>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[practices]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[webforms]]></category>

		<guid isPermaLink="false">http://www.fboiton.com/?p=32</guid>
		<description><![CDATA[Existen ocasiones que necesitamos dejar por un lado el HTML y responder XML, json, etc. Muchas veces hemos utilizado una página ASPX y el Response.Write para estos fines, sin embargo, existe otra opción… Los ASP.NET Generic Web Handler cuando trabajamos &#8230; <a href="http://www.fboiton.com/aspnet-website-generic-handlers">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Existen ocasiones que necesitamos dejar por un lado el HTML y responder XML, json, etc. Muchas veces hemos utilizado una página ASPX y el Response.Write para estos fines, sin embargo, existe otra opción… Los <em>ASP.NET Generic Web Handler </em>cuando trabajamos con <em>ASP.NET WebSites</em>.</p>
<p>No es que sea totalmente malo utilizar una ASPX, en realidad el punto es que toda ASPX hereda de System.Web.UI.Page y éste incluye ovehead que no necesitamos para lo que necesitamos.</p>
<p>Primero agregamos al proyecto nuestro Handler</p>
<p><a href="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="294" alt="image" src="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_thumb.png" width="547" border="0" /></a> </p>
<p>Una vez creado, obtendremos el código definido por el template</p>
<p><a href="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_3.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="280" alt="image" src="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_thumb_3.png" width="412" border="0" /></a> </p>
<p>Quien hace acá la magia es esta directiva:</p>
<p><a href="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_4.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="26" alt="image" src="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_thumb_4.png" width="478" border="0" /></a> </p>
<p>Básicamente, define que la Clase “Handler” se debe instanciar para manejar la respuesta al llamar a dicho archivo.</p>
<p>Recordemos definir siempre el content type, el cual en este ejemplo definiré para javascript “<em>application/x-javascript</em>” y la respuesta (que para efectos de este post lo dejaré con un Response.Write) la modificaré para retornar un array en formato json, lo que nos lleva a una clase así:</p>
<p> <code>public class Handler : IHttpHandler {    <br />&#160;&#160;&#160; public void ProcessRequest (HttpContext context) {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; context.Response.ContentType = &quot;application/x-javascript&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; context.Response.Write(&quot;{testlist:['value 1','value 2', 'value 3']}&quot;);     <br />&#160;&#160;&#160; }     <br />&#160;&#160;&#160; public bool IsReusable {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; get {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return false;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br />&#160;&#160;&#160; }
</p>
<p>}</p>
<p> </code>
</p>
<p>Al correr el scritp este es el resultado:</p>
<p><a href="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_5.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="80" alt="image" src="http://www.fboiton.com/images/ASP.NETCustomWebHandlerGenericHandlers_7E5D/image_thumb_5.png" width="506" border="0" /></a> </p>
<p>Aclaro… Existen formas para serializara diferentes formatos, para relacionarlo con el ejemplo pueden ver la documentación en msdn de <a href="http://msdn.microsoft.com/en-us/library/system.web.script.serialization.aspx">Script Serialization</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fboiton.com/aspnet-website-generic-handlers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

