Vuelven las 4 sessions

El sábado 5 de Octubre podremos disfrutar de una nueva entrega de estas sesiones técnicas de la mano de Techdencias by Pasiona.

En esta ocasión contaremos con las presentaciones de :

  • ASP.NET MVC & SPA Web Applications – Marc Rubiño “@marc_rubino”
  • Mobile Services a Fondo con Vs2003 – Quique Martinez “@quiqu3”
  • Responsive desing – Isabel Cabezas “isabelcabezasm”
  • Testea y aumenta tu Karma TDD con Js – Tomás Corral “@amischol”

Fabra i Coats

carrer de Sant Adrià, 20
08030 Barcelona – España

Sábado 5 de octubre de 2013 desde las 10:00 hasta las 14:00

Registro: http://t4sessionsoctubre13.eventbrite.es

Espero veros a todos

banner_techdencias_fourseasons

Minientrada

The Crazy Week – Gana una Surface RT

Gana una Surface RT de 32GB con teclado incluido !!

Microsoft retorna de vacaciones con nuevo concursos para desarrolladores .

La campaña se compone de dos fases importantes:

  1. Desarrolla y publica tus Apps para Windows 8 cuanto antes.
  2. Consigue que, al menos 1 de ellas, tenga 100 descargas o más y 3 estrellas de rating como mínimo antes del 15 de Octubre de 2013.

Los 25 primeros participantes que concluyan con éxito todos los requisitos y pasos de la campaña, conseguirán una Surface RT de 32 GB con teclado incluido.

 

728x90

[Truco] ASP.NET MVC & Enums

Hace mucho que no escribía nada en el blog y tengo que empezar a coger otra vez la rutina y nada mejor para eso que comenzar con un truquito para utilizar en nuestros desarrollos en ASP.NET MVC.

Como buen truco no me voy a enrollar demasiado en las explicaciones ni teorías  y me voy a centrar más en el código para que se pueda utilizar de una manera simple.

El Problema

Imaginemos que tenemos un modelo de datos que utiliza una enumeración.

public class Persona
    {
        public int Id { get; set; }
        public string Nombre { get; set; }
        public int Edad { get; set; }
        public Genero Genero { get; set; }
    }
    public enum Genero
    {
        Hombre,
        Mujer,
        Geek
    }

Una vez tenemos nuestra entidad Genero el controlador y las vistas de forma automática con Visual Studio para no entretenerme mucho con el ejemplo. De esta manera ya lo tengo todo preparado con un solo click.

Nuestra vista de inserción tendría esta pinta:

VistaInicial

Como se puede observar la vista se ha creado perfectamente para añadir nuevas personas, pero no se a mapeado correctamente la enumeración para seleccionar el sexo de la persona.

Si lo intentáramos bindar directamente con el modelo tendríamos igualmente el problema porque no sabe mapear la enumeración directamente.

Sigue leyendo

WebApi & oData Queries

Hace unos días Scott Guthrie nos anunció en su blog el lanzamiento de la versión Release de las ASP.NET and Web Tools 2012.2 update disponible para Visual Studio 2012 y .Net framework 4.5

Una de las mejoras que más me ha gustado es el soporte de WebApi al estándar oData, este soporte otorga a nuestro servicio REST la potestad de generar Url’s con consultas semánticas, paginado, operaciones CRUD, etc .

Configuración inicial

Para empezar a jugar con esta poderosa opción primero tenemos que tener el ejemplo base listo:

  • Instalar el web Tools
  • Crear un nuevo proyecto WebApi
  • Que el servicio retorne datos de prueba. En este caso una lista de facturas para las pruebas Sigue leyendo

JavaScript Visual Studio and TDD

La idea de esta entrada es demostrar lo fácil que puede ser trabajar usando TDD con JavaScript desde nuestro Visual Studio como cualquier otro proyecto de test que tengamos en nuestra solución.

Para este ejemplo utilizaré una aplicación ASP.NET MVC con QUnit  el framework de test unitarios que utiliza JQuery y para lanzar los test utilizo directamente Resharper como cuando utilizo otros frameworks como NUnit, MSTest, etc. Debo aclarar que para Visual Studio hay un test runner que lo podéis descargar desde Chutzpah si no tenéis la oportunidad de utilizar Resharper que personalmente me encanta.

Tanto para instalar QUnit como Chutzpah podemos utilizar Nuget desde nuestro proyecto.

TDD

La idea es que necesitamos un Objeto cliente que le podamos especificar diferentes propiedades como puede ser el Nombre, dirección y además añadir sus pedidos.

Test 1

Siguiendo el desarrollo guiado por pruebas, lo primero que tenemos que hacer es una prueba donde intentaremos definir el nombre del cliente. Sigue leyendo

MVC Exportar Datos a .XLS “Excel Files”

Este truco es uno de los top10 en los foros de MSDN y sigue siendo una de aquellas cosas que no es fácil encontrar una documentación clara y adecuada.

Si hablamos desde la perspectiva de ASP.NET MVC esta tarea se nos simplifica muchísimo porque desde nuestro controlador podemos devolver directamente el contenido de un fichero como cualquier otro ActionResult que tengamos configurado. Para eso tenemos el método File que nos proporciona esa funcionalidad y no tenemos que utilizar directamente el objeto Response como nos pasaba con el clásico ASP.NET WebForms.

FileContentResult File(byte[] fileContents, string contentType)
FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName)
FileStreamResult File(Stream fileStream, string contentType)
FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName)
FilePathResult File(string fileName, string contentType)
FilePathResult File(string fileName, string contentType, string fileDownloadName)

Para este ejemplo utilizaré la sobrecarga que retorna un FileStreamResult porque lo que queremos hacer es:

Un servicio que recupere los datos de nuestro repositorio, serialice nuestra entidad del dominio en un XML directamente en memoria. Devuelva su contenido especificando que es un fichero Excel y el nombre del fichero que se utilizará para guardar.

Todo esto lo generará dinámicamente en memoria sin tener que tener el fichero Excel físicamente en nuestro servidor. Sigue leyendo

Exprime la potencia asíncrona en IIS

Una aplicación ASP.NET sobre IIS escala muy bien y tiene muy buen resultado cuando hablamos de peticiones por segundo, pero la cosa puede mejorar cuando hablamos de conexiones concurrentes.

Teniendo en cuenta que cada vez más nuestras aplicaciones son asíncronas, está aumentando la cantidad de peticiones que nuestra aplicación tiene que soportar .

Por defecto ASP.NET 4.o acepta 5.000 peticiones concurrentes por CPU

Peticiones concurrentes por CPU:

Una aplicación ASP.NET en modo integrado bajo IIS7 nos permite configurar cómo administrar los subprocesos y como poner en cola las solicitudes cuando la aplicación está hospedada en un grupo de aplicaciones de IIS.

Los valores applicationPool se aplican a todos los grupos de aplicaciones que se ejecutan en una versión determinada de .NET Framework. La configuración está contenida en un archivo aspnet.config. Hay una versión de este archivo para las versiones 2.0 y 4 de .NET Framework. (Las versiones 3.0 y 3.5 de .NET Framework comparten el archivo aspnet.config con la versión 2.0.)

  • maxConcurrentRequestPerCPU: Especifica cuántas solicitudes simultáneas permite ASP.NET por CPU.
  • maxConcurrentThreadsPerCPU: Especifica cuántos subprocesos simultáneos se pueden estar ejecutando para un grupo de aplicaciones para cada CPU. Esto proporciona una manera alternativa de controlar la simultaneidad de ASP.NET, ya que puede limitar el número de subprocesos administrados que se pueden usar por CPU para atender las solicitudes. De forma predeterminada este valor es 0, lo que significa que ASP.NET no limita el número de subprocesos que se pueden crear por CPU, aunque el grupo de subprocesos de CLR también limita el número de subprocesos que se pueden crear.
  • requestQueueLimit: Especifica el número máximo de solicitudes que se pueden poner en cola para ASP.NET en un único proceso. Cuando dos o más aplicaciones ASP.NET se ejecutan en un único grupo de aplicaciones, el conjunto acumulativo de solicitudes que se realizan a cualquier aplicación del grupo de aplicaciones está sujeto a este valor. Sigue leyendo

Optimización Web Sprites CSS

La ventaja de utilizar sprites para nuestros efectos con imágenes, es que no tenemos que esperar a que las imágenes se carguen individualmente, ya que solo tendremos una imagen principal para obtener el mismo efecto.

Piensa la cantidad de descargas que tiene que efectuar el navegador para cada una de las pequeñas imágenes que normalmente utilizamos en nuestras webs. Si todas estas pequeñas descargas la disminuimos en una principal reduciremos el tiempo de descarga de la página de una manera considerable.

El ejemplo más utilizado sería los tres estados de un ratón “normal, al pasar por encima con el ratón y al presionar”. Si utilizas tres imágenes independientes el usuario l pasar el ratón por encima del botón puede experimentar un retardo al mostrar la nueva imagen porque el navegador la tiene que descargar. Pero si utilizamos sprite con CSS este efecto indeseado desaparece a la vez que optimizamos la descarga. Sigue leyendo

Web Deploy – config Transformation

Una de las utilidades que contamos los desarrolladores web en Visual Studio 2010 y que por mi experiencia veo que no se utiliza mucho. Es la transformación de ficheros de configuración.

A quien no le ha pasado que ha realizado un despliegue al entorno de producción y se ha dejado el modo debug activado o la cadena de conexión a la de test. Pues Visual Studio nos permite poder evitar esto de una manera muy fácil y además automática, para que no nos tengamos que preocupar de si lo hemos configurado todo correctamente para el despliegue.

Ficheros de Transformación

Una de las situaciones que habitualmente nos encontramos en los proyectos, es que tenemos que tener diferentes ficheros de configuración para cada uno de los entornos de los que contamos.

No es lo mismo hacer un despliegue para el entorno de Desarrollo que para Pre-Test o Producción. Por eso ahora disponemos de la posibilidad de modificar el fichero de configuración dependiendo de donde queramos publicar nuestra aplicación web. Sigue leyendo