Desarrollo colaborativo con VS Anywhere (¡y sorteo de licencias!)

Ya sabéis que me encantan las aplicaciones colaborativas en tiempo real , ¿verdad? Bien, y si aplicamos este concepto a nuestro entorno de desarrollo favorito, Visual Studio, ¿qué podemos esperar? Pues seguro que un producto espectacular. En este artículo vamos a ver echar un vistazo a VS Anywhere , un producto del que seguro habéis oído hablar, que supone una revolución en la forma en que podemos colaborar en tiempo real con colegas y compañeros...

Si usas GUIDs, mucho ojo el próximo 11 de febrero

Los GUID (Globally Unique Identifier) son una serie de 16 bytes generados pseudoaleatoriamente que se suelen utilizar para identificar de forma única objetos, dispositivos, componentes, o prácticamente cualquier cosa. Y, a diferencia de otros tipos de identificadores, el “única” debe ser interpretado de forma global, es decir, es virtualmente imposible que un GUID utilizado para un elemento se repita en otro equipo, lugar o sistema. No hay magia negra en esto, es...

Inyección de parámetros en acciones ASP.NET MVC (y III)

En este tercer y último post de la serie (ir al primero o segundo ) , vamos a ver una última técnica para realizar inyección de parámetros a acciones ASP.NET MVC que, aunque aporta menos a la hora de comprender las misteriosas interioridades del framework, es ciertamente mucho más cómoda y práctica en caso de que deseemos aplicar esta técnica. Recapitulando un poco, queremos pasar de un planteamiento en el que el controlador es el que...

Inyección de parámetros en acciones ASP.NET MVC (II)

En el primer post de la serie , vimos rápidamente en qué consiste la inyección de parámetros como fórmula para suministrar dependencias a una acción ASP.NET MVC, y realizamos una implementación sustituyendo unas pequeñas piezas del framework llamados action invokers que, como su nombre indica, son los responsables de invocar las acciones solicitadas por el usuario. La idea es poder tener en nuestros controladores acciones que reciben directamente...
Publicado por José M. Aguilar | con no comments

Inyección de parámetros en acciones ASP.NET MVC (I)

No hace demasiado tiempo describíamos por aquí cómo desacoplar controladores ASP.NET MVC mediante el uso de Inyección de Dependencias. En este caso, como en otros que hemos tratado, se hacía uso de uno de los “sabores” de esta técnica, que consiste en suministrar como parámetros al constructor de una clase todos aquellos componentes de los que depende para su funcionamiento. Sin embargo, esta no es la única forma de usar inyección...
Publicado por José M. Aguilar | con no comments

Control de acceso a Hubs SignalR

SignalR permite controlar el acceso a los métodos del interior los Hubs de una forma muy similar a como hacemos en ASP.NET MVC o WebAPI. Y cuando digo muy similar no estoy exagerando en absoluto, como podéis observar en el siguiente código: ? 1 2 3 4 5 6 7 8 [Authorize] public class AlertService : Hub { public void Alert(string msg) { this.Clients.All.showAlert(msg); } } Pues sí, también tenemos disponible aquí el atributo [Authorize] . O mejor dicho, otro...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

CDN con fallbacks en bundles

La nueva versión de System.Web.Optimization traerá (aún está en beta) algunas novedades interesantes al sistema de bundling que se incluye de serie en los proyectos ASP.NET MVC y se distribuye a través de Nuget en el paquete Microsoft.AspNet.Web.Optimization. En particular, vamos a centrarnos en una característica muy práctica si queremos utilizar una Content Delivery Network (CDN) externa (como la de Microsoft , Google o incluso una propia) para delegar...

Crear manualmente proxies de Hubs Signalr

Cuando desde un cliente javascript consumimos los servicios suministrados por un Hub de SignalR, lo habitual es usemos los proxies generados automáticamente, para lo que solemos incluir en nuestra página una referencia al script “/Signalr/Hubs” según la ruta por defecto. Sin embargo, puede haber casos en los que no nos interesa este comportamiento y preferimos generarlo de forma manual para, por ejemplo, incluirlo en un bundle o distribuir el archivo a través...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

Evento en Sevilla: desarrollo de videojuegos multiplataforma con Wave Engine

Sin duda, el desarrollo de videojuegos es una de las áreas más atractivas e interesantes a las que podemos aspirar dedicarnos los desarrolladores. Y aunque hoy en día parece estar especialmente de moda, no es algo nuevo; muchos de nosotros empezamos a interesarnos por la programación intentando programar nuestros propios juegos. Por este motivo espero con especial impaciencia la próxima charla organizada por Cartuja.NET, que tratará sobre el desarrollo de...
Publicado por José M. Aguilar | con no comments

Generar archivos Excel como un señor con ClosedXml

Venga, lo confieso: yo también he generado desde mis aplicaciones contenidos HTML y los he enviado al cliente en un archivo con extensión XLS, incluso modificando el content-type, para que pareciera un documento de hoja de cálculo. Durante años. Y también le he dicho a mis clientes que el molesto mensaje que aparece al abrirlo desde Excel, el que indica que el contenido del archivo no coincide con la extensión del mismo, es algo normal. Pero esto se acabó...

¿Problemas al actualizar a jQuery 1.9?

Seguro que, como un servidor, muchos os habéis vuelto locos con la llegada de jQuery 1.9 al intentar actualizar vuestros proyectos, principalmente por los breaking changes introducidos que han provocado que tanto código propio como muchos plugins dejen de funcionar debido a la desaparición de métodos como live() , $.browser() y otros cambios de envergadura. Nuestro código podemos modificarlo teniendo en cuenta los cambios de esta versión , hasta ahí...
Publicado por José M. Aguilar | con no comments
Archivado en: ,

Desacoplando controladores ASP.NET MVC, paso a paso

Hace poco, en el post donde trataba la inyección de dependencias y desacoplamiento de Hubs de SignalR , el amigo Maxxx comentaba que podría estar bien ver cómo podríamos emplear las mismas técnicas con ASP.NET MVC. Y ciertamente, me ha parecido muy interesante porque es un escenario que encuentro habitualmente en empresas de desarrollo: comprenden los beneficios de reducir el acoplamiento entre componentes, pero les parece algo demasiado complejo como para aplicar...

Mi libro: Introducción a ASP.NET SignalR

Seguro que estaréis al tanto de que durante los últimos tiempos he estado trabajando junto con los amigos de Krasis/CampusMVP en la publicación de un libro sobre SignalR . De hecho, probablemente también sabréis que la versión en inglés del mismo se presentó y comenzó a distribuir para Estados Unidos (bueno, y para todo el mundo) hace unas semanas, cuando aún SignalR se encontraba en Release Candidate, y ha conseguido atraer a...
Publicado por José M. Aguilar | 10 comment(s)
Archivado en: ,,

Eliminar el botón de los campos password de IE10

Hace sólo unos días veíamos cómo eliminar y personalizar los botones que Internet Explorer 10 añade a nuestros cuadros de edición estándar , pero nos dejábamos por detrás un caso especial: los controles de edición de contraseñas, o sea, los <input type="password"> de toda la vida. En esta ocasión, IE10 muestra por cortesía un pequeño icono con forma de ojo, que permite visualizar el contenido...
Publicado por José M. Aguilar | con no comments

Eliminar el botón de limpiado de controles de IE10

Va un truquillo rápido. Los que ya habéis saltado a Internet Explorer 10 seguro habréis notado el pequeño botón que este navegador añade a los cuadros de edición estándar cuando obtienen el foco, y que permite limpiar rápidamente su contenido: Pues bien, hay veces que a nivel de diseño no nos interesa que se muestre la pequeña “X” en los controles, su posición entra en conflicto con otro elemento visual...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,,,

¿Añadir una barra al final de las URL?

Hace poco veíamos que el nuevo sistema de routing usado por proyectos MVC 4 permitía una cierta configuración del formato de URL generadas por la aplicación al usar helpers como Url.Action() o Html.ActionLink() , y cómo usando una simple línea de código podíamos hacer que las rutas se generaran usando sólo minúsculas . Pues bien, al igual que en ese caso, en los proyectos que usen la última versión del ensamblado...
Publicado por José M. Aguilar | con no comments

Inyección de dependencias en Hubs de SignalR

Cuando estamos implementando Hubs de SignalR, podemos encontrarnos fácilmente con que éstos necesitan utilizar componentes externos para llevar a cabo su tarea. Por ejemplo, es bastante probable que un servicio en tiempo real proporcionado por un Hub tenga que utilizar una clase de servicios o cualquier otro componente externo de una aplicación, como en el siguiente código: ? 1 2 3 4 5 6 7 8 9 10 11 public class MyHub: Hub { public Task sendMessage( string text) { using...
Publicado por José M. Aguilar | con no comments

Simular una conexión lenta con Fiddler

Normalmente hacemos pruebas de nuestros desarrollos web sobre nuestro propio equipo, donde la transferencia de datos es prácticamente inmediata, en servidores de prueba ubicados en una red de área local, o incluso sobre un servidor de producción al que accedemos mediante una conexión a Internet de gran capacidad. Sin embargo, nuestras aplicaciones web son muy diferentes cuando el cliente no dispone de una conexión de alta velocidad. Lo que nosotros percibimos en...

Documentación automática de servicios WebAPI

Cuando trabajábamos con los Servicios Web de toda la vida, las herramientas de desarrollo incluían sistemas para generar la documentación básica de los servicios que implementábamos. El estándar WSDL ( Web Services Description Language ), era un lenguaje basado en XML que permitía describir las funcionalidades de un servicio web aportando gran cantidad de detalles sobre las operaciones, tipos de datos, o direcciones de acceso a las mismas. Gracias...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

Actualizar todos los paquetes Nuget de un proyecto

Aunque a muchos pueda parecer simple, hay gran cantidad de desarrolladores que para actualizar los paquetes Nuget de un proyecto acuden a la herramienta de gestión incluida en el IDE y van actualizando uno por uno los componentes instalados. Pues bien, resulta que desde hace algún tiempo, Nuget soporta la actualización automática de todos los paquetes de una solución . Para ello, basta con acudir a la consola de administración de paquetes ( Tools > Library...
Publicado por José M. Aguilar | con no comments
Archivado en: ,
Más artículos Página siguiente >