Push con SingalR

Últimamente se está oyendo hablar mucho de SignalR en los en tornos de ASP.Net y no es para menos.

Los programadores web estamos acostumbrados a hacer peticiones al servidor “Pull” para poder consultar cualquier cosa y en más de una ocasión hemos tenido que tirar de un timer en el cliente para que cada X-tiempo consulte un recurso del servidor e ir informando al usuario del progreso de una tarea o de los datos que se tienen que actualizar constantemente.

Para evitar esto podríamos utilizar a día de hoy varias opciones como la API de html5 WebSocket que está en fase borrador y ha tenido algún problema de seguridad, podemos utilizar el servidor Openfire con el protocolo XMPP o servidor Node.js con la librería Nowjs . Pero la ventaja que proporciona SignalR frente los otros es que esta especialmente diseñado para aprovechar las características de las aplicaciones ASP.NET MVC tanto el lado del servidor como la parte cliente.

Como empezar

Para empezar tenemos que instalar la librería que tenemos disponible desde Nuget.

Sigue leyendo

Deserializar JSon a tipo anónimo .Net

En ciertas ocasiones podemos necesitar deserializar un objeto pasado desde un cliente en formato JSon a un tipo .net anónimo. Por ejemplo si utilizas MongoDB con el driver NORM y pretendes filtrar u ordenar de una manera dinámica, es difícil pasar estos objetos a la query para poder generar un filtro dinámico.

Para hacernos una idea esta sería una consulta paginada y  con un filtro sencillo con NORM:

//NoRM anonymous objects:
return GetRepository().GetCollection("Personas")
   .Find(
          new { Nombre = Q.IsNotNull() }, //Where
          new { Fecha = OrderBy.Descending }, //OrderBy
          10, // Nº elementos de la secuencia "Skip"
           0 // Primer elemento de la secuencia "Take"
);

Esta consulta nos devolvería las 10 primeras personas con Nombre que no sea null. Sigue leyendo

Vistas & View Engines en ASP.NET MVC

Partiendo de que la intención de MVC es separar las responsabilidades de cada componente, me gustaría explicar cual es la responsabilidad de las vistas y como utilizarlas en ASP.NET MVC.

Lo que primero nos choca a los programadores que procedemos de los formularios web, es que han desaparecido los eventos y el famoso ciclo de vida, y eso se debe precisamente que ASP.NET MVC es mucho más natural en los protocolos HTTP y HTML en su tratamiento.

Mvc vs WebForms

Como se puede apreciar en la imagen los formularios web se basaban en los eventos para procesar una petición, entrar en el ciclo de vida del documento, tratar el evento, pintar los controles y devolver el resultado.

Sin embargo las peticiones en MVC son mucho mas simples y respetuosas con el protocolo HTTP. La petición la recibe el motor de rutas que mediante la URL decide cual es el controlador que la debe procesar, el Controlador puede consultar al modelo si es necesario y posteriormente  devuelve un ActionResult  que puede ser un fichero, datos en formato JSon, una vista, etc. Sigue leyendo

[Tip] Intellisense entre ficheros .Js

Dedicado a mi colega Pablo Nuñez que últimamente le veo muy desesperado con el uso de JavaScript. Pablo nunca pierdas la esperanza!!!

Este truco es muy sencillo y nos sirve para poder tener la referencia de un fichero script desde otro fichero script y solo tenemos que insertar el path del fichero que queremos tener la referencia con tres barras estilo comentario.

Pero eso no es todo, también podemos personalizar la información que queremos mostrar como en el resto de nuestro código de la aplicación.

Espero que este truco sea de utilidad ;-)

 

CSS.3 – HTML.5 & Modernizr

A estas alturas nadie puede negar que Microsoft está haciendo una apuesta en firme para dar soporte a los estándares web y un buen ejemplo de esto es en los nuevos proyectos web MVC 3 tenemos la posibilidad de crear aplicaciones con HTML 5 y CSS 3. Pero una cosa que puede que haya pasado más desapercibido es la librería script Modernizr que viene incluido con los ficheros scripts del proyecto. La versión que viene incluida es la 1.7 pero actualmente ya tenemos disponible la versión 2.0.4.

¿Qué es Modernizr?

Modernizr es una librería javascript open-source que nos permite detectar que características de HTML5 o CSS3 que son soportadas por el navegador. De esta manera podemos crear paginas con las últimas funcionalidades que nos brindan estos nuevos estándares sin preocuparnos si el navegador lo soporta o no, porque esta librería nos avisará y nos brindará la posibilidad de utilizar otras librerías para simular esta funcionalidad. Sigue leyendo

VS2010 – Soporte HTML5, CSS3

Pues eso que Visual Studio no se quiere quedar atras en esta frenética carrera por los nuevos estandares y ya tenemos disponible para descargar la primera revisión de los estandares web para Visual Studio 2010 y Visual Studio Expres 2010 SP1 .

En esta primera versión de la actualización,  el equipo de VS se ha centrado en actualizar el soporte a HTML5 , agregar soporte a CSS 3 y añadir nuevas API para el intellisense de JavaScript. El plan es hacer una versión cada 3 meses para mantener Visual Studio actualizado con los cambios realizados por el W3C. Sigue leyendo

¡Enhorabuena MVP de Microsoft 2011!

MVP

Despues de tantos años participando en las comunidades intentando compartir mi granito de arena me ha llegado el famoso email de Microsoft .

Enhorabuena. Nos complace presentarle el programa de nombramiento MVP de Microsoft® de 2011. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa su experiencia de alta calidad y de la vida real con otras personas. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de ASP.NET a lo largo del pasado año.

Para mí es un placer recibir este reconocimiento por parte de Microsoft y no hace más que animarme a continuar con mi empeño de poder compartir mis experiencias y aprender de tantas otras de mis pares.

No se si es una promesa o una amenaza pero seguiré intentando aportar todo lo que pueda como lo he estado haciendo todos estos años.

Muchas gracias a todos los que me habéis apoyado durante todo este tiempo y a todos los MVP’s nuevos y a los que habéis renovado para este año.

Gracias a Todos !!

Perfiles de Usuarios ASP.NET & MVC

Una de las dudas más habituales en los foros de ASP.NET, es como mantener una variable disponible para un usuario. Lo primero que se nos puede pasar por la cabeza es utilizar la sesión para guardar esta información, pero desde ASP.NET 2.0 tenemos otras alternativas más adecuadas para estas cosas y además nos puede servir tanto para usuarios anónimos, como para usuarios autentificados.

!! No tenemos que utilizar la sesión para todo !!!  tanto nos sirve para ASP.NET como para ASP.NET MVC

Usuarios autentificados.

Una vez el usuario se ha autentificado, se asocia el perfil a la identidad del usuario en el contexto actual system.web.httpcontext.user

Usuarios anónimos

El perfil para los usuarios anónimos no está habilitada de forma predeterminada y hay que especificarlo de forma explícita.

Para poder tener estas propiedades del perfil habilitadas para los usuarios anónimos ASP.NET crea una cookie donde se establece una identidad única para el usuario y poderlo identificar cada vez que el usuario acceda a la página web. Esta cookie tiene una caducidad de 70 días y se renueva automáticamente cuando el usuario accede al sitio.

Si necesitamos controlar cuando un usuario pasa de ser anónimo a usuario autentificado, podemos controlar este paso en el momento que el usuario se autentifica y se lanza el evento MigrateAnonymous incluido en el fichero Global.asax.

Tipos Soportados

Si no se especifica el tipo del dato que queremos mantener, por defecto esta propiedad se guardara como string, pero podemos guardar tipos escalares (texto, números, fechas) tan solo especificando el tipo en la configuración de la propiedad. Sigue leyendo

Microsoft translator widget

Para los webmasters, blogers, desarrolladores que quieran internacionalizar sus sitios ahora podemos contar con una utilidad para traducir en tiempo real nuestras webs.

Solo tienes que acceder a la web www.microsofttranslator.com/widget seleccionar el color del control, el idioma inicial de la web y el idioma por defecto a traducir y automáticamente. Generar el código script y pegar en tu sitio.

Los programadores podremos acceder directamente al AJAX API para utilizarlos en nuestros proyectos. http://msdn.microsoft.com/en-us/library/ff512385.aspx y tenemos el foro de MSDN para nuestras consultas http://social.msdn.microsoft.com/Forums/en-US/microsofttranslator/threads Sigue leyendo