<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">José Fortes @ Geeks</title><subtitle type="html" /><id>http://geeks.ms/blogs/jfortes/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.ms/blogs/jfortes/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.ms/blogs/jfortes/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2008-10-27T08:36:00Z</updated><entry><title>[Evento] TenerifeDev: Windows Phone Roadshow 2011</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2011/11/16/evento-windows-phone-roadshow-2011-en-tenerife.aspx" /><id>/blogs/jfortes/archive/2011/11/16/evento-windows-phone-roadshow-2011-en-tenerife.aspx</id><published>2011-11-16T20:12:00Z</published><updated>2011-11-16T20:12:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/Windows_2D00_Phone_2D00_Roadshow_5F00_51285F75.jpg"&gt;&lt;img height="159" width="534" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/Windows_2D00_Phone_2D00_Roadshow_5F00_thumb_5F00_4E9F2DB7.jpg" alt="Windows Phone Roadshow" border="0" title="Windows Phone Roadshow" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;El pr&amp;oacute;ximo 26 de noviembre tenemos un evento muy interesante en Tenerife, se trata del &lt;a target="_blank" href="http://msdn.microsoft.com/es-es/windowsphone/hh475625?ocid=eml-n-es-loc-WP7-Roadshow"&gt;Windows Phone Roadshow 2011&lt;/a&gt;, que gracias al inter&amp;eacute;s y colaboraci&amp;oacute;n de &lt;a target="_blank" href="http://www.microsoft.com/es-es/default.aspx"&gt;Microsoft&lt;/a&gt;, &lt;a target="_blank" href="http://www.intelequia.com/"&gt;Intelequia&lt;/a&gt;, &lt;a target="_blank" href="http://www.plainconcepts.com/"&gt;Plain Concepts&lt;/a&gt;, &lt;a target="_blank" href="http://www.sdmprogramas.com/"&gt;SDM Programas&lt;/a&gt;, &lt;a target="_blank" href="http://geeks.ms/blogs/jyeray"&gt;Josu&amp;eacute; Yeray&lt;/a&gt; (un natural de la casa), &lt;a target="_blank" href="http://geeks.ms/blogs/rserna/"&gt;Rafael Serna&lt;/a&gt; y la &lt;a target="_blank" href="http://www.ull.es/"&gt;Universidad de La Laguna&lt;/a&gt; podr&amp;aacute; celebrarse este a&amp;ntilde;o en Tenerife de la mano de &lt;a target="_blank" href="http://www.tenerifedev.com"&gt;TenerifeDev&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;En esta jornada se presentar&amp;aacute;n las &amp;uacute;ltimas novedades del sistema operativo para m&amp;oacute;viles de Microsoft, Windows Phone 7.5 Mango, por lo que tanto desarrolladores, profesionales de las TICs, estudiantes y entusiastas de la tecnolog&amp;iacute;a en general no tienen excusa para perd&amp;eacute;rselo. &lt;/p&gt;
&lt;p align="justify"&gt;Adem&amp;aacute;s, a lo mejor incluso pueden llevarse un Windows Phone puesto, no s&amp;oacute;lo verlo en las presentaciones, qui&amp;eacute;n sabe, con lo que mejor no perd&amp;eacute;rselo &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/wlEmoticon_2D00_smile_5F00_0CB84869.png" alt="Sonrisa" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Nuestro compa&amp;ntilde;ero de &lt;a target="_blank" href="http://www.tenerifedev.com"&gt;TenerifeDev&lt;/a&gt;, &lt;a target="_blank" href="http://geeks.ms/blogs/adiazmartin/"&gt;Alberto D&amp;iacute;az&lt;/a&gt;, estar&amp;aacute; tambi&amp;eacute;n dando una de las charlas del evento, cuya agenda completa y registro pod&amp;eacute;is encontrar &lt;a target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032499102&amp;amp;Culture=es-ES"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;Os esperamos el pr&amp;oacute;ximo d&amp;iacute;a 26!&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/Windows_2D00_Phone_2D00_Nokia_2D00_Developer_5F00_78911836.jpg"&gt;&lt;img height="63" width="530" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/Windows_2D00_Phone_2D00_Nokia_2D00_Developer_5F00_thumb_5F00_6135EDF8.jpg" alt="Windows Phone Nokia Developer" border="0" title="Windows Phone Nokia Developer" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TenerifeDev_5F00_230CAD7A.jpg"&gt;&lt;img height="153" width="530" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TenerifeDev_5F00_thumb_5F00_2F6AAAD6.jpg" alt="TenerifeDev" border="0" title="TenerifeDev" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201717" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Windows Phone 7" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Phone+7/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /><category term="TenerifeDev" scheme="http://geeks.ms/blogs/jfortes/archive/tags/TenerifeDev/default.aspx" /></entry><entry><title>[Evento] TenerifeDev: Desarrollo de aplicaciones web en la nube</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2011/10/06/evento-tenerifedev-desarrollo-de-aplicaciones-web-en-la-nube.aspx" /><id>/blogs/jfortes/archive/2011/10/06/evento-tenerifedev-desarrollo-de-aplicaciones-web-en-la-nube.aspx</id><published>2011-10-06T21:50:00Z</published><updated>2011-10-06T21:50:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoTenerifeDev_5F00_thumb1_5F00_7874FA81.jpg"&gt;&lt;img height="53" width="240" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoTenerifeDev_5F00_thumb1_5F00_thumb_5F00_16DF3B6B.jpg" alt="LogoTenerifeDev_thumb1" border="0" title="LogoTenerifeDev_thumb1" style="background-image:none;border-bottom:0px;border-left:0px;margin:10px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;En &lt;a target="_blank" href="http://www.tenerifedev.com"&gt;TenerifeDev&lt;/a&gt; comenzamos la nueva temporada de eventos ahondando en una de las tendencias m&amp;aacute;s importantes en el mundo del desarrollo actual y a la que ya &lt;a target="_blank" href="http://www.tenerifedev.com/MaterialesEventos/Dic2010AzureyPhone7.aspx"&gt;hemos dedicado alguna charla&lt;/a&gt;: el Cloud Computing en general y Windows Azure en particular. &lt;/p&gt;
&lt;p align="justify"&gt;En esta ocasi&amp;oacute;n, &lt;a target="_blank" href="http://geeks.ms/blogs/davidjrh/"&gt;David Rodr&amp;iacute;guez&lt;/a&gt; se adentrar&amp;aacute; y nos mostrar&amp;aacute; aspectos bastante t&amp;eacute;cnicos, explic&amp;aacute;ndonos c&amp;oacute;mo desarrollar aplicaciones web con DotNetNuke sobre Windows Azure. David repasar&amp;aacute; las principales novedades de DNN 6.0, as&amp;iacute; como nos explicar&amp;aacute; c&amp;oacute;mo desarrollar extensiones para DNN con Visual Studio 2010, desplegarlas en Azure y alguna sorpresa m&amp;aacute;s. &lt;/p&gt;
&lt;p align="justify"&gt;No est&amp;aacute; de m&amp;aacute;s recordar que los asistentes al evento participar&amp;aacute;n en el sorteo de regalos de nuestros patrocinadores, como las licencias de Telerik para su suite de controles ASP.NET y WP7 que regalamos en la &amp;uacute;ltima charla o el mes completo de regalo para todos los cursos de Pluralsight con que tambi&amp;eacute;n obsequiamos a todos los asistentes. Est&amp;aacute; la cosa como para no perd&amp;eacute;rsela &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/wlEmoticon_2D00_smile_5F00_5C83C589.png" alt="Sonrisa" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;A continuaci&amp;oacute;n los detalles sobre el evento:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Evento TenerifeDev - Desarrollando aplicaciones web en la nube &lt;br /&gt;Fecha y hora&lt;/strong&gt;: 7 de octubre de 2011, de 16:00 a 17:30 &lt;br /&gt;&lt;strong&gt;Lugar&lt;/strong&gt;: Sal&amp;oacute;n de Grados de la Escuela T&amp;eacute;cnica Superior de Ingenier&amp;iacute;a Inform&amp;aacute;tica (ETSII) de la Universidad de la Laguna &lt;br /&gt;&lt;strong&gt;Descripci&amp;oacute;n&lt;/strong&gt;: DotNetNuke es un proyecto open source, la plaforma de gesti&amp;oacute;n de contenidos para la construcci&amp;oacute;n de sitios y aplicaciones web basada en Microsoft .NET m&amp;aacute;s ampliamente adoptada a nivel global. Las organizaciones usan DotNetNuke para desarrollar y desplegar r&amp;aacute;pidamente sitios web interactivos y din&amp;aacute;micos, intranets, extranets y aplicaciones web. Con el soporte para granjas de servidores y el DotNetNuke Azure Accelerator, se presenta sobre Windows Azure como una soluci&amp;oacute;n de gesti&amp;oacute;n el&amp;aacute;stica de contenidos en la nube. &lt;br /&gt;&lt;strong&gt;Ponente&lt;/strong&gt;: &lt;a href="http://davidjrh.intelequia.com"&gt;David Rodr&amp;iacute;guez&lt;/a&gt;&lt;/p&gt;
&lt;p style="color:red;"&gt;&lt;strong&gt;Update:&lt;/strong&gt; El evento se adelanta a las 16:00 y ser&amp;aacute; tambi&amp;eacute;n retransmitido&amp;nbsp;por webcast. Puedes registrarte aqu&amp;iacute;: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032496233&amp;amp;Culture=es-ES"&gt;&lt;span style="color:#0065e2;"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032496233&amp;amp;Culture=es-ES&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200914" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Cloud Computing" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Cloud+Computing/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Azure/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /><category term="TenerifeDev" scheme="http://geeks.ms/blogs/jfortes/archive/tags/TenerifeDev/default.aspx" /></entry><entry><title>[Evento] TenerifeDev: Office 365. Súbete a la nube.</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2011/05/11/evento-tenerifedev-office-365-s-250-bete-a-la-nube.aspx" /><id>/blogs/jfortes/archive/2011/05/11/evento-tenerifedev-office-365-s-250-bete-a-la-nube.aspx</id><published>2011-05-11T22:08:00Z</published><updated>2011-05-11T22:08:00Z</updated><content type="html">&lt;p&gt;Como ya sab&amp;eacute;is, recientemente se ha publicado la &lt;a target="_blank" href="http://www.microsoft.com/es-es/office365/online-software.aspx"&gt;Beta de Office 365&lt;/a&gt;, la nueva versi&amp;oacute;n de la suite de productividad de Microsoft en la nube.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/Office_2D00_365_2D00_TenerifeDev_5F00_29D53D5A.jpg"&gt;&lt;img height="179" width="382" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/Office_2D00_365_2D00_TenerifeDev_5F00_thumb_5F00_0DE40862.jpg" alt="Office 365 TenerifeDev" border="0" title="Office 365 TenerifeDev" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para contaros las novedades que trae esta nueva versi&amp;oacute;n, en &lt;a target="_blank" href="http://www.tenerifedev.com"&gt;TenerifeDev&lt;/a&gt; hemos organizado un evento este pr&amp;oacute;ximo viernes 13 de mayo y en &amp;eacute;l, Alberto D&amp;iacute;az, MVP de Sharepoint, se encargar&amp;aacute; de mostrar en detalle tanto la suite en su conjunto como sus diferentes productos. &lt;/p&gt;
&lt;p&gt;Con el crecimiento espectacular y la importancia estrat&amp;eacute;gica que est&amp;aacute; teniendo y va a tener el Cloud Computing, si quieres informarte de lo interesante que puede ser esta soluci&amp;oacute;n SaaS para todo tipo de empresas, peque&amp;ntilde;as o grandes, y quieres conocer cu&amp;aacute;l es la oferta de productividad de Microsoft en la nube reci&amp;eacute;n salida la Beta, est&amp;aacute;s invitado. &lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s, en esta ocasi&amp;oacute;n en TenerifeDev hemos querido dar un paso m&amp;aacute;s y, aparte de poder asistir al evento presencialmente, podr&amp;eacute;is verlo tambi&amp;eacute;n en directo v&amp;iacute;a Webcast. &lt;/p&gt;
&lt;p&gt;M&amp;aacute;s informaci&amp;oacute;n y registro &lt;a target="_blank" href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032485434&amp;amp;EventCategory=4&amp;amp;culture=es-ES&amp;amp;CountryCode=ES"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoTenerifeDev_5F00_thumb_5F00_0DC8861E_5F00_44DDE69B.jpg"&gt;&lt;img height="48" width="204" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoTenerifeDev_5F00_thumb_5F00_0DC8861E_5F00_thumb_5F00_6A6763FC.jpg" alt="LogoTenerifeDev_thumb_0DC8861E" border="0" title="LogoTenerifeDev_thumb_0DC8861E" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=194051" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Cloud Computing" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Cloud+Computing/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /></entry><entry><title>[Evento] TenerifeDev: MadeinLocal.com, la red social canaria en la web, en tu iPhone y en Android</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2011/02/03/evento-tenerifedev-madeinlocal-com-la-red-social-canaria-en-la-web-en-tu-iphone-y-en-android.aspx" /><id>/blogs/jfortes/archive/2011/02/03/evento-tenerifedev-madeinlocal-com-la-red-social-canaria-en-la-web-en-tu-iphone-y-en-android.aspx</id><published>2011-02-03T14:15:00Z</published><updated>2011-02-03T14:15:00Z</updated><content type="html">&lt;p align="justify"&gt;Tras la puesta de largo hace dos meses de TenerifeDev, el grupo de usuarios de Tenerife, y tras la excelente acogida del &lt;a target="_blank" href="http://geeks.ms/blogs/jfortes/archive/2010/12/21/evento-windows-phone-7-y-cloud-computing-con-azure-en-tenerife.aspx"&gt;primer evento&lt;/a&gt;, volvemos con un nuevo evento. &lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoTenerifeDev_5F00_29B9BB16.jpg"&gt;&lt;img height="44" width="200" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoTenerifeDev_5F00_thumb_5F00_0DC8861E.jpg" alt="LogoTenerifeDev" border="0" title="LogoTenerifeDev" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Esta vez centrado en la emprendedur&amp;iacute;a tecnol&amp;oacute;gica, con un ejemplo real y local: Madeinlocal.com, una red social que conecta al usuario con sus amigos y con lo mejor de la ciudad al mismo tiempo. Esta red social desarrollada por emprendedores canarios ha ganado numerosos premios internacionales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Premio de &lt;a target="_blank" href="http://www.24heures.ch/trouver-meilleur-bar-facebook-2010-01-22"&gt;Emprendedur&amp;iacute;a de la Escuela Hotelera de Lausanne&lt;/a&gt; (Suiza), una de las universidades de turismo con mayor prestigio y reconocimiento mundial Laussane 2010. &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;MD Business School, escuela de negocio suiza con el MBA m&amp;aacute;s importante de Europa, que le otorg&amp;oacute; el premio de &lt;a target="_blank" href="http://www.imd.ch/news/IMD-2010-Startup-Competition-Winners.cfm"&gt;Start Up Competition&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;1&amp;ordm; Premio Tenerife Emprende I+D+i a Empresas de Base Tecnol&amp;oacute;gica Tenerife 2009.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a target="_blank" href="http://vpiv.epfl.ch/page33234-en.html"&gt;Premio &amp;quot;Innogrant&amp;quot;&lt;/a&gt; 2008, EPFL (Escuela Politecnica Federal de Lausana).&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Premio &lt;a target="_blank" href="http://venturekick.ch/"&gt;Venture Kick&lt;/a&gt; 2009.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&lt;a target="_blank" href="http://www.youtube.com/watch?v=SnIpTaZBEfA"&gt;Aqu&amp;iacute;&lt;/a&gt; podeis encontrar una entrevista en video en la que Manuel Acevedo, CEO de Madeinlocal.com, explica su funcionamiento.&lt;/p&gt;
&lt;p align="justify"&gt;El evento mostrar&amp;aacute; lo que es y c&amp;oacute;mo se ha creado Madeinlocal.com desde la &amp;oacute;ptica de la emprendedur&amp;iacute;a y tendr&amp;aacute; lugar el pr&amp;oacute;ximo d&amp;iacute;a 7 de febrero de 17:30 a 19:30. Ten&amp;eacute;is la informaci&amp;oacute;n detallada de la localizaci&amp;oacute;n y el formulario de registro &lt;a target="_blank" href="http://events.linkedin.com/MadeinLocal-com-la-red-social-canaria-en/pub/529574"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;Si quieres estar al tanto de lo que se cuece en esta red social, &amp;uacute;nete al grupo de &lt;a target="_blank" href="http://www.facebook.com/home.php#!/pages/Red-social-canaria-MadeinLocal-Tenerife/132632236761183"&gt;Madeinlocal.com en Facebook&lt;/a&gt; para seguir sus noticias y novedades.&lt;/p&gt;
&lt;p align="justify"&gt;Colaboran:&lt;/p&gt;
&lt;p align="center"&gt;&lt;span style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:medium &amp;#39;Times New Roman&amp;#39;;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span style="line-height:18px;font-family:&amp;#39;Trebuchet MS&amp;#39;, trebuchet, sans-serif;color:#444444;font-size:13px;"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoObraSocial_5F00_6F9AC869.png"&gt;&lt;img height="54" width="200" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoObraSocial_5F00_thumb_5F00_22F68BC6.png" alt="LogoObraSocial" border="0" title="LogoObraSocial" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoCeull_5F00_0849EFAD.jpg"&gt;&lt;img height="93" width="240" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/LogoCeull_5F00_thumb_5F00_58ABD120.jpg" alt="LogoCeull" border="0" title="LogoCeull" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;, trebuchet, sans-serif;color:#ffffff;font-size:x-small;"&gt;&lt;span style="line-height:18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=188371" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /><category term="TenerifeDev" scheme="http://geeks.ms/blogs/jfortes/archive/tags/TenerifeDev/default.aspx" /></entry><entry><title>[Evento] Windows Phone 7 y Cloud Computing con Azure en Tenerife</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2010/12/21/evento-windows-phone-7-y-cloud-computing-con-azure-en-tenerife.aspx" /><id>/blogs/jfortes/archive/2010/12/21/evento-windows-phone-7-y-cloud-computing-con-azure-en-tenerife.aspx</id><published>2010-12-21T19:42:00Z</published><updated>2010-12-21T19:42:00Z</updated><content type="html">&lt;p align="justify"&gt;La semana pasada estuve dando una charla en las primeras &lt;a target="_blank" href="http://ow.ly/3sKpq"&gt;Jornadas de Inserci&amp;oacute;n Laboral&lt;/a&gt; de la &lt;a target="_blank" href="http://www.ull.es/view/centros/etsii/Inicio/es"&gt;Escuela T&amp;eacute;cnica Superior de Ingenier&amp;iacute;a Inform&amp;aacute;tica&lt;/a&gt; de la Universidad de La Laguna, en Tenerife, y pude comprobar el inter&amp;eacute;s de los alumnos universitarios por el mundo profesional. &lt;/p&gt;
&lt;p align="justify"&gt;Hubo muy buena participaci&amp;oacute;n y creo que nos lo pasamos todos muy bien, ponentes y asistentes. Hasta quedaba gente el segundo d&amp;iacute;a cuando ya era de noche para la mesa redonda, y para eso hay que tener ganas&amp;hellip;&lt;/p&gt;
&lt;p align="justify"&gt;Una semana despu&amp;eacute;s estar&amp;eacute; otra vez en la universidad con unos amigos que l&amp;iacute;an a cualquiera muy r&amp;aacute;pido (&lt;a target="_blank" href="http://geeks.ms/blogs/adiazmartin"&gt;Alberto D&amp;iacute;az&lt;/a&gt;, &lt;a target="_blank" href="http://geeks.ms/blogs/jyeray/"&gt;Josu&amp;eacute; Yeray&lt;/a&gt; y &lt;a target="_blank" href="http://davidjrh.blogspot.com/"&gt;David Rodr&amp;iacute;guez&lt;/a&gt;) con otro evento. Esta vez ser&amp;aacute; sobre Windows Phone 7 y Windows Azure, dos de los mercados m&amp;aacute;s interesantes y que m&amp;aacute;s van a crecer en los pr&amp;oacute;ximos a&amp;ntilde;os: los smartphones y el Cloud Computing, en donde los grandes ya est&amp;aacute;n apostando fuerte.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;img src="http://blog.neuronaltraining.net/uploaded_images/windows_azure.gif" style="display:block;float:none;margin-left:auto;margin-right:auto;" alt="" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jyeray/winphone_5F00_thumb_5F00_60BFB8A5.jpg" alt="winphone" style="display:block;float:none;margin-left:auto;margin-right:auto;" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;No ha habido mucho m&amp;aacute;s margen para avisar porque se ha montado de un d&amp;iacute;a para otro. Habr&amp;aacute; charlas y demos. Si est&amp;aacute;s por Tenerife este 22 de diciembre te esperamos. Tienes m&amp;aacute;s informaci&amp;oacute;n y registro aqu&amp;iacute;: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032473610&amp;amp;Culture=es-ES"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032473610&amp;amp;Culture=es-ES&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=186226" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Cloud Computing" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Cloud+Computing/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Azure/default.aspx" /><category term="Windows Phone 7" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Phone+7/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /></entry><entry><title>Curso ASP.NET &amp; SQL Server 2ª Edición</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2010/11/03/curso-asp-net-amp-sql-server-2-170-edici-243-n.aspx" /><id>/blogs/jfortes/archive/2010/11/03/curso-asp-net-amp-sql-server-2-170-edici-243-n.aspx</id><published>2010-11-03T22:12:15Z</published><updated>2010-11-03T22:12:15Z</updated><content type="html">&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/curso_5F00_42D2A0EC.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top:0px;border-right:0px;padding-top:0px;" title="curso" border="0" alt="curso" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/curso_5F00_thumb_5F00_572840AA.jpg" width="525" height="100" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;La próxima semana comenzará la segunda edición del curso de desarrollo de aplicaciones web con ASP.NET &amp;amp; SQL Server en Tenerife. &lt;/p&gt;  &lt;p align="justify"&gt;El curso tendrá una duración de 50 horas y entrelaza los contenidos de ASP.NET con los de SQL Server con el objetivo de aportar la cohesión y visión de conjunto necesaria para desarrollar aplicaciones profesionales de forma completa.&lt;/p&gt;  &lt;p align="justify"&gt;Si estás en Tenerife entre el 8 y el 25 de noviembre, te invito a que compartas con nosotros esta formación. &lt;/p&gt;  &lt;p align="justify"&gt;Más información sobre contenidos, precio y gestión a través de la Fundación Tripartita &lt;a href="http://bit.ly/9e0tf4" target="_blank"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=184314" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author></entry><entry><title>Materiales de la charla sobre Cloud Computing y Azure</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2010/07/26/materiales-de-la-charla-sobre-cloud-computing-y-azure.aspx" /><id>/blogs/jfortes/archive/2010/07/26/materiales-de-la-charla-sobre-cloud-computing-y-azure.aspx</id><published>2010-07-26T19:40:00Z</published><updated>2010-07-26T19:40:00Z</updated><content type="html">&lt;p align="justify"&gt;El pasado domingo 25 concluyeron las charlas de &lt;a href="http://www.tenerife-lanparty.com/2k10/tlp-innova.html" target="_blank"&gt;TLP Innova 2k10&lt;/a&gt;, la parte profesional de la &lt;a href="http://www.tenerife-lanparty.com/2k10/" target="_blank"&gt;Tenerife Lan Party 2k10&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TLPInnova_5F00_269039F1.jpg"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="TLPInnova" alt="TLPInnova" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TLPInnova_5F00_thumb_5F00_24733B28.jpg" border="0" height="47" width="240" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;A lo largo del evento hubo un gran n&amp;uacute;mero y variedad de conferencias. Estuvimos por all&amp;iacute; y tuvimos la oportunidad de charlar sobre &lt;a href="http://geeks.ms/blogs/jfortes/archive/2010/07/19/evento-windows-azure-y-windows-phone-7-en-la-tenerife-lan-party.aspx" target="_blank"&gt;Cloud Computing con Windows Azure y sobre Windows Phone 7&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;Las charlas fueron bastante participativas y creo que todos lo pasamos bien. Gracias a los asistentes!&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://cid-9de0d448133a694d.office.live.com/view.aspx/.Public/TLP%20Innova%202k10/Windows%20Azure.ppsx" target="_blank"&gt;Aqu&amp;iacute;&lt;/a&gt; est&amp;aacute; la presentaci&amp;oacute;n de la charla de Cloud Computing con Windows Azure y &lt;a href="http://geeks.ms/blogs/adiazmartin/archive/2010/07/24/presentaci-243-n-windows-phone-7-tenerife-lan-party.aspx" target="_blank"&gt;aqu&amp;iacute;&lt;/a&gt; la presentaci&amp;oacute;n de Windows Phone 7.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179866" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Cloud Computing" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Cloud+Computing/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Azure/default.aspx" /><category term="Windows Phone 7" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Phone+7/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /></entry><entry><title>[Evento] Windows Azure y Windows Phone 7 en la Tenerife Lan Party</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2010/07/19/evento-windows-azure-y-windows-phone-7-en-la-tenerife-lan-party.aspx" /><id>/blogs/jfortes/archive/2010/07/19/evento-windows-azure-y-windows-phone-7-en-la-tenerife-lan-party.aspx</id><published>2010-07-19T20:59:00Z</published><updated>2010-07-19T20:59:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TLP2k10_5F00_57EA39FA.jpg"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="TLP2k10" alt="TLP2k10" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TLP2k10_5F00_thumb_5F00_3CD16AEC.jpg" border="0" height="68" width="244" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Esta semana estar&amp;eacute; con el amigo &lt;a href="http://geeks.ms/blogs/adiazmartin/default.aspx" target="_blank"&gt;Alberto D&amp;iacute;az&lt;/a&gt; dando unas charlas en la &lt;a href="http://www.tenerife-lanparty.com" target="_blank"&gt;Tenerife Lan Party&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;El pr&amp;oacute;ximo mi&amp;eacute;rcoles 21 a las 17:00 hablaremos sobre &lt;a href="http://www.tenerife-lanparty.com/2k10/tlp-innova/cursos-y-talleres/349-windows-azure.html" target="_blank"&gt;Cloud Computing y Windows Azure&lt;/a&gt;. Dos d&amp;iacute;as m&amp;aacute;s tarde, el viernes 23 a las 13:30 la charla ser&amp;aacute; sobre &lt;a href="http://www.tenerife-lanparty.com/2k10/tlp-innova/conferencias/348-windows-phone-7.html" target="_blank"&gt;Windows Phone 7&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TLPInnova_5F00_464A2962.jpg"&gt;&lt;img style="border-right-width:0px;margin:0px 0px 5px 15px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="TLPInnova" alt="TLPInnova" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/TLPInnova_5F00_thumb_5F00_7939B9C9.jpg" align="right" border="0" height="47" width="240" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Si vas por parte de tu empresa puedes solicitar una acreditaci&amp;oacute;n para tener entrada gratuita a la zona profesional mediante &lt;a href="http://www.tenerife-lanparty.com/2k10/tlp-innova/formularioacceso.html" target="_blank"&gt;este formulario&lt;/a&gt; de la web de la TLP 2k10. Si vas por libre puedes consultar los precios para el acceso como visitante a la zona profesional en &lt;a href="http://www.tenerife-lanparty.com" target="_blank"&gt;la web de la TLP&lt;/a&gt;. &lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/WindowsAzure_5F00_3752D47B.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="WindowsAzure" alt="WindowsAzure" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/WindowsAzure_5F00_thumb_5F00_75D82221.jpg" border="0" height="172" width="240" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/WP7_5F00_1F6BED55.jpg"&gt;&lt;img style="border-right-width:0px;margin:0px 0px 0px 40px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="WP7" alt="WP7" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/WP7_5F00_thumb_5F00_72768A79.jpg" border="0" height="143" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Nos vemos all&amp;iacute;!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179580" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Azure/default.aspx" /><category term="Windows Phone 7" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Windows+Phone+7/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Eventos/default.aspx" /></entry><entry><title>ASP.NET ViewState a fondo (I)</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2009/05/01/asp-net-viewstate-a-fondo-i.aspx" /><id>/blogs/jfortes/archive/2009/05/01/asp-net-viewstate-a-fondo-i.aspx</id><published>2009-05-01T20:01:00Z</published><updated>2009-05-01T20:01:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/BinaryBag_5F00_5006B77E.jpg"&gt;&lt;img height="244" width="184" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/BinaryBag_5F00_thumb_5F00_41E7C881.jpg" align="left" alt="BinaryBag" border="0" title="BinaryBag" style="border-right-width:0px;margin:0px 15px 5px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;El ViewState est&amp;aacute; presente en cualquier desarrollo con ASP.NET y puede ser un aliado o un enemigo. Para intentar que sea un aliado hay que conocerlo bien, saber c&amp;oacute;mo funciona y qu&amp;eacute; se puede hacer con &amp;eacute;l. &lt;/p&gt;
&lt;p&gt;Este es el primero de una serie de art&amp;iacute;culos en el que nos meteremos a fondo con el ViewState, desde por qu&amp;eacute; surge, qu&amp;eacute; es y c&amp;oacute;mo es su estructura (lo que veremos en este art&amp;iacute;culo), hasta qu&amp;eacute; cosas podemos hacer con &amp;eacute;l, que ya ver&amp;eacute;is que son unas cuantas y bastante interesantes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;ViewState: el comienzo&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;In the beginning, was the command line&amp;hellip; No, no nos remontaremos tan atr&amp;aacute;s, pero s&amp;iacute; vamos a mirar un poco al pasado del desarrollo web para ver por qu&amp;eacute; nace el ViewState. &lt;/p&gt;
&lt;p&gt;Las p&amp;aacute;ginas web son servidas a trav&amp;eacute;s del protocolo HTTP, el cual carece de informaci&amp;oacute;n de estado por razones intr&amp;iacute;nsecas a su dise&amp;ntilde;o. Esto significa que no guarda informaci&amp;oacute;n sobre la conexi&amp;oacute;n anterior que se ha hecho desde un cliente dado, aunque esta conexi&amp;oacute;n ocurriera hace 1 segundo. Cada vez que se hace una petici&amp;oacute;n a trav&amp;eacute;s de HTTP se regenera la p&amp;aacute;gina desde cero y se env&amp;iacute;a al cliente, sin guardar la informaci&amp;oacute;n que el usuario hab&amp;iacute;a introducido en su navegador en la interacci&amp;oacute;n anterior. &lt;/p&gt;
&lt;p&gt;El HTTP no fue pensado para el uso que se le da hoy en d&amp;iacute;a, que es ser capaz de servir complejas aplicaciones web que pr&amp;aacute;cticamente nada tienen que envidiar a aplicaciones cl&amp;aacute;sicas de escritorio. HTTP fue dise&amp;ntilde;ado para una cosa mucho m&amp;aacute;s sencilla: enviar a un cliente (user agent en la jerga HTTP) recursos identificados por una URL y situados en un servidor. Los recursos que pueden viajar a trav&amp;eacute;s de HTTP son de cualquier tipo y gracias a esta gran flexibilidad se pueden construir las p&amp;aacute;ginas tan completas que pueblan hoy Internet, con texto, im&amp;aacute;genes, audio, v&amp;iacute;deo, etc.&lt;/p&gt;
&lt;p&gt;Con estos mimbres hay que trabajar, o dicho de otra forma: hab&amp;iacute;a que paliar esa carencia de informaci&amp;oacute;n de estado intr&amp;iacute;nseca a HTTP para poder simular el concepto de una &amp;ldquo;sesi&amp;oacute;n de usuario&amp;rdquo;, es decir, una interacci&amp;oacute;n de un usuario con una aplicaci&amp;oacute;n en la que, bas&amp;aacute;ndose en la informaci&amp;oacute;n previa y actual, la aplicaci&amp;oacute;n ir&amp;aacute; ejecutando su l&amp;oacute;gica hasta que esta sesi&amp;oacute;n termine.&lt;/p&gt;
&lt;p&gt;Existen un buen n&amp;uacute;mero de maneras de mantener la informaci&amp;oacute;n de estado. Sin entrar en ellas, ya que no es el objetivo de este art&amp;iacute;culo, s&amp;iacute; que al menos vamos a mencionar los m&amp;eacute;todos con los que contamos en ASP.NET:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cookies &lt;/li&gt;
&lt;li&gt;Campos ocultos &lt;/li&gt;
&lt;li&gt;Query string &lt;/li&gt;
&lt;li&gt;ViewState &lt;/li&gt;
&lt;li&gt;ControlState &lt;/li&gt;
&lt;li&gt;Session State &lt;/li&gt;
&lt;li&gt;Application State &lt;/li&gt;
&lt;li&gt;Cache &lt;/li&gt;
&lt;li&gt;Profile Properties &lt;/li&gt;
&lt;li&gt;HttpContext.Items &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Todas ellas tienen sus pros y sus contras, escenarios donde su uso es m&amp;aacute;s o menos ventajoso y su propia raci&amp;oacute;n de buenas pr&amp;aacute;cticas, pero centr&amp;aacute;ndonos ya en el protagonista del art&amp;iacute;culo, el ViewState es un constructo provisto por la arquitectura de ASP.NET y es uno de los m&amp;eacute;todos m&amp;aacute;s importantes para mantener la informaci&amp;oacute;n de estado de un usuario (mantener su sesi&amp;oacute;n). &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Estructura interna&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;El ViewState est&amp;aacute; representado por estructuras diferentes dependiendo de en qu&amp;eacute; lado del &lt;i&gt;roundtrip&lt;/i&gt; se encuentre, el cliente o el servidor. En el lado del cliente, el ViewState es un campo oculto que guarda la informaci&amp;oacute;n de estado codificada en base-64.&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n se muestra una p&amp;aacute;gina con s&amp;oacute;lo un GridView que contiene datos de las dos primeras filas de la tabla Production.Product de la BBDD de esos grandes vendedores de bicicletas que son la gente de AdventureWorks :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/clip_5F00_image001_5F00_3189273C.jpg"&gt;&lt;img height="121" width="528" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/clip_5F00_image001_5F00_thumb_5F00_6816D280.jpg" alt="clip_image001" border="0" title="clip_image001" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El c&amp;oacute;digo ASPX del formulario es este:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;form&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:SqlDataSource&lt;/span&gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;sdsAWorks&amp;quot;&lt;/span&gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;ConnectionString&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Persist Security Info = False; &lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;         server = localhost;database = AdventureWorks;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;         Integrated Security = yes&amp;quot;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;DataSourceMode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;DataSet&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;SelectCommand&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SELECT TOP 2 Name, ProductNumber, &lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;         DaysToManufacture, ListPrice, SellStartDate &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;         FROM Production.Product&amp;quot;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:SqlDataSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;         &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:GridView&lt;/span&gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;gvProducts&amp;quot;&lt;/span&gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;sdsAWorks&amp;quot;&lt;/span&gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;RowStyle&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;BackColor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;#CEE8E7&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;HeaderStyle&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;BackColor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;#5BA3D7&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;BorderColor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;#0066FF&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:GridView&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum22" style="color:#606060;"&gt;  22:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum23" style="color:#606060;"&gt;  23:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;form&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez renderizado el form, en el navegador cliente encontramos el campo oculto __VIEWSTATE en el HTML recibido , que tiene este aspecto:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;div id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;input&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;hidden&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;__VIEWSTATE&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;__VIEWSTATE&amp;quot;&lt;/span&gt; &lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;/wEPDwUKLTM0NDU4NDM2NA9kFgICAw9kFgICAw88KwANAgAPFg&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt; QeC18hRGF0YUJvdW5kZx4LXyFJdGVtQ291bnQCAmQMFCsABRYIHgROYW1&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt; lBQROYW1lHgpJc1JlYWRPbmx5aB4EVHlwZRkrAh4JRGF0YUZpZWxkBQRO&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt; YW1lFggfAgUNUHJvZHVjdE51bWJlch8DaB8EGSsCHwUFDVByb2R1Y3ROd&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt; W1iZXIWCB8CBRFEYXlzVG9NYW51ZmFjdHVyZR8DaB8EGSsBHwUFEURheX&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt; NUb01hbnVmYWN0dXJlFggfAgUJTGlzdFByaWNlHwNoHwQZKVtTeXN0ZW0&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt; uRGVjaW1hbCwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVy&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt; ZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5H&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt; wUFCUxpc3RQcmljZRYIHwIFDVNlbGxTdGFydERhdGUfA2gfBBkpXFN5c3&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt; RlbS5EYXRlVGltZSwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3V&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt; sdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRl&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt; MDg5HwUFDVNlbGxTdGFydERhdGUWAmYPZBYGAgEPZBYKZg8PFgIeBFRle&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt; HQFD0FkanVzdGFibGUgUmFjZWRkAgEPDxYCHwYFB0FSLTUzODFkZAICDw&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt; 8WAh8GBQEwZGQCAw8PFgIfBgUGMCwwMDAwZGQCBA8PFgIfBgUSMDEvMDY&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt; vMTk5OCAwOjAwOjAwZGQCAg9kFgpmDw8WAh8GBQxCZWFyaW5nIEJhbGxk&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt; ZAIBDw8WAh8GBQdCQS04MzI3ZGQCAg8PFgIfBgUBMGRkAgMPDxYCHwYFB&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt; jAsMDAwMGRkAgQPDxYCHwYFEjAxLzA2LzE5OTggMDowMDowMGRkAgMPDx&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt; YCHgdWaXNpYmxlaGRkGAEFCmd2UHJvZHVjdHMPPCsACgEIAgFkaB91DdG&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt; 5dfsk09w1hbqOusnzCpM=&amp;quot;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A&amp;uacute;n con un s&amp;oacute;lo grid que muestra dos filas, tenemos bastante informaci&amp;oacute;n en el ViewState. &lt;/p&gt;
&lt;p&gt;El primer paso para empezar a desentra&amp;ntilde;ar lo que hay codificado en este campo es usar &lt;a target="_blank" href="http://www.google.es/search?hl=es&amp;amp;q=base64+decoder&amp;amp;btnG=Buscar+con+Google&amp;amp;meta=&amp;amp;aq=0&amp;amp;oq=base64+de"&gt;alg&amp;uacute;n decodificador en base-64 de los que abundan por internet&lt;/a&gt;. Una vez decodificado a texto plano nos encontramos con esto:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/clip_5F00_image002_5F00_735FE6BD.jpg"&gt;&lt;img height="382" width="530" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/clip_5F00_image002_5F00_thumb_5F00_32AD7481.jpg" alt="clip_image002" border="0" title="clip_image002" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; podemos empezar a ver ya datos relacionados con el GridView, nombres de columnas, valores, tipos de datos, etc. Sin embargo, no vemos toda la informaci&amp;oacute;n claramente, hay mucho ruido a&amp;uacute;n. Ahora veremos qu&amp;eacute; contiene este ruido, pero ya hemos visto al ViewState en acci&amp;oacute;n desde el lado del cliente, guardando la informaci&amp;oacute;n en el campo oculto__VIEWSTATE del HTML recibido en el navegador.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Y qu&amp;eacute; pasa en el servidor?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En el lado del servidor, el ViewState est&amp;aacute; implementado como un diccionario de pares clave-valor que contiene la informaci&amp;oacute;n de estado (tambi&amp;eacute;n contiene un hash para detectar si alguien ha manipulado el ViewState entre postbacks, de esto hablaremos en un pr&amp;oacute;ximo art&amp;iacute;culo). Cuando ASP.NET renderiza el HTML de una p&amp;aacute;gina, incluye el campo oculto __VIEWSTATE, serializa la informaci&amp;oacute;n de estado que va a almacenar en &amp;eacute;l, la codifica en base-64 y la env&amp;iacute;a en ese campo oculto. &lt;/p&gt;
&lt;p&gt;El hecho de que se serialice la informaci&amp;oacute;n no es un detalle al que se le deba prestar poca atenci&amp;oacute;n, sobre todo desde el rol del arquitecto. Dado que en el ViewState se pueden almacenar otros datos aparte de la informaci&amp;oacute;n de estado que incluye autom&amp;aacute;ticamente ASP.NET, en algunos proyectos podr&amp;iacute;a surgir el problema de que se ha decidido almacenar en &amp;eacute;l elementos que no son serializables, no se prepararon para que lo fueran, no pueden serlo por restricciones funcionales o t&amp;eacute;cnicas, etc. Por tanto, no hay que pasar por alto ese punto al dise&amp;ntilde;ar la arquitectura de una aplicaci&amp;oacute;n si se van a hacer usos espec&amp;iacute;ficos del ViewState que no sean el uso por defecto del runtime ASP.NET.&lt;/p&gt;
&lt;p&gt;En este proceso interno del runtime de ASP.NET nos encontramos con interioridades poco documentadas de la arquitectura de ASP.NET, como la clase que se usa para serializar los datos, &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.ui.losformatter.aspx"&gt;LosFormatter&lt;/a&gt; (Limited Object Serialization Formatter). Esta clase, de la que apenas existe documentaci&amp;oacute;n y que se encuentra en el espacio de nombres System.Web.UI, es capaz de serializar cualquier tipo de objeto (los mismos que el BinaryFormatter) en una cadena de texto ASCII compacta y codificada en base-64. Sin embargo, el LosFormatter est&amp;aacute; optimizado para serializar tipos sencillos como String, Integer, Array, Hashtable, ArrayList, Boolean, Pair y Triplet. LosFormatter, aunque creada para uso interno de ASP.NET, puede ser utilizada en cualquier desarrollo, con lo que si alguno estaba necesitando este tipo de serializaci&amp;oacute;n puede aprovecharse de ella :)&lt;/p&gt;
&lt;p&gt;Hemos nombrado Pair y Triplet, dos clases de uso interno de ASP.NET y tambi&amp;eacute;n escondidas en System.Web.UI, cuya finalidad es simplemente almacenar en una clase 2 &amp;oacute; 3 valores, exponiendo las propiedades First, Second (Pair y Triplet) y Third (Triplet). &lt;/p&gt;
&lt;p&gt;Hablar de Pairs y Triplets es hablar ya de la estructura definitiva en la que se almacenan los datos en el ViewState. Pero primero que eso, para que los Pairs y Triplets tengan sentido, hace falta que revisemos en este contexto qu&amp;eacute; es lo que se guarda exactamente en el ViewState. Al principio hemos dicho que se guarda la informaci&amp;oacute;n de estado, lo que permite que un usuario pueda mantener una &amp;ldquo;sesi&amp;oacute;n&amp;rdquo; en una aplicaci&amp;oacute;n web. Esto es as&amp;iacute; a alto nivel, a nivel conceptual, pero ahora ya estamos al nivel de los &amp;aacute;tomos y en este nivel, la informaci&amp;oacute;n de estado no es otra que la informaci&amp;oacute;n de todos los controles existentes en la jerarqu&amp;iacute;a de controles de una p&amp;aacute;gina. Es decir, en el ViewState se guarda toda la informaci&amp;oacute;n de estado de toda la jerarqu&amp;iacute;a de controles de la p&amp;aacute;gina y esta informaci&amp;oacute;n se almacena en Pairs y Triplets. Recordemos que todos los controles de una p&amp;aacute;gina ASP.NET cuelgan del objeto Page, creando una jerarqu&amp;iacute;a m&amp;aacute;s o menos intrincada seg&amp;uacute;n la p&amp;aacute;gina.&lt;/p&gt;
&lt;p&gt;La informaci&amp;oacute;n de cada control se almacena en un Triplet, cuyo First contiene listas de clave-valor para almacenar valores de propiedades, por ejemplo: width-150px, height-50px. El Second contiene una lista con los &amp;iacute;ndices de las posiciones que ocupan sus controles hijo en la jerarqu&amp;iacute;a de controles de la p&amp;aacute;gina y Third almacena los Triplet de estos controles hijo. Casi nada. Para comprender mejor esta estructura pod&amp;eacute;is leer &lt;a target="_blank" href="http://authors.aspalliance.com/PaulWilson/Articles/?id=7#Listing5"&gt;este post de Paul Wilson&lt;/a&gt; donde plantea un ejemplo que clarifica un poco las cosas. &lt;/p&gt;
&lt;p&gt;Finalmente, para decodificar el ViewState y comprender mejor su estructura interna os recomiendo que os descargu&amp;eacute;is el &lt;a target="_blank" href="http://alt.pluralsight.com/tools.aspx"&gt;ViewState Decoder&lt;/a&gt; de Fritz Onion, una herramientas muy &amp;uacute;til para trabajar con el ViewState.&lt;/p&gt;
&lt;p&gt;Hasta aqu&amp;iacute; llega este primer art&amp;iacute;culo, en el pr&amp;oacute;ximo seguiremos ahondando en lo que se puede hacer con el ViewState, que a&amp;uacute;n queda mucha tela por cortar.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=147079" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/jfortes/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>Cloud Computing: pros y contras</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2009/03/18/cloud-computing-pros-y-contras.aspx" /><id>/blogs/jfortes/archive/2009/03/18/cloud-computing-pros-y-contras.aspx</id><published>2009-03-18T21:05:00Z</published><updated>2009-03-18T21:05:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/cloud_5F00_009B5345.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:5px 0px 5px 10px;display:inline;border-top:0px;border-right:0px;" title="cloud computing" alt="cloud computing" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfortes/cloud_5F00_thumb_5F00_17E657B6.jpg" width="143" align="right" border="0" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Hoy he le&amp;iacute;do &lt;a href="http://www.enter.es/enter/mybox/cms/10550.pdf" target="_blank"&gt;este interesante estudio sobre cloud computing&lt;/a&gt; y lo recomiendo porque es de lo m&amp;aacute;s sopesado y equilibrado que he le&amp;iacute;do al respecto de este tema tan de moda. &lt;/p&gt;
&lt;p align="justify"&gt;Recientemente hemos tenido que evaluar ofertas de proveedores que ya empiezan a tener en su cat&amp;aacute;logo el cloud computing y es un tema sobre el que hemos tenido que reflexionar y debatir. &lt;/p&gt;
&lt;p align="justify"&gt;Mis pensamientos sobre este modelo est&amp;aacute;n en la l&amp;iacute;nea de lo que se menciona en el estudio: el cloud computing es atractivo en muchos aspectos pero tambi&amp;eacute;n tiene sus sombras y cualquier empresa que se plantee contratar SaaS deber&amp;iacute;a hacer un estudio del estado del arte actualmente, las necesidades que se necesitan cubrir, los riesgos que se van a correr, la dimensi&amp;oacute;n econ&amp;oacute;mica (a corto, medio y largo plazo), etc.&lt;/p&gt;
&lt;p align="justify"&gt;Digo esto porque hay responsables TIC con ganas de ser &lt;i&gt;early adopters&lt;/i&gt; en este terreno y, como siempre, no deber&amp;iacute;an dejarse llevar por la tendencia sin sopesar bien beneficios y riesgos, que los hay.&lt;/p&gt;
&lt;p align="justify"&gt;Personalmente pienso que el tema est&amp;aacute; a&amp;uacute;n algo verde, sobre todo para delegar servicios estrat&amp;eacute;gicamente cr&amp;iacute;ticos en &amp;eacute;l y me plantea algunas dudas, como confidencialidad de datos (probada, con auditor&amp;iacute;as externas como menciona el estudio), disponibilidad, flexibilidad en los desarrollos (Windows Azure aqu&amp;iacute; tiene mucho que decir), etc. &lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.elmundo.es/elmundo/2009/02/24/navegante/1235473642.html" target="_blank"&gt;Las recientes ca&amp;iacute;das de Gmail&lt;/a&gt; han dado un toque de atenci&amp;oacute;n a algo que ya se da por superado como puede ser la disponibilidad 24x7. El impacto sobre una empresa que tenga su correo corporativo externalizado de esta manera es evidente.&lt;/p&gt;
&lt;p align="justify"&gt;Por otro lado, y desde el punto de vista del productor y proveedor del software + servicio, se abren nuevas posibilidades que ya muchas empresas est&amp;aacute;n explorando. Sin duda es un mundo muy interesante para la comunidad de desarrollo por sus posibilidades, pero tambi&amp;eacute;n va a ser muy exigente, ya que el cliente final va a tener una tolerancia muy baja ante cualquier inconveniente. Esto significa que quienes no ofrezcan un producto, servicio (o ambos) muy pulido van a tener serios problemas, m&amp;aacute;s serios que con los desarrollos tradicionales. Ser&amp;iacute;a sensato pensar si se est&amp;aacute; en condiciones de ofrecer esto antes de lanzarse a ofrecerlo sin poder asegurar una calidad de servicio determinada.&lt;/p&gt;
&lt;p align="justify"&gt;Como ya sabemos los grandes est&amp;aacute;n apostando fuerte por el cloud computing y veremos muchos progresos en los pr&amp;oacute;ximos meses/a&amp;ntilde;os. Desde &lt;a href="http://geeks.ms/blogs/ciin/archive/2008/12/03/s-s-microsoft-generation-4-datacenter-vision.aspx" target="_blank"&gt;Microsoft con sus Generation 4.0 Data Centers&lt;/a&gt;, Live Services, Windows Azure, etc. a Google con &lt;a href="http://bits.blogs.nytimes.com/2008/09/07/googles-search-goes-out-to-sea/" target="_blank"&gt;ideas de posibles Data Centers en el mar&lt;/a&gt;, Google Apps, pasando por &lt;a href="http://aws.amazon.com/ec2/" target="_blank"&gt;Amazon con su Elastic Compute Cloud&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=145182" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Cloud Computing" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Cloud+Computing/default.aspx" /></entry><entry><title>Parallel Extensions: del laboratorio a la empresa</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2009/01/27/parallel-extensions-del-laboratorio-a-la-empresa.aspx" /><id>/blogs/jfortes/archive/2009/01/27/parallel-extensions-del-laboratorio-a-la-empresa.aspx</id><published>2009-01-27T23:22:00Z</published><updated>2009-01-27T23:22:00Z</updated><content type="html">&lt;p&gt;Parallel Extensions, una serie de librer&amp;iacute;as que vienen &lt;a target="_blank" href="http://blogs.msdn.com/pfxteam/archive/2008/10/10/8994927.aspx"&gt;incluidas 
nativamente ya en el .NET Framework 4.0&lt;/a&gt; y que van a permitir al 
desarrollador de negocio trabajar a alto nivel con la programaci&amp;oacute;n concurrente y 
el paralelismo. Parallels Extensions va a formar parte importante de .NET FX 4.0 
(metido hasta la m&amp;eacute;dula en la propia mscorlib.dll) y va a proveer de algunas 
abstracciones muy interesantes para el desarrollo a alto nivel, como el concepto 
de Task.&lt;/p&gt;...(&lt;a href="http://geeks.ms/blogs/jfortes/archive/2009/01/27/parallel-extensions-del-laboratorio-a-la-empresa.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=141440" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Paralelismo" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Paralelismo/default.aspx" /></entry><entry><title>Optimización: buenas prácticas</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2008/12/09/Optimizacion-buenas-practicas.aspx" /><id>/blogs/jfortes/archive/2008/12/09/Optimizacion-buenas-practicas.aspx</id><published>2008-12-09T23:27:00Z</published><updated>2008-12-09T23:27:00Z</updated><content type="html">&lt;p style="margin-left:80px;"&gt;&lt;a href="http://geeks.ms/blogs/jfortes/speedo.gif"&gt;&lt;img src="http://geeks.ms/blogs/jfortes/speedo.gif" style="width:342px;height:171px;" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La optimización es un tema muy importante en un proyecto. En
algunos más que en otros dada su propia idiosincrasia y el escenario de
producción en el que se van a desenvolver, ya que no es interesante invertir
esfuerzo en optimizar algo que ya funciona bien, no hay que llevar al extremo
el hecho de que todo se puede optimizar, pero obviamente siempre es un tema importante.&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;Se puede (y se debe) tener la optimización en mente desde
las fases más tempranas, sobre todo si está claro que el proyecto va a requerir
estar bien afinado para dar los resultados esperados.&amp;nbsp;&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;Sin embargo, es interesante recordar que lo importante es que
los equipos de desarrollo pongan el esfuerzo en el lugar adecuado en el momento
adecuado. No es eficiente pretender mejorar cada bucle del código para arañar
unos milisegundos, cuando por otro lado pueden estar ejecutándose 20
procedimientos almacenados para recuperar datos, siendo la mayoría innecesarios
en ese momento.
&lt;/p&gt;

&lt;br /&gt;
&lt;p class="MsoNormal"&gt;
En paralelismo de computadoras es conocida la &lt;a href="http://es.wikipedia.org/wiki/Amdahl" target="_blank"&gt;Ley de Amdahl&lt;/a&gt;,
que como dice Wikipedia:&lt;/p&gt;

&lt;br /&gt;

&lt;blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;“…se usa para averiguar la mejora máxima de un sistema
cuando solo una parte de éste es mejorado.”&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;br /&gt;

&lt;p class="MsoNormal"&gt;Esta ley es igual de útil en paralelismo que para la
optimización de aplicaciones en general, ya que prácticamente siempre hay un único
agujero negro de rendimiento que, una vez optimizado, mejora el resultado final
dramáticamente y hace desaparecer el problema que existía.&lt;/p&gt;

&lt;br /&gt;

&lt;p class="MsoNormal"&gt;Teniendo esto en cuenta, lo importante a la hora de afrontar
la optimización de una aplicación, subsistema, caso de uso, pantalla,
funcionalidad, etc. es descubrir cuál es ese agujero negro responsable
principal de la caída del rendimiento y optimizarlo. No intentar optimizar a
ciegas. Para esto podemos ayudarnos de herramientas útiles como profilers, si
las trazas y pruebas sobre el código no son suficientes para revelar dónde se
encuentra el problema principal.
&lt;/p&gt; 

&lt;br /&gt;

&lt;p class="MsoNormal"&gt;Para ilustrar lo anterior con un ejemplo clásico: imaginemos
un caso de uso en el que el tiempo de ejecución dedicado a la lógica de negocio
consume un 15% del total, el 10% se dedica a carga de controles e interfaz
gráfica y el 75% restante nos encontramos esperando por la carga de datos desde
la base de datos. 
&lt;/p&gt;

&lt;br /&gt;

&lt;p class="MsoNormal"&gt;En este escenario resulta fácil ver como no es eficiente
intentar optimizar la lógica de negocio, ni la interfaz de usuario, sino
averiguar qué falla en la recuperación de datos: ¿puede ser código ADO.NET muy
ineficiente? ¿Puede ser que estemos recuperando datos que no se necesitan en su
totalidad en este caso de uso? ¿Puede ser que inspeccionando el plan de
ejecución del procedimiento almacenado que se invoca veamos que hace cosas innecesarias
o que podrían mejorarse bastante mediante mejor código T-SQL? 
&lt;/p&gt;

&lt;br /&gt;

&lt;p class="MsoNormal"&gt;La buena práctica para plantear la optimización, por tanto, consiste
en averiguar dónde está el performance penalty y optimizarlo, &lt;span&gt;&amp;nbsp;&lt;/span&gt;no en dedicar esfuerzos a otras partes cuyo
impacto en el cómputo total es sólo el 10% ó 15%, porque optimizando esto la
mejora será casi imperceptible, el problema está en el 75%.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=126758" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="Optimizaci&amp;#243;n" scheme="http://geeks.ms/blogs/jfortes/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx" /></entry><entry><title>Historia informática</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2008/11/05/historia.aspx" /><id>/blogs/jfortes/archive/2008/11/05/historia.aspx</id><published>2008-11-05T21:26:00Z</published><updated>2008-11-05T21:26:00Z</updated><content type="html">&lt;p&gt;Hace unas semanas fui a una especie de mercadillo de libros, lo
organizaba una biblioteca que exoneraba títulos muy antiguos de su
catálogo. Había una colección totalmente ecléctica de títulos, todos al
precio de 1 €. Me pasé por curiosidad y acabé encontrando dos libros
que me llamaron la atención: &amp;quot;Iniciación a la informática&amp;quot; Vol. I y II
:) Estos ejemplares datan del año 1971, ya ha llovido lo suyo, sobre
todo para el campo de la informática. &lt;/p&gt;&lt;p&gt;Lo curioso de los libros
no fue encontrar esas grandes diferencias entre núcleos de ferrita y
las RAM actuales, tarjetas perforadas, que los lenguajes más utilizados
fueran FORTRAN, COBOL, ALGOL y PL 1, etc. Eso ya sabía que lo iba a
encontrar, lo más curioso fueron las sorprendentes similitudes en
algunos aspectos que, a priori, parecerían imposibles.&lt;/p&gt;&lt;p&gt;Hay una
parte del volumen II dedicada al &amp;quot;uso del software&amp;quot; y en ella se
especifican las etapas de lo que el libro llama un &amp;quot;estudio
informático&amp;quot;. La imagen muestra el esquema de las fases de dicho
estudio:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.ms/blogs/jfortes/EstudioInformatico.gif"&gt;&lt;img src="http://geeks.ms/blogs/jfortes/EstudioInformatico.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Como
se puede ver, la similitud con las fases de un proyecto de software
actual son realmente sorprendentes. Hablamos de 1971 y de un campo de
la informática que ha sido muy activo, con lo que el hecho de que 37
años después encontremos similitudes así llama la atención. &lt;/p&gt;&lt;p&gt;Entre
cosas como esta y la vuelta a la palestra de variaciones de la
arquitectura de mainframe y terminales tontos, puede resultar
interesante echar una ojeada a la historia de la informática y ver
cuántas cosas que creíamos obsoletas mantienen más vigencia de la que
pensábamos hoy en día :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=111499" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author></entry><entry><title>ASP.NET AJAX: posibilidades y escenarios de uso</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2008/10/28/ASP.NET-AJAX_3A00_-posibilidades-y-escenarios-de-uso.aspx" /><id>/blogs/jfortes/archive/2008/10/28/ASP.NET-AJAX_3A00_-posibilidades-y-escenarios-de-uso.aspx</id><published>2008-10-28T23:52:00Z</published><updated>2008-10-28T23:52:00Z</updated><content type="html">La herramienta elegida por la mayoría de desarrolladores ASP.NET para implementar funcionalidades AJAX es ASP.NET AJAX. Encuestas como la de Nitobi sirven para dar una idea de lo que están usando los desarrolladores en general para implementar AJAX. En el mundo .NET en particular podemos ver en esta otra encuesta que el 73% de los desarrolladores usa el framework oficial de Microsoft para AJAX . A colación de esto, resulta que recientemente (el mes pasado) Microsoft ha anunciado que va a incluir...(&lt;a href="http://geeks.ms/blogs/jfortes/archive/2008/10/28/ASP.NET-AJAX_3A00_-posibilidades-y-escenarios-de-uso.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=108467" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author><category term="ASP.NET AJAX" scheme="http://geeks.ms/blogs/jfortes/archive/tags/ASP.NET+AJAX/default.aspx" /></entry><entry><title>Arrancamos...</title><link rel="alternate" type="text/html" href="/blogs/jfortes/archive/2008/10/27/arrancamos.aspx" /><id>/blogs/jfortes/archive/2008/10/27/arrancamos.aspx</id><published>2008-10-27T08:36:00Z</published><updated>2008-10-27T08:36:00Z</updated><content type="html">&lt;p&gt;Hoy empiezo este blog y comienzo saludando a toda la comunidad y agradeciendo a la gente de Plain Concepts y Rodrigo Corral el hueco que me han hecho como vecino de Geeks.ms. El señor Toni Recio también tiene que ver en este asunto :)&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Desde aquí escibiré sobre aspectos relacionados con el desarrollo de software, con temas encuadrados en cualquiera de sus etapas, e intentaré aportar mi granito de arena a la comunidad con experiencias y artículos que espero que resulten de provecho.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nos vemos en la próxima entrada metiéndonos ya en harina :)&lt;/p&gt;
&lt;p&gt;¡Saludos! &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=108612" width="1" height="1"&gt;</content><author><name>jfortes</name><uri>http://geeks.ms/members/jfortes/default.aspx</uri></author></entry></feed>
