Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

18 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
Mostrando entradas con la etiqueta novedades. Mostrar todas las entradas
Mostrando entradas con la etiqueta novedades. Mostrar todas las entradas
martes, 30 de septiembre de 2014
C#
[Actualizado 16-Nov-2014] El equipo de diseño del lenguaje C# ha decidido finalmente no incluir esta característica en la versión 6. En fin, fue bonito mientras duró :(

Seguimos comentando novedades que encontraremos en la próxima versión de C#, y en esta ocasión vamos a ver una nueva característica que, sin resultar espectacular, sí nos va a proporcionar una fórmula más cómoda y concisa para resolver algunos escenarios bastante habituales.

Seguro que os resulta familiar el siguiente código, más que nada porque lo habréis escrito decenas o cientos de veces:


martes, 23 de septiembre de 2014
En posts anteriores hemos hablado del operador de navegación segura “.?” y de la inicialización de propiedades automáticas, y vamos a comentar ahora otra de las novedades de la versión de C# que viene en camino, pero que en esta ocasión no tengo claro que sea un avance en la dirección correcta. Os lo cuento y ya decidís vosotros ;-)

Hay escenarios en los que en el interior de una clase utilizamos de forma intensiva miembros estáticos de otras clases. Un ejemplo habitual podemos encontrarlo en componentes que hagan mucho uso de System.Math para la realización de cálculos matemáticos, o incluso en el conocido System.Console:




martes, 16 de septiembre de 2014
Novedades de C# 6.0Hace algún tiempo comentamos alguna de las novedades que se incluirán en la próxima versión de C#, concretamente el nuevo operador de navegación segura “?.”, pero la cosa no acaba aquí: se avecinan un buen número de cambios que prometen seguir mejorando nuestro lenguaje favorito :-)

Por ejemplo, una nueva característica que tendremos disponible es la inicialización de propiedades automáticas, algo que antes también podíamos hacer, aunque de forma menos directa.
martes, 8 de julio de 2014
SignalROtra de las novedades que acompañan a la versión 2.1 de SignalR, y que sin duda puede resultar interesante en muchos escenarios, es la capacidad de tener desde los hubs una pista sobre el motivo por el que se desconectó un cliente, cosa que hasta ahora no era posible utilizando las herramientas que nos proporcionaba el framework de forma directa.

En versiones previas de SignalR, cuando en un hub recibimos el evento OnDisconnected() en realidad no sabemos si este cierre ha sido “educado”, es decir, provocado explícitamente por el cliente como consecuencia de una acción, como puede ser que el usuario haya decidido salir de la aplicación, o bien se ha debido a un problema en el software o comunicaciones (imaginad, por ejemplo, que se cae la conexión a internet).
miércoles, 25 de junio de 2014
SignalRHace pocos días se ha publicado la revisión 2.1 de SignalR que, aparte de corregir bugs, introduce algunas funcionalidades que pueden resultar interesantes en muchos escenarios. En cualquier caso, como se podría esperar de una revisión de este calado, no rompen con nada existente ni resultan cambios espectaculares, simplemente aportan algunas características que no fueron incluidas en la versión 2.0 por falta de tiempo, o que han surgido con posterioridad.

En esta serie de posts  recorreremos las características más interesantes incluidas en esta revisión, y comenzaremos tratando la nueva capacidad de hacer llamadas al lado cliente desde los Hubs utilizando tipado fuerte.
martes, 10 de junio de 2014
Microsoft ASP.NETHay muchos escenarios, y relativamente habituales, en los que es interesante lanzar una tarea desatendida, en segundo plano, desde una aplicación ASP.NET: manipulación de archivos, envío de mensajes, acceso a recursos externos costosos, procesos de colas, generación de archivos, etc.

En general, es un enfoque que puede interesarnos siempre que se trate de realizar un trabajo pesado, que no requiera intervención alguna por parte del usuario ni siquiera para darle feedback del progreso o terminación, y que pueda ejecutarse de forma independiente a las peticiones HTTP que acceden a la aplicación.
martes, 3 de junio de 2014
ASP.NET MVCLa revisión 5.2 de ASP.NET MVC, cuya release candidate acaba de anunciarse, introduce algunas pequeñas mejoras en los helpers de generación de listas desplegables de esas que, aunque no son imprescindibles, sí nos simplifican un poco la vida a la hora de construir formularios. Estos cambios son:
  • La capacidad de agrupar elementos en una lista usando el tag <optgroup> de HTML.
  • La posibilidad de deshabilitar elementos individuales, de forma que aunque aparezcan en la lista no puedan ser seleccionados.
Vamos a verlas en detalle.
miércoles, 14 de mayo de 2014
Microsoft ASP.NETHace un par de días, en el marco del TechEd Norte América, además de presentar la RTM de Visual Studio 2013 Update 2, cambios en Azure y muchos otros productos,  se anunciaron las principales novedades que se incluirán en ASP.NET vNext, la próxima versión de la pila de tecnologías de desarrollo para la web de Microsoft. Y como no podía ser de otra forma, han provocado un revuelo importante en la comunidad por el calado y trascendencia de algunas de estas novedades.

Aunque todavía no se conocen todos los detalles, sí tenemos ya bastantes datos sobre hacia dónde se va  encaminando ASP.NET y en qué están trabajando los distintos equipos de desarrollo en Redmond. Pero antes que nada, un pequeño disclaimer: Todo lo que os voy a contar a continuación no es definitivo, ni completo, ni probablemente correcto al 100%, pero al menos os puede servir como idea de por dónde van los tiros ;-)
lunes, 24 de marzo de 2014
ASP.NET MVC lifecycleProbablemente muchos ya estaréis al tanto, pero es algo tan sumamente interesante que no podía dejar de comentarlo por aquí. Resulta que hace unas semanas publicaron en el sitio oficial de ASP.NET MVC un documento en PDF que detalla minuciosamente el ciclo de vida de este tipo de aplicaciones: Lifecycle of an ASP.NET MVC 5 Application. Imprescindible.

Los impacientes podéis descargar directamente el PDF siguiendo este enlace e ignorar el resto de este post si lo creéis conveniente ;-P. Para los que tengáis algo más de tiempo, os resumo lo que vais a encontrar en él.
martes, 11 de marzo de 2014
ASP.NET MVCEstá claro que Bootstrap ha calado hondo en los productos de la familia ASP.NET como marco de trabajo “oficial” para la maquetación de las páginas o vistas. Tanto es así, que incluso hay una característica introducida en la revisión 5.1 de MVC para facilitar el trabajo con el mismo, aunque siendo estrictos, puede beneficiar también al que opte por otro framework o incluso prefiera soluciones más artesanas.
martes, 4 de marzo de 2014

El operador “?.”, también llamado safe navigation operator, era la característica más demandada para el lenguaje C# en Uservoice, uno de los principales canales utilizado por Microsoft para obtener feedback e ideas a aplicar en nuevas versiones de sus productos, y parece que definitivamente se está considerando la posibilidad de incluir este útil azucarillo sintáctico tanto en C# como en VB.

Para los que no lo conozcáis, se trata de una construcción que permite acceder a propiedades de objetos sin temor a las null reference exceptions lanzadas cuando estos objetos son nulos.
miércoles, 26 de febrero de 2014
Curso de ASP.NET MVC 5 en CampusMVPY seguimos con los estrenos... ;) Si sólo hace unos días os presentaba mi nuevo libro sobre SignalR, llega ahora el turno a otro de los asuntos que me han tenido muy entretenido las últimas fechas: el nuevo curso de ASP.NET MVC 5 en CampusMVP.

Se trata de una revisión completa del curso de MVC 4 que tanto éxito de crítica y público ha tenido hasta la fecha, para adaptarlo por completo a las novedades presentes en la versión más reciente del marco de trabajo (en este caso la versión 5.1, aparecida en enero). El temario es, a grandes rasgos, el siguiente:
  • Introducción a ASP.NET MVC, donde realizamos un primer acercamiento al framework MVC, describimos el contexto tecnológico en el que se sitúa, y sentamos las bases sobre las que continuar el aprendizaje.
  • El siguiente módulo, la  primera aplicación ASP.NET MVC, crearemos nuestra primera aplicación partiendo de las plantillas por defecto de Visual Studio, que nos será de utilidad para comprender la estructura de este tipo de proyectos y el funcionamiento del marco de trabajo.
  • Continuaremos añadiendo funcionalidades a esta aplicación, donde introduciremos nuevas características partiendo desde cero, aprovechando la ocasión para profundizar en la creación de modelos, vistas y controladores.
  • Seguidamente estudiaremos la capa Modelo a fondo, viendo distintas formas de implementar sus componentes.
  • A continuación, nos sumergimos en la capa Controlador, detallando minuciosamente la creación de controladores, las posibilidades que nos ofrecen, y el conjunto de herramientas que nos facilita el framework para ellos, como el sistema de routing, el binding, filtros, o resultados de acciones.
  • También trataremos con gran detalle la creación de la capa Vista, donde describiremos sus tipos, implementación y mecanismos del marco de trabajo que nos facilitan la tarea, como los helpers estándar, plantillas, validadores, los helpers de Webpages, vistas para dispositivos móviles, o el sistema de bundling, entre otros, usando principalmente el motor de vistas Razor (aunque también se toca el motor ASPX).
  • En Ajax con ASP.NET MVC realizaremos un recorrido por las distintas alternativas para la introducción de Ajax en nuestros sistemas, y mostraremos la solución a escenarios comunes.
  • Veremos WebAPI, el framework para implementar servicios o APIs de nuestras aplicaciones, con una gran alineación con los protocolos de la red y el estilo arquitectural REST.
  • También trataremos cómo organizar los proyectos en Áreas, y los cambios que implican en cuanto a la estructura y funcionamiento de las aplicaciones.
  • Dedicaremos un capítulo a temas adicionales, básicamente para tratar otros aspectos no incluidos en los módulos anteriores, como la realización de pruebas unitarias y las facilidades para la resolución de dependencias, internacionalización, el despliegue de aplicaciones, o el sistema de autenticación basado en ASP.NET Identity.
  • Por último, presentamos BlogMachine y describimos sus principales componentes, sugiriendo modificaciones y ampliaciones que podrían realizarse para poner en práctica los conocimientos adquiridos.
Como venimos haciendo desde hace ya bastantes años, de una versión a otra no sólo vamos actualizando los contenidos de texto, vídeos, ejemplos y prácticas a las novedades de la última versión del framework, sino que aprovechamos cada actualización para hacerlo aún más potente. Ahora, por ejemplo, hemos incluido evaluaciones parciales para que puedas verificar tu progreso conforme avanzas o, en el último módulo del curso, una aplicación completa de ejemplo hecha desde cero para ver y tocar muchos de los conceptos tratados a lo largo del curso de forma integrada: BlogMachine.


El curso se imparte totalmente online a través de la plataforma CampusMVP, sin horarios y a vuestro propio ritmo. Podéis comenzarlo en cualquier momento y la duración del curso está estimada en 12 semanas (con una dedicación media de 6 o 7 horas por semana, dependiendo del nivel de partida).

Durante su duración tendréis acceso a una completísima documentación (más de 400 páginas) que podréis descargar una vez terminado, así como a más de dos horas y media de vídeos donde se muestran en vivo los principales conceptos tratados, aplicaciones de ejemplo, recursos adicionales, buenas prácticas y consejos del día a día que seguro convertirán MVC en vuestro marco de trabajo favorito. Además, dado que soy el tutor, contaréis con mi asistencia para resolver vuestras dudas sobre los temas tratados y ayudaros a lo largo del proceso formativo.

Si estáis interesados, sólo tenéis que ir a la tienda online de CampusMVP y apuntaros directamente. Ah, y tened en cuenta que si trabajáis en España los cursos pueden salirle gratis a vuestra empresa gracias a la formación bonificada.

¡Espero veros a muchos por allí! ;)

Publicado en Variable not found.
martes, 29 de octubre de 2013
ASP.NET MVC 5Hace poco pudimos vivir un día de esos en los que Microsoft publica nuevas versiones de todo. O casi: ASP.NET MVC 5, Web API 2, SignalR 2, Entity Framework 6, o Visual Studio 2013, entre otros. Muchas novedades que aprender, descubrir, probar… y sobre las que escribir, sin duda ;-)

ASP.NET MVC 5 es, quizás, el producto con menos cambios y novedades de todos los citados anteriormente. Ojo, esto no tiene por qué ser necesariamente malo: quiere decir que nuestro querido framework ha alcanzado ya un nivel de madurez importante y no necesita grandes cambios para seguir dándonos todo lo que necesitamos para crear aplicaciones web. Sin embargo, no puedo negar una cierta desazón ante la falta de esas novedades espectaculares que han venido acompañando entregas anteriores (¿recordáis cuando llegó Razor? ¡Uaaaaau!).

Pero antes que nada, deciros que ASP.NET MVC 5 completo (tooling y ensamblados) está disponible en estos momentos exclusivamente en Visual Studio 2013. Si utilizamos Visual Studio 2012 podemos descargar y utilizar los binarios usando Nuget, pero no habrá soporte a nivel de IDE hasta mediados de Noviembre, cuando se prevé que será lanzada una actualización del entorno.

Y dicho esto, vamos a comentar los cambios más destacados que acompañan a esta nueva versión.
miércoles, 11 de septiembre de 2013
Sin duda, si hay un término que está ganando popularidad en los últimos tiempos, éste es OWIN. Y mejor que nos vayamos acostumbrando a él, porque viene pisando fuerte y probablemente nos acompañe en bastantes de nuestros desarrollos del lado servidor a partir de la próxima oleada de versiones de plataformas que está a punto de aterrizar.

OWIN (Open Web Interface for .NET) es una especificación abierta iniciada por dos miembros del equipo de ASP.NET en Microsoft, Louis Dejardin y Benjamin Vanderveen, que define un interfaz estándar para comunicar servidores con aplicaciones .NET, inspirada en iniciativas similares procedentes de tecnologías como Ruby, Python o incluso Node. La versión 1.0 de la especificación fue publicada en octubre de 2012 y está disponible en el sitio web del proyecto.
lunes, 9 de septiembre de 2013
WelcomeParece que fue ayer cuando me despedía hasta septiembre, y resulta que ya estamos por aquí de nuevo. Bueno, en realidad ya llevo activo bastante tiempo, así que sólo me faltaba este post inaugural de la nueva temporada de Variable not found para estar ya a tope.

Como preveía, no han sido unas vacaciones especialmente relajadas ni de mucho descanso, pero al menos algunos días libres sí que he podido disfrutar con la familia, creo que los suficientes para considerar las pilas recargadas y listas para afrontar la nueva temporada.

Signalr book¿Y por qué he estado tan liado? Pues aparte de algunos compromisos profesionales que he tenido activos todo el verano, la mayor parte del tiempo he estado ocupado en algo que ya, por fin, puedo contaros de forma oficial: he estado trabajando con CampusMVP en la creación de un nuevo libro sobre SignalR que será publicado y distribuido de forma global por Microsoft Press. Es todo un honor tener la oportunidad de poder participar en este proyecto, y espero estar a la altura de las circunstancias :)

El libro es mucho más amplio y ambicioso que el que ya escribí sobre el mismo tema hace unos meses, y, por supuesto, relativo a la última versión del producto, que aún se encuentra en desarrollo. Os iré contando más detalles conforme avance el proyecto.

En cuanto a Variable not found, vamos a ir volviendo a la normalidad. Para empezar, en breve publicaré la primera recopilación de enlaces de la temporada. Espero que esta serie de posts siga siendo de vuestro interés, como algunos me habéis transmitido.

Y tengo muchos artículos por escribir. Tenemos un aluvión de novedades a la vista, como la nueva oleada de versiones de todas las plataformas web de Microsoft, acceso a datos (EF), nuevas versiones de Visual Studio, y nuevos e interesantes conceptos como OWIN y Katana, que están entrando con fuerza y debemos dominar para hacernos con los mandos de las tecnologías en las que trabajaremos en los próximos meses. En fin, se prevé una temporada movidita y bien cargada de novedades que intentaremos ir desgranando. La diversión está asegurada, porque sí, nos quejamos de tantos cambios, pero nos encanta ;)

También me gustaría escribir algunos artículos destinados a lectores más noveles, tratando temas más básicos. Que no me digan como ya ha hecho alguno ;) que sólo tratamos cosas raras, como inyección de dependencias o factoríasabstractasdeproveedoresdemetadatos. Se hará lo que se pueda. Por cierto, me encanta recibir feedback de este tipo, así que si tenéis algo que sugerir, comentar, o pedir, tenéis un bonito formulario de contacto a través del cual podéis hacerlo.

Bien, pues dicho esto, comencemos a buscar la variable. ¡Queda inaugurada la temporada 2013-2014 de Variable not found!
martes, 16 de julio de 2013
Microsoft patterns & practicesSin duda, las convenciones están de moda. Cualquier framework actual que se precie trae su propio conjunto de convenciones, que no son sino una serie de reglas predefinidas, normalmente de carácter opcional, cuyo cumplimiento evitará que tengamos que tomar decisiones, evitará que cometamos errores, y, normalmente, aumentarán nuestra productividad.

Pues bien, comentaba hace poco que una de las sorpresas que acompañaba a la nueva versión de Unity, el Contenedor de Inversión de Control creado por el equipo de Patterns & Practices de Microsoft, es precisamente la posibilidad de usar convenciones a la hora de registrar asociaciones entre interfaces y clases de nuestro sistema, lo cual nos vendrá de fábula en muchas ocasiones.
miércoles, 3 de abril de 2013
ASP.NETLa 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 a ella la carga de bibliotecas de script comunes, pero queremos a la vez proporcionar una alternativa local por si acaso ésta fallase debido a cualquier motivo.
viernes, 28 de diciembre de 2012
imageIndudablemente, hoy en día llevamos en el bolsillo ordenadores en miniatura mucho más potentes de lo que eran los equipos de escritorio hace unos años. Cualquier smartphone razonablemente actualizado es capaz de funcionar a más de 1Ghz y cuenta con varios gigabytes de memoria RAM, y, sin embargo, toda esta potencia está infrautilizada la mayor parte del tiempo.

Por otro lado, tampoco se puede dudar ya de la entrada de la nube en nuestras vidas. Cada vez desplazamos más capacidad de almacenamiento y proceso a infraestructuras fiables y escalables como las ofrecidas por proveedores como Microsoft, Amazon, Google, Oracle y otros, con un coste más que razonable. Esto, sin embargo, presenta un reto a medio y largo plazo: ¿serán las infraestructuras de estos proveedores suficientes como para soportar el crecimiento exponencial en servicios demandados por los usuarios?
miércoles, 3 de octubre de 2012
TypeScriptSiempre he tenido la sensación de que Javascript no ha evolucionado de forma proporcional a las responsabilidades y expectativas que han ido depositando en él. El explosivo crecimiento que ha sufrido en los últimos años no venía acompañado de mejoras en el lenguaje que nos ayudaran a implementar aplicaciones cada vez más extensas y complejas, para las que es muy conveniente disponer de herramientas más potentes que las ofrecidas de serie por este veterano lenguaje.

Y Microsoft ha movido ficha. Hace un par de días, S. Somasesegar, vicepresidente corporativo de la división de desarrollo de la casa, presentó un nuevo lenguaje que pretende acabar con las tradicionales carencias de Javascript, al que han denominado TypeScript. Detrás de este nuevo “invento” está el mismísimo Anders Hejlberg, padre de C# y otras maravillas, que ya sabíamos hace tiempo que andaba liado con algo relacionado con Javascript.