martes, 30 de junio de 2015
Desde la versión 3 de ASP.NET MVC, los filtros globales nos han solucionado con facilidad la anteriormente ardua labor de definir filtros en todos los controladores y acciones de nuestra aplicación sin tener que introducirlos uno a uno o crear controladores base.
Por convención, los registrábamos en una clase llamada FilterConfig, habitualmente ubicada en la carpeta /App_Start del proyecto, y cuya pinta era más o menos la siguiente:
Este código era llamado durante la inicialización de la aplicación desde el evento
Por convención, los registrábamos en una clase llamada FilterConfig, habitualmente ubicada en la carpeta /App_Start del proyecto, y cuya pinta era más o menos la siguiente:
Este código era llamado durante la inicialización de la aplicación desde el evento
Application_Start()
del archivo Global.asax:Publicado por José M. Aguilar a las 8:45 a. m.
Nadie ha comentado la entrada, ¿quieres ser el primero?
Etiquetas: aspnetcore, aspnetcoremvc, desarrollo
lunes, 29 de junio de 2015
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- .NET versioning and multi-targeting on C# application and component
Southmountain - Exception filters in C# 6: their biggest advantage is not what you think
Thomas Levesque - TwinsOrNot.net Source Code Download
Scott Ge - ¿Qué son y en qué se diferencian .NET Full Framework y .NET Core Framework?
Vídeo de Unai Zorrilla - Debugging a Start of a Windows Service
Sebastian Solnica - What is ASP.NET console application?
Gunnar Peipman - Message Queuing with RabbitMQ Succinctly (free e-book)
Stephen Haunts - Using AutoMapper in your application for translating source object to destination object
Adarsh Chaurasia - Which Uri Encoding method should i use in C#/.net?
Leon Bambrick - [.NET] Qué son los Generics y su implementación en C# (I)
Sergio Parra
martes, 23 de junio de 2015
Los filtros de MVC, o action filters, han sido potenciados en la versión 6 del framework añadiéndoles características que en versiones anteriores no estaban disponibles de serie en la plataforma pero que han sido muy solicitadas por los desarrolladores. Hace algún tiempo vimos una de ellas, los filtros asíncronos, y hoy veremos que la inyección de dependencias en filtros también es ya una realidad.
El problema con la inyección de dependencias en los filtros es la instanciación de éstos, pues al definirse en forma de atributos de .NET no puede realizarse de forma controlada, o al menos lo suficientemente controlada como para poder inyectarles parámetros en el constructor o cargar sus propiedades desde un contenedor de inversión de control. Y aunque los filter providers aportaron alguna solución vía los contenedores IoC más populares, aún no eran una solución todo lo limpia que debería ser.
Pero como decía David Wheeler, “Cualquier problema en ciencias de la computación puede ser solucionado con otro nivel de indirección”… y eso mismo han debido pensar la gente del equipo de ASP.NET en Microsoft, cuando la solución que han dado consiste, básicamente, en crear un filtro capaz de instanciar otros filtros usando el contenedor de servicios integrado :)
El problema con la inyección de dependencias en los filtros es la instanciación de éstos, pues al definirse en forma de atributos de .NET no puede realizarse de forma controlada, o al menos lo suficientemente controlada como para poder inyectarles parámetros en el constructor o cargar sus propiedades desde un contenedor de inversión de control. Y aunque los filter providers aportaron alguna solución vía los contenedores IoC más populares, aún no eran una solución todo lo limpia que debería ser.
Pero como decía David Wheeler, “Cualquier problema en ciencias de la computación puede ser solucionado con otro nivel de indirección”… y eso mismo han debido pensar la gente del equipo de ASP.NET en Microsoft, cuando la solución que han dado consiste, básicamente, en crear un filtro capaz de instanciar otros filtros usando el contenedor de servicios integrado :)
lunes, 22 de junio de 2015
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- A couple of notes about .NET Framework 4.6 setup behaviors
Aaron Stebner - [C#] ¿Cómo ha evolucionado nuestro lenguaje favorito?
Sergio Parra - .NET JavaScript Engine Performance Results
Rush Frisby - Run Executable from Resources in C#
Ahmed E Osama - xUnit.net 2 Cheat Sheet
Jason Roberts - C# 6: Expression Bodied Members Simplify Your Code
Bill Wagner
martes, 16 de junio de 2015
Me complace informaros de que, por fin, tenemos disponible en nuestro idioma mi libro sobre SignalR 2.0 que ya lleva algún tiempo en el mercado publicado en inglés por Microsoft Press, como libro “oficial” de esta tecnología.
Tras las traducciones al japonés y al chino, finalmente lo tenemos en español gracias al interés que desde un principio habéis mostrado todos, y al equipo de CampusMVP/Krasis Press, que han sido los encargados de sacarlo adelante. Un gran periplo desde su creación hasta devolverlo a su idioma original, que explica fantásticamente José Manuel Alarcón en su entrada "SignalR: la vuelta al mundo de un libro", y que os recomiendo que no os perdáis para conocer cómo empezó esta aventura y las cosas increíbles que han ocurrido desde entonces :)
lunes, 15 de junio de 2015
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- The difference between & and && operators
Colin Angus Mackay - Concurrency, part 6: Easier asynchrony in C# with await
Schabse Laks - How to Concatenate strings inside a List using Lambda Expression in C# ?
Senthil Kumar - Writing a simple Decompiler for .NET - Part 1
Karl - Visual Basic 14 Inline Comments & IsNot Works with TypeOf
Peter Vogel - Fluent Assertions
Rahul Sahay - LEADTOOLS Recognition Imaging SDK- Create Imaging Apps Easily
Dirk Strauss - Expresiones regulares en .NET
Sergio León
martes, 9 de junio de 2015
La verdad es que el nuevo sistema de configuración de ASP.NET Core tiene bastante buena pinta. Es potente, muy flexible y es bastante fácil de extender si tuviéramos necesidad de hacerlo.
Independientemente del proveedor que elijamos para almacenar los settings (un archivo JSON, un .INI, o el que sea), el acceso a la información siempre se realiza utilizando una cadena de caracteres hasta llegar al valor deseado de la configuración, como podemos observar en el siguiente ejemplo:
Sin embargo, esto puede ser una fuente de problemas, pues obviamente estas cadenas no son sometidas a ningún tipo de control en compilación y cualquier cambio de estructura o nombre de setting en el archivo de configuración podría provocar comportamientos incorrectos en nuestra aplicación.
Independientemente del proveedor que elijamos para almacenar los settings (un archivo JSON, un .INI, o el que sea), el acceso a la información siempre se realiza utilizando una cadena de caracteres hasta llegar al valor deseado de la configuración, como podemos observar en el siguiente ejemplo:
Sin embargo, esto puede ser una fuente de problemas, pues obviamente estas cadenas no son sometidas a ningún tipo de control en compilación y cualquier cambio de estructura o nombre de setting en el archivo de configuración podría provocar comportamientos incorrectos en nuestra aplicación.
lunes, 8 de junio de 2015
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
Eventos
- [Evento] Windows 10 Developer Readiness Powered by MVPs
Javier Suárez
.Net
- C#/.NET Little Wonders: Null Conditional Operator in C# 6
James Michael Hare - Understand how bitwise operators work (C# and VB.NET examples)
ProgramFOX - C# Futures: Immutable Classes
Jonathan Allen - C#- How to Record What Gets Written to or Read From a Stream
Mike Hadlow - Backwards compatibility is (still) hard
John Skeet - Creating a Knockout-Style Variable in C#
Chris Eagle - Using Reflection to Get Enum Description and Value
Bruno Leonardo Michels
lunes, 1 de junio de 2015
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)