Persistiendo el VIEWSTATE del lado servidor en ASP.NET 2.0

Parte de la magia que ofrece ASP.NET es precisamente la capacidad de persistir los datos que son capturados n un formulario entre peticiones al servidor. Para los que hemos programado desde la versión ASP 3.0 sabemos que cuando mandábamos al servidor un determinado formulario mediante un postback nuestros valores se perdían en el proceso y teníamos que recurrir a técnicas para persistir nuestra información. ASP.NET en definitiva se encargó de lo mismo de manera predeterminado y transparente utilizando el VIEWSTATE. El VIEWSTATE es un campo escondido que almacena los valores que nuestros controles tienen para persistencia entre postbacks logrando mantener los mismos valores capturados entre idas y vueltas al servidor.


Pero como en todo, esta técnica tiene sus pros y contras. Entre las contras encontramos que el tamaño del campo escondido VIEWSTATE en ocasiones es sumamente extenso y para cierto tipo de escenarios nos es la mejor opción tener páginas web que transmiten demasiado contenido por la red. En escenarios donde los usuarios de nuestra aplicación accederán a ella a y través de módems de 56k simplemente no es recomendable pasar el VIEWSTATE.


Veamos un ejemplo:


Un simple GridView que soporta paginado y ordenado veamos el VIEWSTATE que genera:


viewstate1.JPG 


Prácticamente nuestra página mide lo siguiente:


viewstate2.JPG 


Sin embargo veamos una técnica en donde podemos hacer que el manejo del VIEWSTATE se realice del lado del servidor permitiendo reducir drásticamente el tamaño de nuestra página y por consecuencia mejorar su acceso.


viewstate3.JPG  


Y su tamaño es:


viewstate4.jpg 


Cabe mencionar que esta técnica utiliza el objeto session para almacenar el VIEWSTATE de una página en particular. Si configuramos que la session se persista en SQL Server entonces tendremos una técnica lo suficientemente robusta para incrementar la velocidad de nuestras páginas.


Descarga: http://geeks.ms/files/folders/9811/download.aspx 


Enjoy!

Boxing y Unboxing que es?

Para aquellos que aun tienen duda sobre lo que esto significa. Boxing permite a cualquier tipo de dato por valor (value type) ser convertido de manera explicita a un valor de tipo objeto. Boxing es el proceso en donde las instancias de un objeto son creadas y sus valores son copiados directamente a la instancia. Unboxing es lo contrario en donde un valor es copiado desde una instancia a un medio de almacenamiento en particular. Es comun en el lenguaje Visual Basic.NET ya que por años y años a ofrecido a los programados esa conversion interna y tratado de los tipos de datos cuando son intercambiados entre objetos.


 


Veamos:


 


Sub Main()


Dim x As Integer
Dim y As Object



x = 10



‘ boxing
y = x


‘unboxing
x = y


End Sub

Conoce como nace y la importancia estrategica del Grupo de Patrones y Practicas de Microsoft

Rory nos acerca un poco al mundo de Pattern & Practices en donde el buen Edward Jezierski y Peter Provost nos platican la forma en que este singular grupo trabaja internamente. En una entrevista de Channel 9 titulada “A team of Thieves” nos presentan información interesante sobre el proceso, alcance, valor y roles del grupo. Lo que queda muy claro después de ver esta extensa entrevista es la importancia estratégica que tiene este grupo para los desarrolladores .NET y claro para Microsoft. Sucede que la vocación de este grupo está en ponerse en los zapatos de los clientes en aquellas situaciones de programación o problemas técnicos que los programadores empresariales enfrentan día con día para entender y resolver sus problemática todo esto bajo la premisa de “entender el problema de otros” para ofrecer un implementación que en un determinado contexto generalizado pueda funcionar para otros.


Eduardo comenta que él trabajó como soporte técnico en Microsoft y define algo interesante, comenta que no existe el software perfecto que los clientes en algún punto encontraran alguna limitante de funcionalidad o situación en la que la tecnología simplemente puede quedar corta y es ahí en donde el consejo adecuado que la gente de soporte técnico ofrece, toma valor e importancia. Entonces, viendo esta realidad de una manera más estratégica, consolidada, funcional y realista es que se juntan algunas de las áreas de soporte técnico en aquel entonces tecnologías como Visual Basic 6, MTS, Exchenge, etc y encuentran un concepto para crear todo un departamento que ofrezca precisamente esos consejos adecuados en termonos de practicas probadas (architecture guidence), bloques aplicativos (application blocks), guias prescriptivas y fabricas de software (software factories). De ahí nace el grupo de Patrones y Prácticas.


Toda una discusión interesante y un poco cómica en donde definitivamente para todos los que nos apasiona lo que Pattern & Practices genera encontraremos valiosa y de antaño.


Enjoy!

Deteniendo la vinculacion automatica de un control ObjectDataSource en ASP.NET 2.0

No es la primera vez que me preguntan cómo detener la vinculación que el control ObjectDataSource hace de manera automática cuando es configurado sobre un control que soporta vinculación, tal como GridView o DropDownList etc. Una técnica a utilizar es el evento “Selecting” del ObjectDataSource. Este evento se dispara justo cuando inicia el proceso de vinculación del control ObjectDataSource. Tenemos el argumento “e” de tipo “ObjectDataSourceSelectingEventArgs” en el cual viajan interesantes variables, datos y estados que en determinado momento podemos ocupar como por ejemplo los parámetros de entrada que usamos en un determinado ObjectDataSource.

En fin en el universo de este argumento “e” contamos con la propiedad booleana “Cancel” la cual nos permite detener o iniciar el proceso de vinculación del ObjectDataSource.

Veamos un ejemplo:

protected
void ObjectDataSource2_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)

{

e.Cancel = !(TextBox1.Text.Length > 0);

}

En este caso estamos forzando que la vinculación del ObjectDataSource se efectúe siempre y cuando un control TextBox tenga datos en el.

Suerte!

WebCast de WCF

El próximo lunes daré el primero de infinidad de WebCast que este 2007 espero dar. Por supuesto que están todos invitados, estaré presentando contenido sobre Windows Communication Foundation el nuevo modelo de programación unificado para la construcción de aplicaciones orientadas a servicios. Si estas relacionado con el mundo de los servicios web o la construcción de aplicaciones distribuidas estoy seguro este WebCast es para ti ya que conoceremos la postura que Microsoft esta liberando con este modelo de programación y cada uno de los conceptos que necesitamos conocer para iniciarnos en el mundo de los servicio WCF.


Tocaremos puntos relacionados con las motivaciones que justifican la construcción de este nuevo modelo de programación, veremos que son los contratos (contract), vinculación (binding) y direcciones (Address), veremos como y porque en conjunto estos conceptos nos permiten combinarse de manera flexible para construir y mantener servicios. Adicional trataremos lo básico del Web Service Software Factory una fábrica de software que nos permite construir servicios WCF implementando patrones, lineamientos, recomendaciones y mejores prácticas.


Como vez? Se te antoja? Bien, entonces registrate en línea aquí http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032325386&EventCategory=4&culture=es-AR&CountryCode=MX

ASP.NET AJAX 1.0 liberado!

Ya se libero el ASP.NET AJAX 1.0. Después de tanto tiempo y de ir evolucionando poco a poco Microsoft por fin libera su implementación de AJAX para aplicaciones Web ASP.NET 2.0. Qué cosas nuevas podemos encontrar?

Toda la funcionalidad que con CTP’s hemos venido probando adicional encontraras:

  • Control calendario muy similar al de Windows Vista.
  • Control Tab
  • Control MaskedEdit (mascara) como en los viejos tiempos de vb…
  • Control AutoComplete

También Scott Guthrie comento en el podcast de Carl Franklin www.dotnetrocks.com que este release tendrá soporte tal como cualquier otro producto de Microsoft. Supongo que para estas alturas todos ya estamos enterados sin embargo no quería dejar pasar la oportunidad de compartir con el mundo que ASP.NET AJAX 1.0 ha sido liberado!!

Descarga: http://ajax.asp.net/

Web Client Software Factory

La estrategia de Microsoft para crear fábricas de software ha sido muy exitosa. Desde que nació GAT (Guidence Automation Toolkit) se estableció claramente la táctica a utilizar para consolidar el uso de las mejores prácticas recomendadas por Microsoft a través de su equipo Pattern & Practices. Hoy tenemos una nueva fábrica más. El RC de Web Client Software Factory el cual engloba lineamientos, mejores prácticas y patrones para construir efectivas aplicaciones Web ASP.NET, AJAX y WF.


Enjoy it!

Visual Studio .NET 2003 con Team Foundation Server

Para las personas que me preguntaron cómo habilitar escenarios de desarrollo TFS con Visual Studio .NET 2003 aquí les dejo el componente que les comente. Es el Visual Studio 2005 Team Foundation Server MSSCCI Provider, un componente que nos permite utilizar la funcionalidad del control de versiones de Team Foundation Server en productos que no soportan tienen el Team Explorer. Ahora ya podemos trabajar con proyectos de desarrollo en otras versiones de .NET o incluso en otros productos de desarrollo como Visual Basic 6 e integrar todo el valor de TFS. 


Checa la lista de productos soportados por el MSSCCI Provider.



  • Visual Studio .NET 2003
  • Visual C++ 6 SP6
  • Visual Visual Basic 6 SP6
  • Visual FoxPro 9 SP1
  • Microsoft Access 2003 SP2
  • SQL Server Management Studio
  • Sparx Systems Enterprise Architect 6.0
  • Sybase PowerBuilder 10.5

Así que hasta los amigos de Sybase se pueden enrolar al uso de esta fabulosa solución para el desarrollo en equipo.


Para mis amigos jefes de desarrollo que siguen trabajando con Visual Studio .NET 2003 les dejo unos Screen Shots.


En esta primer imagen nos conectamos a un servidor TFS para hacer Check In de los archivos de un proyecto de tipo web.


tfsvs200301.jpg 


Y por ultimo en esta imagen mostramos que tareas de TFS han sido afectadas. Soporta el uso de los Check In Policy.


tfsvs200302.jpg 


Para mis otros amigos que siguen usando Visual Basic 6 aquí les dejo este ejemplo: http://myvstsblog.com/archive/2006/02/02/103.aspx

MVP 2007

Este es mi tercer año iniciado con una excelente noticia. MVP un año más. Desde que recibí el nombramiento y al lado de toda esa fuerza y pasión por vivir y compartir experiencias relacionadas con el mundo de la tecnología Microsoft mi vida profesional a experimentado singulares cambios positivos que me han hecho crecer interesantemente en diversas áreas. El programa MVP ofrece de grandes posibilidades de relacionamiento que nos permiten crecer, contribuir positivamente en ocasiones directa en otras indirectamente en los productos Microsoft.

Seguiremos trabajando con la misma pasión este año 2007 el cual promete ser toda una aventura profesional.

A todos mis amigos y colegas, infinidad de gracias.

Mis sinceras felicitaciones para:

Miguel Jiménez

Rodrigo Corral