<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://misopiniones.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fmisopiniones.spaces.live.com%2fcategory%2fProgramaci%c3%b3n%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Gustavo Bonansea: Programación</title><description /><link>http://misopiniones.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catProgramaci%25C3%25B3n</link><language>en-US</language><pubDate>Thu, 09 Oct 2008 14:44:42 GMT</pubDate><lastBuildDate>Thu, 09 Oct 2008 14:44:42 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://misopiniones.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>2825969774929556075</live:id><live:alias>misopiniones</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>LINQ y otras yerbas de C# 3.0</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!1071.entry</link><description>&lt;p&gt;En este post expongo con un ejemplo simple, la impresión de números pares del 1 al 20, algunas características nuevas de C# 3.0 como LINQ, Lamba expressions, Extensions methods, comparadas con algunas características que ya estaban incluidas en C# 2.0 como Anonymous Method en contraste con nuestro viejo y querido foreach. Es un ejemplo muy simplista, pero sirve para ilustrar las nuevas características incorporadas en la nueva versión de C#. &lt;p&gt;&lt;strong&gt;Código:&lt;/strong&gt; &lt;p&gt;using System;&lt;br&gt;using System.Collections.Generic;&lt;br&gt;using System.Linq;&lt;br&gt;using System.Text;  &lt;p&gt;namespace LINQ_Lab_1&lt;br&gt;{&lt;br&gt;    class Program&lt;br&gt;    {&lt;br&gt;        static int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };  &lt;p&gt;        static void Main(string[] args)&lt;br&gt;        {&lt;br&gt;            PrintHeadLine(&amp;quot;For each sample - C# 1.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersForEach();  &lt;p&gt;            PrintHeadLine(&amp;quot;Anonymus Method - C# 2.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersAnonymusMethod();  &lt;p&gt;            PrintHeadLine(&amp;quot;Anonymus Method 2 - C# 2.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersAnonymousMethod2();  &lt;p&gt;            PrintHeadLine(&amp;quot;LINQ - C# 3.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersLinq();  &lt;p&gt;            PrintHeadLine(&amp;quot;Lambda Expressions - C# 3.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersLamba();  &lt;p&gt;            PrintHeadLine(&amp;quot;Extension Methods - C# 3.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersExtensionMethods();  &lt;p&gt;            PrintHeadLine(&amp;quot;Anonymous Type - C# 3.0&amp;quot;);&lt;br&gt;            PrintEvenNumbersAnonymousType();  &lt;p&gt;            Console.ReadLine();&lt;br&gt;        }  &lt;p&gt;        static void PrintSeparator()&lt;br&gt;        {&lt;br&gt;            Console.WriteLine(&amp;quot;---------------------------&amp;quot;);&lt;br&gt;        }  &lt;p&gt;        static void PrintHeadLine(string text)&lt;br&gt;        {&lt;br&gt;            PrintSeparator();&lt;br&gt;            Console.WriteLine(text);&lt;br&gt;            PrintSeparator();&lt;br&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando la clasica version con Foreach&lt;br&gt;        /// C# 1.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersForEach()&lt;br&gt;        {&lt;br&gt;            /* Viejo y querido foreach&lt;br&gt;             * */&lt;br&gt;            foreach (int n in numbers)&lt;br&gt;                if (n % 2 == 0)&lt;br&gt;                    Console.WriteLine(n.ToString());&lt;br&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando delegados y metodos anonimos&lt;br&gt;        /// C# 2.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersAnonymusMethod()&lt;br&gt;        {&lt;br&gt;            /* Aqui se esta utilizando un delegado que representa un metodo anonimo&lt;br&gt;             * con el codigo: &amp;quot;return n % 2 == 0&amp;quot;&lt;br&gt;             * */&lt;br&gt;            int[] evens = Array.FindAll(numbers, delegate(int n) { return n % 2 == 0; });&lt;br&gt;            foreach (int n in evens)&lt;br&gt;                Console.WriteLine(n.ToString());&lt;br&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando Anonymous Method 2&lt;br&gt;        /// C# 2.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersAnonymousMethod2()&lt;br&gt;        {&lt;br&gt;            /* La version mas compacta: 1 sola linea  &lt;p&gt;             * */&lt;br&gt;            Array.ForEach(numbers, delegate(int n) { if (n % 2 == 0) Console.WriteLine(n.ToString()); });&lt;br&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando LINQ&lt;br&gt;        /// C# 3.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersLinq()&lt;br&gt;        {&lt;br&gt;            //Expresion LINQ al mejor estilo SQL&lt;br&gt;            var evens = from n in numbers&lt;br&gt;                        where n % 2 == 0&lt;br&gt;                        select n.ToString();  &lt;p&gt;            foreach (string n in evens)&lt;br&gt;                Console.WriteLine(n);&lt;br&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando Lambda Expressions&lt;br&gt;        /// C# 3.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersLamba()&lt;br&gt;        {&lt;br&gt;            /* Aqui se esta utilizando un expresion lambda&lt;br&gt;             * que se puede interpretar como &amp;quot;para todo n que cumpla con la regla n % 2 == 0&amp;quot;&lt;br&gt;             * podemos ver el codigo representa una expresion más natural:&lt;br&gt;             * &amp;quot;Buscar todos los n en numbers que cumplan con la condicion n % 2 == 0&amp;quot;&lt;br&gt;             * */  &lt;p&gt;            var evens = Array.FindAll(numbers, n =&amp;gt; n % 2 == 0);&lt;br&gt;            foreach (int n in evens)&lt;br&gt;                Console.WriteLine(n.ToString());  &lt;p&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando Extension Methods&lt;br&gt;        /// C# 3.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersExtensionMethods()&lt;br&gt;        {&lt;br&gt;            /* Aqui utilizamos Extension Methods y una expresion lambda para&lt;br&gt;             * el predicado&lt;br&gt;             * */  &lt;p&gt;            var evens = numbers.Where(n =&amp;gt; n % 2 == 0);&lt;br&gt;            foreach (int n in evens)&lt;br&gt;                Console.WriteLine(n.ToString());&lt;br&gt;        }  &lt;p&gt;        /// &amp;lt;summary&amp;gt;&lt;br&gt;        /// Utilizando LINQ y Anonymous Types&lt;br&gt;        /// C# 3.0&lt;br&gt;        /// &amp;lt;/summary&amp;gt;&lt;br&gt;        static void PrintEvenNumbersAnonymousType()&lt;br&gt;        {&lt;br&gt;            /* En la clausula &amp;quot;select&amp;quot; de la expresion LINQ creamos un tipo anonimo&lt;br&gt;             * conformado por el miebro &amp;quot;n&amp;quot; con el valor del entero y otro miembro &lt;br&gt;             * &amp;quot;name&amp;quot; que representa a n.ToString().&lt;br&gt;             * Luego utilizamos &amp;quot;n.name&amp;quot;&lt;br&gt;             * */&lt;br&gt;            var evens = from n in numbers&lt;br&gt;                        where n % 2 == 0&lt;br&gt;                        select new { n, name = n.ToString() };  &lt;p&gt;            foreach (var n in evens)&lt;br&gt;                Console.WriteLine(n.name);&lt;br&gt;        }  &lt;p&gt;    }&lt;br&gt;}  &lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt; &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pjXGV852Sj5TlAjJyiugdT213UTVg_OS5bNZVkAzFgrGfuq3tOYfT4ysOUzXkA34foLMWLZ_8cpg?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=642 alt=image src="http://trupqw.bay.livefilestore.com/y1pU_YSOjb2O5cwpaWeFlo1G5OHCsZFDqaLjw8_jHpMvPwgwuX6cTD4MH44LtQlTm-6p0sLbFUhEFaEMqR1ae2Qlw?PARTNER=WRITER" width=673 border=0&gt;&lt;/a&gt;  &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;span style="font-family:'Courier New'"&gt;&lt;/span&gt;&lt;strong&gt;Performance:&lt;/strong&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;Aquí podemos observar que en cuestiones de performance el método más veloz es el &lt;strong&gt;foreach&lt;/strong&gt;, mientras que el que peor rendimiento posee es del de creación de un &lt;strong&gt;tipo anónimo.&lt;/strong&gt; &lt;p style="margin-bottom:0pt;line-height:normal"&gt;&lt;a href="http://by1.storage.msn.com/y1pluretjNuwTNPCX61NagoF47o6AEajkHBc-vYYGgOQb3W4ikohAOy7hnuvYUEjAV2Zv58scsurAOUHQNBO50BZuQjpnrBFl9i?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=295 alt=image src="http://by1.storage.msn.com/y1pluretjNuwTNcM2pQ0QFq8vApSNLI86iIM-XZvlfxOVMiUywfrAPPIpY5EkWAm-FMGYVlgiQJ33QlJsCzI2ZIpEAR5C91Wqpc?PARTNER=WRITER" width=487 border=0&gt;&lt;/a&gt;  &lt;p style="margin-bottom:0pt;line-height:normal"&gt;  &lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/a&gt;B.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+LINQ+y+otras+yerbas+de+C%23+3.0&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!1071.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!1071.entry</guid><pubDate>Mon, 14 Jan 2008 11:55:11 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!1071/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!1071.entry#comment</wfw:comment><dcterms:modified>2008-01-14T11:55:11Z</dcterms:modified></item><item><title>Tutoriales de Silverlight</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!976.entry</link><description>&lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=82 alt=Nibbles src="http://byfiles.storage.msn.com/y1p3gtLj4pEOGgzvBjnsrp2X4Pug2QIrziTvvM0VkhJDZPCTc22n4nCUvv34Vw3dm_eY4PPXWGenBI" width=238 border=0&gt; 
&lt;p&gt; Una serie de tutoriales &amp;quot;cortitos y al pié&amp;quot; sobre Silverlight, y pronto llegarán algunos de WPF: &lt;a href="http://www.nibblestutorials.net/" target="_blank"&gt;Nibbles&lt;/a&gt; 
&lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/a&gt;B&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Tutoriales+de+Silverlight&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!976.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!976.entry</guid><pubDate>Sat, 21 Jul 2007 15:27:19 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!976/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!976.entry#comment</wfw:comment><dcterms:modified>2007-07-21T15:31:20Z</dcterms:modified></item><item><title>Moonlight</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!818.entry</link><description>&lt;div&gt;No no, no es la famosa Sonata de Beethoven, es la versión linuxera del novedoso &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt;, que se encuentra en desarrollo dentro del proyecto Mono, de hecho en la página hay una lista de tareas con sus respectivos owners y vemos algunas sin responsable, a ver quién se anota :D&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.mono-project.com/Moonlight"&gt;http://www.mono-project.com/Moonlight&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;img src="http://www.mono-project.com/files/thumb/b/bd/600px-Silverlight-airlines-demo.png"&gt; &lt;img src="http://www.mono-project.com/files/thumb/d/dc/600px-Surfacemodified.png"&gt; &lt;img src="http://www.mono-project.com/files/6/64/Tattoo.jpg"&gt; &lt;/div&gt;
&lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/a&gt;B&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Moonlight&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!818.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!818.entry</guid><pubDate>Sat, 23 Jun 2007 15:21:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!818/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!818.entry#comment</wfw:comment><dcterms:modified>2007-06-23T15:21:34Z</dcterms:modified></item><item><title>Ver información detallada de error en Sharepoint</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!810.entry</link><description>&lt;div&gt;&lt;font size=2&gt;Les paso un pequeño tip para ver información detallada de error cuando desarrollamos sobre Sharepoint, para evitar que nos dé el tan poco útil &lt;font color="#000080"&gt;&lt;strong&gt;&lt;em&gt;&amp;quot;An unexpected error has occurred&amp;quot;&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;. Debemos modificar el web.config con los siguientes cambios:&lt;/font&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;font size=2&gt;Lo primero que tenemos que hacer es bastante obvio y es editar el nodo &amp;quot;customErrors&amp;quot; y ponerlo en Off:&lt;/font&gt; &lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;line-height:115%;font-family:'Courier New'"&gt;customErrors&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:10pt;color:red;line-height:115%;font-family:'Courier New'"&gt;mode&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New'"&gt;=&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New'"&gt;&lt;strong&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;Off&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;span style="color:blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New'"&gt;&lt;span style="color:blue"&gt;&lt;font face=Verdana color="#444444"&gt;Luego, mucho menos obvio, hay que modificar el nodo &amp;quot;SafeMode&amp;quot; y setear el atributo &amp;quot;CallStack&amp;quot; en true: 
&lt;p style=""&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:maroon;line-height:115%;font-family:'Courier New'"&gt;SafeMode&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:red;line-height:115%;font-family:'Courier New'"&gt;MaxControls&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New'"&gt;=&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;line-height:115%;font-family:'Courier New'"&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;200&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="color:red"&gt;CallStack&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;true&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;DirectFileDependencies&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;10&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;TotalFileDependencies&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;50&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;AllowPageLevelTrace&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;false&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style=""&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/ol&gt;
&lt;p&gt; &lt;font size=2&gt;G&lt;/font&gt;&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#444444" size=2&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size=2&gt;B&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Ver+informaci%c3%b3n+detallada+de+error+en+Sharepoint&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!810.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!810.entry</guid><pubDate>Tue, 12 Jun 2007 18:03:48 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!810/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!810.entry#comment</wfw:comment><dcterms:modified>2007-06-12T18:03:48Z</dcterms:modified></item><item><title>WPF Performance</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!809.entry</link><description>&lt;div&gt;Si tiene algún problema con la performance de su aplicación en WPF, o simplemente piensa que nunca viene mal darle una ajustada de tornillos más, esta herramienta puede ser útil:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;WPF Performance Suite&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://wpf.netfx3.com/files/folders/10880/download.aspx"&gt;http://wpf.netfx3.com/files/folders/10880/download.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;También está disponible para 64 bits: &lt;a href="http://wpf.netfx3.com/files/folders/10879/download.aspx"&gt;http://wpf.netfx3.com/files/folders/10879/download.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;font size=2&gt;G&lt;/font&gt;&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#444444" size=2&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size=2&gt;B&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+WPF+Performance&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!809.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!809.entry</guid><pubDate>Mon, 11 Jun 2007 13:23:06 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!809/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!809.entry#comment</wfw:comment><dcterms:modified>2007-06-11T13:23:06Z</dcterms:modified></item><item><title>Llamar a una función de servidor desde una página sin PostBack ni AJAX - Parte 2</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!786.entry</link><description>&lt;address&gt;&lt;strong&gt;Nota: &lt;/strong&gt;La entrada está dividida en dos entradas por una cuestión de limitación del largo del texto de los Spaces&lt;/address&gt;
&lt;h2&gt;Register.aspx.cs:&lt;/h2&gt;
&lt;div&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Data;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Configuration;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Collections;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Web;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Web.Security;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Web.UI;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Web.UI.WebControls;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Web.UI.WebControls.WebParts;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; System.Web.UI.HtmlControls;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;///&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;///&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt; La clase implementa la interfaz 'ICallbackEventHandler' para dar soporte al mecanismo de Callback&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;///&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;public&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;partial&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; &lt;span style="color:teal"&gt;Register&lt;/span&gt; : System.Web.UI.&lt;span style="color:teal"&gt;Page&lt;/span&gt;, System.Web.UI.&lt;span style="color:teal"&gt;ICallbackEventHandler&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; nameIsAvailable = &lt;span style="color:maroon"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Tener en cuenta que el Page_Load también se ejecuta ante la llamada a través de&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Callback desde el cliente.&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Para diferenciar si la llamada es a través de un mecanismo de Callback puede usarse&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; la propiedad 'Page.IsCallback'&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;///&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:teal"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:green"&gt;/* &lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* Esto genera el código necesario para realizar la llamada asíncrona desde el cliente hacia &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* el servidor. Genera un pedazo de javascript como el siguiente:&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt;* &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,false)&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;* &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* Cuando se ejecuta en el cliente realiza el Callback, llamando a la función del servidor&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* &amp;quot;RaiseCallbackEvent&amp;quot; para receptar el evento del lado del server&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt;*/&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt; CallbackReference = Page.ClientScript.GetCallbackEventReference&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;            &lt;/span&gt;(&lt;span style="color:blue"&gt;this&lt;/span&gt;, &lt;span style="color:maroon"&gt;&amp;quot;arg&amp;quot;&lt;/span&gt;, &lt;span style="color:maroon"&gt;&amp;quot;ReceiveServerData&amp;quot;&lt;/span&gt;, &lt;span style="color:maroon"&gt;&amp;quot;context&amp;quot;&lt;/span&gt;);&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;//Construcción de la función javascript CallServer que contiene el la llamada generada anteriormente&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:teal;font-family:'Courier New'"&gt;String&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; callbackScript = &lt;span style="color:maroon"&gt;&amp;quot;function CallServer(arg, context)&amp;quot;&lt;/span&gt; +&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;&amp;quot;{ &amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; + CallbackReference + &lt;span style="color:maroon"&gt;&amp;quot;} ;&amp;quot;&lt;/span&gt;;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:green"&gt;//Se agrega la función javascript generada antes a la página&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;Page.ClientScript.RegisterClientScriptBlock(&lt;span style="color:blue"&gt;this&lt;/span&gt;.GetType(),&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;&amp;quot;CallServer&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;, callbackScript, &lt;span style="color:blue"&gt;true&lt;/span&gt;);&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:green"&gt;/* &lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* Agregamos un evento de cliente 'onclick' para que cuando se presione el botón se&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* ejecute la función 'CheckAvailability()' la que se encarga luego de llamar a 'CallServer'&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* con los parámetros adecuados.&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* Observación: 'btnAvailable' es un HTML Button (INPUT) con el atributo runat=&amp;quot;server&amp;quot;, no se utiliza un&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;* porque generaría automáticamente un PostBack estándar el cual obliga a redibujar la página&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt;* en forma completa&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt;&lt;span&gt;         &lt;/span&gt;*/&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;btnAvailable.Attributes.Add(&lt;span style="color:maroon"&gt;&amp;quot;onclick&amp;quot;&lt;/span&gt;, &lt;span style="color:maroon"&gt;&amp;quot;CheckAvailability()&amp;quot;&lt;/span&gt;);&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;#region&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; ICallbackEventHandler Members&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Luego de ejecutarse la función 'RaiseCallbackEvent' se ejecuta esta para enviar el resultado de la ejecución&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; de servidor al cliente&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;///&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:green;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; GetCallbackResult()&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt; nameIsAvailable;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;}&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; Función que se ejecuta como respuesta al Callbabk producido desde la página, a través de la función de&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; javascript 'CallServer'.&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; En este caso se comprueba la disponibilidad de un nombre de usuario&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;span style="color:gray"&gt;///&lt;/span&gt;&lt;span style="color:green"&gt; &lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;span style="color:green"&gt;Valor enviado desde el javascript de la página&lt;/span&gt;&lt;span style="color:gray"&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;public&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; RaiseCallbackEvent(&lt;span style="color:blue"&gt;string&lt;/span&gt; eventArgument)&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:green"&gt;//código altamente sofisticado para obtener la disponibilidad de un nombre&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;if&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; (eventArgument.StartsWith(&lt;span style="color:maroon"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, &lt;span style="color:teal"&gt;StringComparison&lt;/span&gt;.InvariantCultureIgnoreCase))&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;            &lt;/span&gt;nameIsAvailable = &lt;span style="color:maroon"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;else&lt;/span&gt;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;            &lt;/span&gt;nameIsAvailable = &lt;span style="color:maroon"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;;&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&lt;span&gt;    &lt;/span&gt;#endregion&lt;/span&gt; 
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt; 
&lt;p&gt;&lt;span style="font-size:11pt;font-family:Calibri"&gt;&lt;/span&gt;  
&lt;p&gt;  
&lt;p&gt; El código está lo suficientemente comentado como para necesitar una mayor explicación aunque para cualquier duda al respecto pueden utilizar los comentarios de esta página. 
&lt;div&gt;&lt;font size=2&gt;G&lt;/font&gt;&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#444444" size=2&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size=2&gt;B&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Llamar+a+una+funci%c3%b3n+de+servidor+desde+una+p%c3%a1gina+sin+PostBack+ni+AJAX+-+Parte+2&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!786.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!786.entry</guid><pubDate>Thu, 10 May 2007 15:49:14 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!786/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!786.entry#comment</wfw:comment><dcterms:modified>2007-05-10T15:50:16Z</dcterms:modified></item><item><title>Llamar a una función de servidor desde una página sin PostBack ni AJAX - Parte 1</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!785.entry</link><description>&lt;address&gt;&lt;strong&gt;Nota&lt;/strong&gt;: La entrada está dividida en dos entradas por una cuestión de limitación del largo del texto de los Spaces&lt;/address&gt;
&lt;h2&gt;Introducción&lt;/h2&gt;
&lt;p&gt;Existe en Asp.Net un mecanismo de Callback que nos permite realizar desde un pequeño código javascript en una página una llamada a una función en el servidor para obtener ciertos valores, que podemos procesar nuevamente con javascript sin necesidad de que se recargue toda la página. En realidad se está realizando un &amp;quot;roundtrip&amp;quot; hacia el servidor, pero no se realiza un &amp;quot;postback&amp;quot; con la consecuente rederización y recarga de toda la página web. El efecto es el mismo que si estuviérmos utilizando AJAX, pero sin necesidad de instalar ningún control especial ni librería adicional. Es un mecanismo liviano para realizar llamadas asíncronas al servidor desde una página web si que se recargue la misma. 
&lt;h2&gt;Ejemplo&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://img523.imageshack.us/img523/4333/formej6.jpg"&gt; 
&lt;p&gt;
&lt;p&gt;El código de ejemplo utiliza este mecanismo para verificar la existencia de un determinado nombre de usuario (que debe ser único) en la base de datos para avisarle al usuario sobre la disponibilidad del mismo. Ese ejemplo es bastante simple, pero el mecanismo puede ser utilizado para enviar cualquier tipo de información desde el server hacia el cliente y viceversa.
&lt;h3&gt;Register.aspx:&lt;/h3&gt;
&lt;p&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;background:yellow;font-family:'Courier New'"&gt;&amp;lt;%&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;@&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:maroon"&gt;Page&lt;/span&gt; &lt;span style="color:red"&gt;Language&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;CodeFile&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Register.aspx.cs&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Inherits&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Register&amp;quot;&lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="background:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;background:yellow;font-family:'Courier New'"&gt;&amp;lt;%&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;@&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:maroon"&gt;Implements&lt;/span&gt; &lt;span style="color:red"&gt;Interface&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;System.Web.UI.ICallbackEventHandler&amp;quot;&lt;/span&gt; &lt;span style="background:yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;background:yellow;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;!&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;DOCTYPE&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:red"&gt;html&lt;/span&gt; &lt;span style="color:red"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;html&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:red"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;head&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Head1&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;title&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Untitled Page&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;title&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:'Courier New'"&gt;//Función que se ejecuta en el evento 'onclick' del botón&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;function&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; CheckAvailability()&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; userName = document.getElementById(&lt;span style="color:maroon"&gt;'txtUser'&lt;/span&gt;).value;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;CallServer(userName, &lt;span style="color:maroon"&gt;''&lt;/span&gt;);&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:green"&gt;//A través de esta función se recibe la respuesta a través del servidor.&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:green"&gt;//Esta función es la encarga de gestionar los datos devueltos por el server&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;function&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt; ReceiveServerData(value)&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; text = document.getElementById(&lt;span style="color:maroon"&gt;'txtAvailable'&lt;/span&gt;);&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;         &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;if&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; (value == &lt;span style="color:maroon"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;                &lt;/span&gt;text.value = &lt;span style="color:maroon"&gt;&amp;quot;El nombre está disponible&amp;quot;&lt;/span&gt;;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;else&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;                &lt;/span&gt;text.value = &lt;span style="color:maroon"&gt;&amp;quot;El nombre NO está disponible, seleccione otro&amp;quot;&lt;/span&gt;;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;  &lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;head&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;body&lt;/span&gt;&lt;span lang=EN-US style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;form&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;Label&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Text&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;User&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;Label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;txtUser&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;TextBox&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;input&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;btnAvailable&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Test Availability&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:red"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;b&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;txtAvailable&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;BorderColor&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;BorderStyle&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;None&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Width&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;368px&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;TextBox&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;br&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;Label&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Label2&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Text&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Pwd&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;Label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;txtPwd&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;TextBox&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;br&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;br&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:maroon"&gt;Button&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;btnRegister&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Text&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Register&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span lang=EN-US style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;div&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon"&gt;form&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;body&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;gt;&lt;/span&gt;
&lt;p style="line-height:normal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;font-family:'Courier New'"&gt;html&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&amp;gt;&lt;/span&gt;
&lt;p style=""&gt;&lt;span style="font-size:11pt;font-family:Calibri"&gt;&lt;/span&gt;
&lt;div&gt;&lt;font size=2&gt;G&lt;/font&gt;&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#444444" size=2&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size=2&gt;B.&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Llamar+a+una+funci%c3%b3n+de+servidor+desde+una+p%c3%a1gina+sin+PostBack+ni+AJAX+-+Parte+1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!785.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!785.entry</guid><pubDate>Thu, 10 May 2007 15:46:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!785/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!785.entry#comment</wfw:comment><dcterms:modified>2007-05-10T15:46:55Z</dcterms:modified></item><item><title>Monoppix</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!773.entry</link><description>&lt;img src="http://img184.imageshack.us/img184/4336/monoppixus9.png"&gt; 
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Para los que quieran probar &lt;a href="http://www.mono-project.com/Main_Page"&gt;MONO&lt;/a&gt; (implementación del framework .Net para Linux, BSD, MacOS, Solaris y Windows) sin ensuciarse mucho las manos les presento a Monoppix (&lt;a href="http://www.monoppix.com/"&gt;http://www.monoppix.com/&lt;/a&gt;), que es una distribución de Linux basada en &lt;a href="http://www.knoppix.net/"&gt;Knoppix&lt;/a&gt;. Se puede bajar una iso, la cual se graba en un CD. El CD es booteable y arranca Linux sin necesidad de instalar nada, la versión Monoppix tiene una instalación de Mono que podemos utilizar para pobar el entorno con 0 impacto sobre nuestra preciosa PC con Windows.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Para bajar la ISO click &lt;a href="http://ftp.belnet.be/packages/monoppix/monoppix-v1.1.8.0.iso"&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font size=2&gt;G&lt;/font&gt;&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#444444" size=2&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size=2&gt;B&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Monoppix&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!773.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!773.entry</guid><pubDate>Wed, 18 Apr 2007 16:08:37 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!773/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!773.entry#comment</wfw:comment><dcterms:modified>2007-04-18T16:08:37Z</dcterms:modified></item><item><title>ASP.Net Community Hall of fame</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!756.entry</link><description>&lt;div&gt;¿Quieres estar en el salón de la fama de la comunidad de ASP.Net? Para ello puedes estrar al &lt;span&gt;ASP.NET Community Recognition Program y obtener puntos por responder preguntas, participar de los foros, votar en las encuentas, etc. Más info: &lt;a href="http://www.asp.net/resources/community-recognition/default.aspx?tabid=41"&gt;http://www.asp.net/resources/community-recognition/default.aspx?tabid=41&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Hall of fame: &lt;a href="http://www.asp.net/resources/community-recognition/hall-of-fame.aspx?tabid=41"&gt;http://www.asp.net/resources/community-recognition/hall-of-fame.aspx?tabid=41&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+ASP.Net+Community+Hall+of+fame&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!756.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!756.entry</guid><pubDate>Fri, 09 Feb 2007 09:11:44 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!756/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!756.entry#comment</wfw:comment><dcterms:modified>2007-02-09T09:11:44Z</dcterms:modified></item><item><title>Registrar en la GAC automáticamente</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!755.entry</link><description>&lt;div&gt;Esto es algo realmente simple, pero me ha resultado bastante útil y ahorrado algo de tiempo; evitando tener que volver a registrar en la GAC un componente cada vez que lo modifico y compilo.&lt;/div&gt;
&lt;div&gt;Es tan simple como editar el &amp;quot;Post-build event command line&amp;quot; (en la solapa de Build Events dentro de las propiedades del proyecto) y agregar la siguiente línea:&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;quot;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe&amp;quot; /i &amp;quot;$(TargetPath)&amp;quot;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Con esto el assembly se instalará automáticamente en la GAC luego de compilar.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Registrar+en+la+GAC+autom%c3%a1ticamente&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!755.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!755.entry</guid><pubDate>Thu, 08 Feb 2007 16:23:56 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!755/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!755.entry#comment</wfw:comment><dcterms:modified>2007-02-08T16:23:56Z</dcterms:modified></item><item><title>Testing con Visual Studio Team System</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!730.entry</link><description>&lt;div&gt;Para aquellos interesados en Testing con Visual Studio Team System, he escrito una breve reseña de las posibilidades que brinda VSTS para realizar esta tarea. El artículo ha sido publicado en la revista Software Gurú de México, el link para descargar la versión PDF de la revista es el siguiente &lt;a href="http://www.softwareguru.com.mx/downloads/SG-200606.pdf"&gt;http://www.softwareguru.com.mx/downloads/SG-200606.pdf&lt;/a&gt;, aunque deberán registrarse de forma gratuita en el sitio para poder descargarlo.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;p&gt;&lt;img src="http://img242.imageshack.us/img242/5932/portadaactualld6.jpg"&gt; 
&lt;p&gt;Espero sea de su interés.
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B.&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Testing+con+Visual+Studio+Team+System&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!730.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!730.entry</guid><pubDate>Mon, 18 Dec 2006 17:50:40 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!730/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!730.entry#comment</wfw:comment><dcterms:modified>2006-12-18T17:50:40Z</dcterms:modified></item><item><title>Cosas que se deben saber sobre la memoria y el CLR</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!719.entry</link><description>&lt;div&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#000000" size=2&gt;Hace un tiempo estuve bastante preocupado por el mecanismo de administración de memoria en .Net dado que había participado del desarrollo de una aplicación que hacía uso intensivo de la misma. Esto me llevó a una buena investigación y luego a escribir un poco sobre el tema y a dar algún seminario al respecto. De esa época me he quedado suscripto a algunos Feeds de la gente encargada de este tópico dentro del equipo del CLR. Hoy he leído un post de Maoni que me ha parecido muy importante para todos aquellos que estén interesados en el tema, preocupados por issues de performance de sus aplicaciones o simplemente quieren conocer algunos tips sobre memoria. De hecho, su blog es un buen lugar para sacarse cualquier duda.&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#000000" size=2&gt; &lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#000000" size=2&gt;Artículo: &lt;/font&gt;&lt;a href="http://blogs.msdn.com/maoni/archive/2006/09/01/734880.aspx"&gt;&lt;u&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#800080" size=2&gt;http://blogs.msdn.com/maoni/archive/2006/09/01/734880.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Cosas+que+se+deben+saber+sobre+la+memoria+y+el+CLR&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!719.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!719.entry</guid><pubDate>Fri, 15 Sep 2006 09:32:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!719/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!719.entry#comment</wfw:comment><dcterms:modified>2006-09-15T09:32:08Z</dcterms:modified></item><item><title>Scrum para Visual Studio Team System</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!644.entry</link><description>&lt;div&gt;&lt;img src="http://img330.imageshack.us/img330/2108/scrumlogo6qm.gif"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;En la siguiente página podrán encontrar un add-in gratis para trabajar con la metodogía ágil de Scrum desde Visual Studio Team System.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://scrumforteamsystem.com/en/default.aspx"&gt;http://scrumforteamsystem.com/en/default.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Scrum+para+Visual+Studio+Team+System&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!644.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!644.entry</guid><pubDate>Tue, 09 May 2006 13:00:15 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!644/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!644.entry#comment</wfw:comment><dcterms:modified>2006-05-09T13:00:15Z</dcterms:modified></item><item><title>ConditionalAttribute: Cómo compilar métodos condicionalmente utilizando atributos</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!631.entry</link><description>&lt;h2&gt;Introducción&lt;/h2&gt;
&lt;div&gt;La compilación condicional es útil en varios casos y significa que partes del código son incluidas o no dentro de la compilación dependiendo de ciertas condiciones. Puede ser utilizada para incluir código bajo condiciones de debugging que luego al compilarse en modo Release no debe ser incluido en el ejecutable o librería; o puede ser utilizado en algunos escenarios para compilar código dependiente de la plataforma, etc.&lt;/div&gt;
&lt;div&gt;La mayoría de los lenguajes (incluidos c# y VB.Net) tradicionalmente utilizan directivas del preprocesador para este fin, en este post veremos cómo realizar lo mismo con atributos.&lt;/div&gt;
&lt;h2&gt;Ejemplo &lt;/h2&gt;
&lt;h3&gt;Tracer Class&lt;/h3&gt;
&lt;p&gt;Esta clase sólo contiene un método, el cual es estático y posee el atributo&lt;em&gt; &amp;quot;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfconditional.asp"&gt;ConditionalAttribute&lt;/a&gt;&amp;quot;, &lt;/em&gt;el cual le indica al compilador que debe incluir la definición del método solo si está definido (con el la directiva&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfdefine.asp"&gt; #define&lt;/a&gt;, o utilizando las opciones de compilación) el símbolo que tiene por nombre la cadena pasada por parámetros al constructor del atributo.
&lt;div&gt; &lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; System;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; System.Collections.Generic;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; System.Text;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; ConditionalAttribute&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt; &lt;span style="color:teal"&gt;Tracer&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;[System.Diagnostics.&lt;span style="color:teal"&gt;Conditional&lt;/span&gt;(&lt;span style="color:maroon"&gt;&amp;quot;TRACER_ON&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; WriteConsole(&lt;span style="color:blue"&gt;string&lt;/span&gt; message)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;            &lt;/span&gt;System.&lt;span style="color:teal"&gt;Console&lt;/span&gt;.WriteLine(message);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;div&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;/span&gt; &lt;/div&gt;
&lt;h3&gt;Program Class&lt;/h3&gt;
&lt;p&gt;Esta clase tiene el punto de entrada del programa (función main).
&lt;div&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;/span&gt; &lt;/div&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;#define&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; TRACER_ON&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; System;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; System.Collections.Generic;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; System.Text;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; ConditionalAttribute&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt; &lt;span style="color:teal"&gt;Program&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;{&lt;/span&gt;&lt;/font&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:green"&gt;//utilizando atributos&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:maroon"&gt;&amp;quot;Esta línea ha sido escrita directamente&amp;quot;&lt;/span&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:teal"&gt;Tracer&lt;/span&gt;.WriteConsole(&lt;span style="color:maroon"&gt;&amp;quot;Esta línea ha sido escrita a través de la clase Tracer&amp;quot;&lt;/span&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:green"&gt;//utilizando directivas&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;#if&lt;/span&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt; TRACER_ON&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color:teal"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:maroon"&gt;&amp;quot;TRACE_ON está definido&amp;quot;&lt;/span&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;#else&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;color:gray;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;            &lt;/span&gt;Console.WriteLine(&amp;quot;TRACE_ON no está definido&amp;quot;);&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;#endif&lt;/span&gt;
&lt;p&gt;&lt;span lang=ES-AR style="font-size:10pt;color:blue;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;span lang=ES-AR style="font-size:10pt;font-family:'Courier New'"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:teal;font-family:'Courier New'"&gt;Console&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;.Read();&lt;/span&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;}&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;/span&gt; 
&lt;h2&gt;&lt;/h2&gt;&lt;/span&gt;Resultado
&lt;p&gt; 
&lt;p&gt;Salida del programa cuando se encuentra definido el símbolo TRACE_ON:
&lt;p&gt; 
&lt;p&gt;&lt;img src="http://img163.imageshack.us/img163/8762/traceron8cv.jpg"&gt;
&lt;p&gt; 
&lt;p&gt;Salida del programa cuando no se encuentra definido el símbolo TRACE_ON
&lt;p&gt; 
&lt;p&gt;&lt;img src="http://img163.imageshack.us/img163/2268/traceroff9df.jpg"&gt;
&lt;p&gt; 
&lt;h2&gt;Internals&lt;/h2&gt;
&lt;p&gt;Debajo se encuentra detallado el código MSIL de la función main, primero compilado con el símbolo TRACE_ON y el segundo sin él. 
&lt;h3&gt;TRACE_ON definido&lt;/h3&gt;
&lt;p&gt;&lt;font style="background-color:#ccffcc" face="Courier New, Courier, Monospace"&gt;.&lt;/font&gt;&lt;font style="background-color:#ccffcc" face="Tahoma,Helvetica,Sans-Serif"&gt;method private hidebysig static void  Main(string[] args) cil managed&lt;br&gt;{&lt;br&gt;  .entrypoint&lt;br&gt;  // Code size       41 (0x29)&lt;br&gt;  .maxstack  8&lt;br&gt;  IL_0000:  nop&lt;br&gt;  IL_0001:  ldstr      bytearray (45 00 73 00 74 00 61 00 20 00 6C 00 ED 00 6E 00   // E.s.t.a. .l...n.&lt;br&gt;                                  65 00 61 00 20 00 68 00 61 00 20 00 73 00 69 00   // e.a. .h.a. .s.i.&lt;br&gt;                                  64 00 6F 00 20 00 65 00 73 00 63 00 72 00 69 00   // d.o. .e.s.c.r.i.&lt;br&gt;                                  74 00 61 00 20 00 64 00 69 00 72 00 65 00 63 00   // t.a. .d.i.r.e.c.&lt;br&gt;                                  74 00 61 00 6D 00 65 00 6E 00 74 00 65 00 )       // t.a.m.e.n.t.e.&lt;br&gt;  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)&lt;br&gt;  IL_000b:  nop&lt;br&gt;  IL_000c:  ldstr      bytearray (45 00 73 00 74 00 61 00 20 00 6C 00 ED 00 6E 00   // E.s.t.a. .l...n.&lt;br&gt;                                  65 00 61 00 20 00 68 00 61 00 20 00 73 00 69 00   // e.a. .h.a. .s.i.&lt;br&gt;                                  64 00 6F 00 20 00 65 00 73 00 63 00 72 00 69 00   // d.o. .e.s.c.r.i.&lt;br&gt;                                  74 00 61 00 20 00 61 00 20 00 74 00 72 00 61 00   // t.a. .a. .t.r.a.&lt;br&gt;                                  76 00 E9 00 73 00 20 00 64 00 65 00 20 00 6C 00   // v...s. .d.e. .l.&lt;br&gt;                                  61 00 20 00 63 00 6C 00 61 00 73 00 65 00 20 00   // a. .c.l.a.s.e. .&lt;br&gt;                                  54 00 72 00 61 00 63 00 65 00 72 00 )             // T.r.a.c.e.r.&lt;br&gt; &lt;strong&gt;&lt;font color="#ff0000"&gt; IL_0011:  call       void ConditionalAttribute.Tracer::WriteConsole(string)&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;  IL_0016:  nop&lt;br&gt;  IL_0017:  ldstr      bytearray (54 00 52 00 41 00 43 00 45 00 5F 00 4F 00 4E 00   // T.R.A.C.E._.O.N.&lt;br&gt;                                  20 00 65 00 73 00 74 00 E1 00 20 00 64 00 65 00   //  .e.s.t... .d.e.&lt;br&gt;                                  66 00 69 00 6E 00 69 00 64 00 6F 00 )             // f.i.n.i.d.o.&lt;br&gt;  IL_001c:  call       void [mscorlib]System.Console::WriteLine(string)&lt;br&gt;  IL_0021:  nop&lt;br&gt;  IL_0022:  call       int32 [mscorlib]System.Console::Read()&lt;br&gt;  IL_0027:  pop&lt;br&gt;  IL_0028:  ret&lt;br&gt;} // end of method Program::Main&lt;/font&gt;
&lt;p&gt;&lt;font style="background-color:#ccffcc" face="Tahoma,Helvetica,Sans-Serif"&gt;&lt;br&gt; &lt;/font&gt;
&lt;h3&gt;TRACE_ON no definido&lt;/h3&gt;
&lt;p&gt;&lt;font style="background-color:#ccffcc"&gt;.method private hidebysig static void  Main(string[] args) cil managed&lt;br&gt;{&lt;br&gt;  .entrypoint&lt;br&gt;  // Code size       30 (0x1e)&lt;br&gt;  .maxstack  8&lt;br&gt;  IL_0000:  nop&lt;br&gt;  IL_0001:  ldstr      bytearray (45 00 73 00 74 00 61 00 20 00 6C 00 ED 00 6E 00   // E.s.t.a. .l...n.&lt;br&gt;                                  65 00 61 00 20 00 68 00 61 00 20 00 73 00 69 00   // e.a. .h.a. .s.i.&lt;br&gt;                                  64 00 6F 00 20 00 65 00 73 00 63 00 72 00 69 00   // d.o. .e.s.c.r.i.&lt;br&gt;                                  74 00 61 00 20 00 64 00 69 00 72 00 65 00 63 00   // t.a. .d.i.r.e.c.&lt;br&gt;                                  74 00 61 00 6D 00 65 00 6E 00 74 00 65 00 )       // t.a.m.e.n.t.e.&lt;br&gt;  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)&lt;br&gt;  IL_000b:  nop&lt;br&gt;  IL_000c:  ldstr      bytearray (54 00 52 00 41 00 43 00 45 00 5F 00 4F 00 4E 00   // T.R.A.C.E._.O.N.&lt;br&gt;                                  20 00 6E 00 6F 00 20 00 65 00 73 00 74 00 E1 00   //  .n.o. .e.s.t...&lt;br&gt;                                  20 00 64 00 65 00 66 00 69 00 6E 00 69 00 64 00   //  .d.e.f.i.n.i.d.&lt;br&gt;                                  6F 00 )                                           // o.&lt;br&gt;  IL_0011:  call       void [mscorlib]System.Console::WriteLine(string)&lt;br&gt;  IL_0016:  nop&lt;br&gt;  IL_0017:  call       int32 [mscorlib]System.Console::Read()&lt;br&gt;  IL_001c:  pop&lt;br&gt;  IL_001d:  ret&lt;br&gt;} // end of method Program::Main&lt;/font&gt;
&lt;p&gt; 
&lt;p&gt;Como podemos observar cuando aplicamos el atributo a un método el compilador quita todas las llamadas al mismo si no se encuentra definido el símbolo al que hace referencia. Este es un método de cero impacto dado que las líneas directamente no se incluyen en el resultado compilado.
&lt;p&gt;El resultado de utilizar las directivas del preprocesador o el atributo es similar pero con los atributos podemos ahorrarnos varias líneas de código y hacer todo de forma más simple.
&lt;p&gt; 
&lt;p&gt;&lt;a href="http://www.filelodge.com/files/hdd4/82664/Blog/ConditionalAttribute.zip"&gt;Download&lt;/a&gt;
&lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+ConditionalAttribute%3a+C%c3%b3mo+compilar+m%c3%a9todos+condicionalmente+utilizando+atributos&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!631.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!631.entry</guid><pubDate>Tue, 28 Feb 2006 18:55:42 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!631/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!631.entry#comment</wfw:comment><dcterms:modified>2006-02-28T18:55:42Z</dcterms:modified></item><item><title>Firmar la Enterprise Library 2.0 con strong name</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!624.entry</link><description>&lt;div&gt;Para utilizar la EntLib 2.0 en proyectos que necesitan tener strong name todos los componentes de la misma deben estar firmados también. Aquí les nombro unos pasos sacados del blog de &lt;a href="http://blogs.msdn.com/tomholl/archive/2005/12/02/499529.aspx"&gt;Tom Hollander&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;1- Abra el Command Prompt de VS2005&lt;/div&gt;
&lt;div&gt;2- Use la utilidad &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfstrongnameutilitysnexe.asp"&gt;sn.exe &lt;/a&gt;con el parámetro -k para crear el archivo snk      [sn -k keyfile.snk]&lt;/div&gt;
&lt;div&gt;3- Use el sn.exe con el parámetro -p para crear un archivo con la clave pública      [sn -p keyfile.snk publickey.pk]&lt;/div&gt;
&lt;div&gt;4- Use el sn.exe con el parámetro -tp para mostrar la clave pública    [sn -tp publickey.pk] &lt;/div&gt;
&lt;div&gt;5- Asígnele el archivo snk a todos los proyectos de la Enterprise Library. Puede usar la utilidad del post anterior para este fin: &lt;a href="http://spaces.msn.com/misopiniones/blog/cns!2737DC89A4AAB26B!623.entry"&gt;MultiAssemblySigner&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;6- Abrir la EntLib con VS2005 (hacer los mismos pasos con los Tests)&lt;/div&gt;
&lt;div&gt;7- Usar Edit &amp;gt; Find and Replace &amp;gt; Find in Files&lt;/div&gt;
&lt;div&gt;8- Buscar el atributo &amp;quot;InternalsVisibleTo&amp;quot; (&lt;a href="http://msdn2.microsoft.com/en-us/library(d=robot)/system.runtime.compilerservices.internalsvisibletoattribute.aspx"&gt;msdn2&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt;9- Para cada ocurrencia del atributo se debe agregar la clave pública generada con anterioridad, dado que ahora los assemblies que se intenta referenciar con el atributo tienen strong name, por ej:&lt;/div&gt;
&lt;div&gt;&lt;font color="#ff0000"&gt;[assembly: InternalsVisibleTo(&amp;quot;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Tests&amp;quot;)] &lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Pasa a ser:&lt;/div&gt;
&lt;div&gt;&lt;font color="#339966"&gt;[assembly: InternalsVisibleTo(&amp;quot;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Tests, PublicKey=002400000480..............&amp;quot;)]&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;Prometo que si tengo algo más de tiempo le agrego la funcionalidad de reemplazo de los nombres de los assemblies al MultiAssemblySigner así la pueden firmar de un solo paso ;-)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Firmar+la+Enterprise+Library+2.0+con+strong+name&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!624.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!624.entry</guid><pubDate>Wed, 22 Feb 2006 18:47:35 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!624/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!624.entry#comment</wfw:comment><dcterms:modified>2006-02-22T18:47:35Z</dcterms:modified></item><item><title>Firmar con strong name múltiples assemblies</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!623.entry</link><description>&lt;div&gt;Este pequeño desarrollo nació para solucionar la necesidad de firmar con strong name la EntLib 2.0. Uno de los requerimientos es realizar un sign con strong name a todos los proyectos. Este pequeño ejecutable trabaja en forma recursiva y se encarga de firmar todos los proyectos con un archivo snk que designemos.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;p&gt;&lt;img style="width:554px;height:120px" height=129 src="http://img58.imageshack.us/img58/443/multiassemblysigner9dz.jpg" width=541&gt;
&lt;p&gt; 
&lt;p&gt;Solo es necesario indicarle el directorio por el que empezará la búsqueda, si ésta será recursiva y el archivo .snk que se utilizará para la firma.
&lt;p&gt; 
&lt;p&gt;&lt;a href="http://www.filelodge.com/files/hdd4/82664/Blog/MultiAssemblySigner.zip"&gt;MultiAssemblySigner.zip&lt;/a&gt;
&lt;p&gt;G&lt;a href="http://www.statcounter.com/"&gt;&lt;font color="#000000"&gt;&lt;img src="http://c7.statcounter.com/counter.php?sc_project=749376&amp;amp;java=0&amp;amp;security=8e91bdf9" border=0&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt;B&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=2825969774929556075&amp;page=RSS%3a+Firmar+con+strong+name+m%c3%baltiples+assemblies&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=misopiniones.spaces.live.com&amp;amp;GT1=misopiniones"&gt;</description><comments>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!623.entry#comment</comments><guid isPermaLink="true">http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!623.entry</guid><pubDate>Wed, 22 Feb 2006 15:27:32 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://misopiniones.spaces.live.com/blog/cns!2737DC89A4AAB26B!623/comments/feed.rss</wfw:commentRss><wfw:comment>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!623.entry#comment</wfw:comment><dcterms:modified>2006-02-22T16:01:56Z</dcterms:modified></item><item><title>Visual Basic 9: Inicializadores de objetos y colecciones</title><link>http://misopiniones.spaces.live.com/Blog/cns!2737DC89A4AAB26B!593.entry</link><description>&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;Siguiendo con los post referidos al próximo VB9 (estoy siguiendo un overview que se instala con el CTP que mencioné en los artículos anteriores) ahora quiero hacer mención de una característica muy simple pero útil: la posibilidad de inicializar un objeto durante su creación, sin necesidad de que todas las propiedades que querramos setear estén en algún constructor.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;Como vemos en el ejemplo siguiente, cuando deseamos inicializar una clase podemos utilizar el clásico constructor, o setear luego de la declaración una por una las propiedades (podemos ahorrarnos algo de código con el viejo y querido With). Ahora con el nuevo VB9 existe la posibilidad de darle valor a las propiedades de objeto que estamos creando en una sola sentencia.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;Veamos el siguiente código:&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:green"&gt;'NUEVO!: Inicializadores&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Dim&lt;/span&gt; personaInitializadores &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Persona { _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Altura := 1.77, _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Apellido := &lt;span style="color:maroon"&gt;&amp;quot;Gomez&amp;quot;&lt;/span&gt;, _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;FechaNacimiento := &lt;span style="color:blue"&gt;New&lt;/span&gt; &lt;span style="color:blue"&gt;Date&lt;/span&gt;(1979, 10, 14), _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Nombre := &lt;span style="color:maroon"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;, _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Peso := 81}&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;En este caso estamos creando un objeto Persona y entre llaves &lt;strong&gt;{ }&lt;/strong&gt; , usando el nombre de la propiedad y el operador&lt;strong&gt; :=&lt;/strong&gt; seteamos un valor inicial de cada una de ellas. La sintaxis es una mezcla entre la que se utiliza para inicializar arrays y para setear las propiedades de un atributo que no se encuentran disponibles en el constructor.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;&lt;/font&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face=Arial size=2&gt;&lt;strong&gt;Ejemplo completo:&lt;/strong&gt;&lt;/font&gt;  &lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;Sub&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; Main()&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:green"&gt;'Constructor&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Dim&lt;/span&gt; personaConstructor &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Persona(&lt;span style="color:maroon"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;, &lt;span style="color:maroon"&gt;&amp;quot;Gomez&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;New&lt;/span&gt; &lt;span style="color:blue"&gt;Date&lt;/span&gt;(1979, 10, 14), 1.77, 81)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:green"&gt;'With&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Dim&lt;/span&gt; personaWith &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Persona&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;With&lt;/span&gt; personaWith&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;.Altura = 1.77&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;.Apellido = &lt;span style="color:maroon"&gt;&amp;quot;Gomez&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;.FechaNacimiento = &lt;span style="color:blue"&gt;New&lt;/span&gt; &lt;span style="color:blue"&gt;Date&lt;/span&gt;(1979, 10, 14)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;.Nombre = &lt;span style="color:maroon"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;.Peso = 81&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;With&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:green"&gt;'NUEVO!: Inicializadores&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Dim&lt;/span&gt; personaInitializadores &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Persona { _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Altura := 1.77, _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Apellido := &lt;span style="color:maroon"&gt;&amp;quot;Gomez&amp;quot;&lt;/span&gt;, _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;FechaNacimiento := &lt;span style="color:blue"&gt;New&lt;/span&gt; &lt;span style="color:blue"&gt;Date&lt;/span&gt;(1979, 10, 14), _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Nombre := &lt;span style="color:maroon"&gt;&amp;quot;Juan&amp;quot;&lt;/span&gt;, _&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;Peso := 81}&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;System.Console.WriteLine(personaConstructor.ToString())&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;System.Console.WriteLine(personaWith.ToString())&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;System.Console.WriteLine(personaInitializadores.ToString())&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;System.Console.ReadLine()&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;End&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;span style="color:blue"&gt;&lt;font face="Courier New"&gt;Sub&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;font color="#0000ff" size=2&gt;&lt;/font&gt;&lt;span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;&lt;/span&gt; 
&lt;div&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt;Public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;font face="Courier New"&gt;&lt;span style="color:blue"&gt;Class&lt;/span&gt; Persona&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Private&lt;/span&gt; _Nombre &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;String&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Private&lt;/span&gt; _Apellido &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;String&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Private&lt;/span&gt; _FechaNacimiento &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Date&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Private&lt;/span&gt; _Altura &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Single&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Private&lt;/span&gt; _Peso &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Single&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Public&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt;()&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New'"&gt; &lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;Public&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt;(&lt;span style="color:blue"&gt;ByVal&lt;/span&gt; Nombre &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;String&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; apellido &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;String&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; FechaNacimiento &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Date&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; Altura &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Single&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; peso &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Single&lt;/span&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;_Nombre = Nombre&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;_Apellido = apellido&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;_FechaNacimiento = FechaNacimiento&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;_Altura = Altura&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&gt;&lt;font face="Courier New"&gt;&lt;span style=""&gt;        &lt;/span&gt;_Peso = peso&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:'Courier New'"&