Los detalles ya los comentamos en un post anterior, ahora vamos a centrarnos en ver algunos cambios importantes que llaman la atención cuando empezamos a jugar con esta nueva entrega de ASP.NET Core.
Publicado por José M. Aguilar a las 9:12 a. m.
Etiquetas: aspnetcore, novedades
Eventos
- Sevilla (España), 27 de Mayo
Revisando los principios del manifiesto ágil – ¿cómo de ágiles somos?
Javier Suárez
.Net
- Happy 25th Birthday, VB!
Anthony D. Green - Operator Overloading in C#
Abhi Jain - Using Westwind.Globalization to edit loose RESX Files
Rick Strahl - Asynchronous Programming. Getting to grips with Async and Await
George Swan - Docker and .NET Core CLR Release Candidate 2
Mano Marks - .NET Core, a call to action
Mark Rendle - Introduction to Roslyn and its use in program development
Sergey Vasiliev - The week in .NET – 5/16/2016
Bertrand Le Roy - Announcing .NET Core RC2 and .NET Core SDK Preview 1
Rick Lander
Programación con ASP.NET SignalR 2.0 Krasis Press David Carrascosa @carrascosad Madrid | |
Programación con ASP.NET SignalR 2.0 Krasis Press Ellery Sammy Valest Torres @ellerysammy Barranquilla – Cartagena | |
SignalR programming in Microsoft ASP.NET Microsoft Press Dachi Gogotchuri @dachibox Madrid |
¡Muchas gracias a todos por participar! Y no os despistéis mucho, porque esto sólo acaba de comenzar y en breve vamos a lanzar nuevas oportunidades para que os llevéis regalos aún más sorprendentes.
Publicado en Variable not found
También os adelanté que mi idea era organizar sorteos de productos y servicios proporcionados por los patrocinadores que se han sumado a este acontecimiento. Se trata de empresas que todos conocéis sobradamente y que han decidido donar productos y servicios de gran calidad (y habitualmente de un coste considerable) para vosotros.
Pero para inaugurar esta serie, quería empezar con una aportación personal que, por su significado, es para mi muy especial: sortearemos 3 ejemplares en papel de mi libro "Programación con ASP.NET SignalR".
Esta release viene cargada de novedades, comenzando por ser la primera en alinearse con el nombre "core" en los frameworks anunciado hace algunos meses, la migración desde DNX al nuevo .NET CLI (interfaz de línea de comandos de .NET), revisión profunda del modelo de hosting y arranque de aplicaciones, muchos cambios en los API (sí, no debería haber pasado desde la RC1, pero pasó...), mejoras espectaculares en rendimiento, centenares de bugs corregidos, etc.
.Net
- Params: pasando cantidad indefinida de parámetros en C#
Diego Bersano - Yield return in C#
Kenneth Truyers - Advanced Pattern Matching Features Removed From C# 7
Sergio De Simone - The week in .NET – 5/10/2016
Bertrand Le Roy - C#7 Features
Alex Mackey - Serilog 2.0 Release Plans
Nicholas Blumhardt
Diez años después, con más de ochocientas cincuenta entradas, cerca de 2.000 comentarios publicados, y acercándonos a los dos millones de páginas vistas, si hay algo que tengo claro es que esto no habría sido posible sin vosotros, queridos lectores y amigos de la Variable. Muchas gracias a todos por estar ahí durante todos estos años, por vuestras visitas, vuestras aportaciones y sugerencias, y por permitirme seguir aprendiendo de vosotros cada día.
Y como desde pequeñito me enseñaron que en este mundo hay que ser agradecido, lo mejor que puedo hacer es celebrar este grato acontecimiento con todos vosotros :)
Así que, contando con el increíble apoyo de compañías de primera línea que han decidido sumarse a esta fiesta de celebración, durante las próximas semanas vamos a realizar sorteos de productos y servicios que seguro os entusiasmarán :)
[Actualizado: 3-Julio-2016] Hemos finalizado la ronda de sorteos y regalos, y ha sido un éxito. Regalos para todos, cientos de participantes en los sorteos de productazos increíbles, premios por valor de decenas de miles de dólares en total, y mucha diversión en los comentarios que hemos recibido:
- Licencias de Resharper Ultimate.
- Por el aniversario de VariableNotFound, ¡O'Reilly te regala un libro!
- Componentes de Telerik.
- Componentes de DevExpress.
- Componentes profesionales de GrapeCity.
- Curso online de ASP.NET MVC 5 en CampusMVP.
- Ejemplares en papel de mi libro Programación con SignalR.
El blog: las cifras del año pasado
Y dicho todo lo anterior, ya sabéis que me gusta siempre hacer un breve repaso de la evolución del blog durante el año pasado, así que, para los curiosos, ahí va.Siguiendo en la tónica de los últimos años, continuamos lo que ya el año pasado denominé como una fase de leve crecimiento sostenido. Según las analíticas de Google, nos visitaron 150.000 usuarios (+6%), 272.000 páginas vistas (+0,64%), con un promedio de tiempo de estancia de 03m48s (+5%). En la página de Facebook superamos los 800 amigos (+7%), y en Twitter superamos los 1415 seguidores (+13%).
El oráculo de Google dice que la mayoría sois hombres (83%), aunque curiosamente este dato ha descendido un 7% en el último año, principalmente de entre 25 y 34 años (50%), profesionales de internet, tecnófilos, aficionados al cine y TV, entusiastas de los móviles y de los deportes (fútbol, principalmente).
Chrome sigue siendo el navegador más usado para acceder a los contenidos, con más del 73% de los usuarios. Respecto al año pasado, siguen cayendo Firefox (16%) y IE (6%). El nuevo Edge no supera el 1%. El 92% de vosotros usáis Windows, siendo Mac el segundo más utilizado con el 3%. Curiosamente, el 50% lo hacéis desde Windows 7, el 23% desde Windows 8.1, y algo más del 16% estáis ya utilizando Windows 10.
Tras varios años de incremento de visitas procedentes del otro lado del Atlántico, el origen de las visitas está prácticamente igualado ya entre España (22%) y Mexico (21%). Algo detrás, pero también in crescendo, tenemos Colombia (11%), Perú (8%), Argentina (7%) y Chile (6%).
Como es habitual, el 83% de las visitas proceden de los buscadores, Google en más del 99% de las ocasiones. El acceso directo, introduciendo la URL o desde favoritos, se utiliza el 10% de las ocasiones, y apenas un 4% de enlaces desde otros sitios web.
Y respecto a la pregunta que me han hecho tantas veces: "¿Y realmente te vale la pena? ¿Qué sacas tú de esto?" La respuesta sigue siendo una afirmación categórica, por supuesto que vale la pena. La satisfacción que supone escribir sobre lo que me gusta y pensar que esto puede ser útil a alguien es inigualable, y los grandes amigos que voy haciendo a lo largo de este camino no tienen precio. Sólo esto ya compensa al 100% el esfuerzo que supone mantener un blog tanto tiempo.
Pero dejando los intangibles aparte, también aporta otro tipo de beneficios más terrenales, aunque no por el lado de la publicidad, que es el que parecería obvio: Adsense sigue básicamente en su tónica; los ingresos me permiten invitar a mi familia a almorzar un par de veces al año, pero decididamente esto no va a ayudarme a liquidar la hipoteca ;D Ni rastro tampoco de los posts patrocinados de antaño, ni de anunciantes fijos que sí disfruté hace algunos años ya.
Los beneficios son indirectos y llegan en forma de visibilidad y oportunidades profesionales que de otra forma no habrían sido posibles. Por tanto, os puedo decir de primera mano que realmente un blog no sólo os podría ayudar a encontrar empleo; si prestáis servicios profesionales de cualquier tipo, vuestra bitácora puede seros incluso de más utilidad que contratar una valla publicitaria en vuestra autopista favorita ;D
Eso sí, también os puedo decir que en ningún caso, al menos de los que conozco, se trata de un retorno inmediato: se requieren años para llegar a este punto, y de hecho lo más habitual es que se caiga por el camino antes de conseguirlo. Pero sinceramente, no es nada que con un poco de paciencia y tesón no pueda conseguirse, así que os animo a lanzaros de forma decidida, que seguro que vuestro yo del futuro os lo agradecerá ;)
Y finalmente, aprovecho estas últimas líneas para agradeceros de nuevo vuestro incondicional apoyo durante todo este tiempo, y espero que sigáis por aquí muchos años más, ayudándome a buscar la Variable.
Publicado en Variable not found.
.Net
- Creating a phone number lookup bot using Microsoft Bot Framework and C#
Marcos Placona - Arithmetic Overflow and Underflow in .NET - Some Nitty Gritties
Rasik Bihari Tiwari - New features of C# 7.0
Sarva Raghavan - Tooling to Facilitate Framework Migrations
Bertrand Le Roy - .NET: Shared App Settings
Keith Burnell - Introduction to .NET Framework Compatibility
Mike Rousos - The week in .NET – 5/3/2016
Bertrand Le Roy - Free eBook C# 6.0: What’s New Quick Start Complete
Jason Roberts - 8 things you probably didn’t know about C#
Damien Guard - C# Bad practices: Learn how to make a good code by bad example – Part 2
Radosław Sadowski
Hace un par de días, Scott Hunter, Program Manager de .NET en Microsoft, desvelaba las fechas de aparición y otros detalles sobre las próximas releases de ASP.NET Core, de las que no teníamos noticias desde el pasado mes de febrero, momento en que decidieron retrasar los lanzamientos previstos.
Veamos cómo queda ahora la cosa.
En ASP.NET "clásico" teníamos varias opciones, como utilizar las propias herramientas de tracing del framework o frameworks especializados de terceros como los célebres Log4Net, NLog o muchos otros, pero al final la idea era la misma, poder disponer de un componente en el que poder registrar sucesos como el siguiente:
public ActionResult RemoveInvoice(string id) { ... // Remove the invoice _logger.LogInformation($"Invoice {id} was removed by {User.Identity?.Name}"); return RedirectToAction("Index"); }El nuevo ASP.NET Core viene equipado de serie con un sistema de logging interno, integrado en el propio marco de trabajo, que proporciona funcionalidades básicas pero, sobre todo, los mimbres básicos sobre los que montar sistemas de trazas más complejos y personalizables.
Dedicaremos este post a ver cómo se configura y utiliza este mecanismo que, como otros aspectos del framework, está construido pensando en su extensibilidad, y hace uso intensivo del sistema de inyección de dependencias.
Nota: aunque este componente no es un gran candidato a cambiar dada las pocas actualizaciones que ha sufrido en los últimos meses, es bueno recordar que todavía estamos utilizando una release candidate de ASP.NET Core y, por tanto, algunos detalles aún podrían variar antes de que aparezca la versión final del producto.
.Net
- Building strongly typed application configuration utility with Roslyn
Filip Woj - Background Tasks in .NET
Derek Comartin - The week in .NET – 4/27/2016
Bertrand Le Roy - Choosing The Right Collection
Arthur Minduca - The .NET of Tomorrow
Ed Charbeneau - Serializing JSON Data into Binary Form
Mahesh Sabnis - Thread.Sleep in Tests Is Evil
Steve Smith - netstandard–El “estándar” que viene
Eduard Tomás
Al hilo de lo tratado en el último post sobre la ramificación del pipeline de ASP.NET Core utilizando los extensores
Map()
y MapWhen()
, el amigo Fernando V. dejaba una pregunta interesante en los comentarios del blog:"[…] Igual que hemos visto cómo ramificar el pipeline, sería posible volver a unir las distintas ramas en una sola?"Tampoco creo que sea muy habitual crear este tipo de estructuras en el pipeline, pero la verdad es que me ha parecido un reto muy interesante, lo suficiente como para dedicarle un post ;D
.Net
- Exploiting the ConcurrentDictionary in Asynchronous Applications
Peter Vogel - Edit and Continue Part 2 – Roslyn
Josh Varty - Why Azure REST API-s and how to prepare for using them?
Gunnar Peipman - The week in .NET – 4/19/2016
Bertrand Le Roy - Edit and Continue Part 1 – Introduction
Josh Varty - Introducing the Microsoft .NET Framework Repair Tool Version 1.3
Rakesh Ranjan Singh - If You Want to Get Into OSS, Consider This Project
James Chambers - 2D Polyline Vertex Smoothing
Ven RP
Al representar gráficamente el pipeline de ASP.NET Core, lo habitual es hacerlo como una tubería única en las que colocamos estratégicamente los middlewares que procesarán las peticiones que entrarán por ella.
Incluso a nivel de código, la inserción de middlewares se realiza normalmente invocando métodos del tipo
UseXXX()
sobre la instancia de IApplicationBuilder
que recibimos en el método Configure()
de la clase Startup
de nuestras aplicaciones ASP.NET Core.Esto parece dar a entender que el pipeline es lineal, y que todas las peticiones serán procesadas de la misma forma y por los mismos middlewares, salvo que alguno de ellos decida cortocircuitar la petición.
Sin embargo, aunque eso será lo más frecuente, no es obligatoriamente así. Ya desde los tiempos de Katana tenemos la posibilidad de dividir el pipeline en branches o ramas en función de determinados criterios, permitiéndonos crear configuraciones mucho más complejas y potentes que las que habitualmente suelen mostrarse.
Como ejemplo, en el diagrama lateral podemos observar un pipeline en cuya entrada se encuentra un middleware de gestión de errores, y que a continuación se divide en función de la ruta de la petición de entrada. Así, las peticiones cuyas rutas comiencen por "/SignalR" serán procesadas por los middlewares configurados en la rama de la izquierda; las que comiencen por "/API" serán procesadas a lo largo de la rama derecha, y el resto continuará su proceso por la rama central.
Vamos a ver cómo conseguir crear estas estructuras, pero, como siempre, tened en cuenta que estamos aún trabajando con una versión preliminar de ASP.NET Core y hay detalles que podrían cambiar en la versión definitiva.
StaticFilesMiddleware
y cómo permitir la navegación (o browsing) sobre directorios presentes en el sistema de archivos mediante DirectoryBrowerMiddleware
.Sin embargo, el paquete Nuget Microsoft.AspNetCore.StaticFiles aún contiene algunas perlas adicionales que es conveniente conocer para afinar aún más el comportamiento de nuestro servidor de archivos, e incluso para aumentar la productividad a la hora de implementarlo en nuestras aplicaciones.
Hey, pero como siempre, recordad que aún estamos jugando con una versión preliminar de ASP.NET Core, y hay detalles que podrían cambiar antes de alcanzar la versión final del producto.
.Net
- Detecting and Solving Memory Problems in .NET E-Book
Hadi Hariri - Null-Conditional Operator in C# 6.0
Dmitry Zinchenko - String format
Kingcean Tuan - The week in .NET – 4/5/2016
Bertrand Le Roy - C#: should your constructor call base()?
Steven Luu - C# 7 Feature Proposal: New Access Modifier
Bill Wagner - Attributes, Custom Attributes in C#
Sergey Kizyan - C# 7 Features Previewed
Jonathan Allen - Build 2016 Wrap up
Jeffrey T. Fritz
Para entrar en materia, en dicho post presentamos
StaticFilesMiddleware
, el componente proporcionado por ASP.NET Core que, insertado convenientemente en el pipeline, es capaz de capturar las peticiones cuya ruta coincide con un recurso estático presente en el sistema de archivos y retornar su contenido al cliente.Sin embargo, el paquete Nuget Microsoft.AspNetCore.StaticFiles contiene otros middlewares que cubren necesidades que podemos encontrar con frecuencia cuando en nuestras aplicaciones necesitemos gestionar contenidos estáticos.
Y aún a riesgo de resultar cansino, antes de continuar os recuerdo que seguimos trabajando con versiones preliminares de ASP.NET Core, por lo que todavía podrían introducirse cambios en el producto.
Publicado por José M. Aguilar a las 9:10 a. m.
Etiquetas: aspnetcore, aspnetcoremvc, middlewares, static files
Enlaces destacados de la semana (o del mes, o quizás del año ;))
- Mobile App Development made easy with Visual Studio and Xamarin
John Montgomery - Xamarin for Everyone
Nat Friendman
Una de las principales características del nuevo ASP.NET Core es su diseño modular. El framework no es ahora un mastodonte monolítico sino un gran conjunto de pequeños componentes que incluiremos en nuestras aplicaciones exclusivamente cuando sea necesario.
Esto, que a priori se muestra como una ventaja en términos de rendimiento y flexibilidad de nuestros sistemas, presenta también algunos pequeños inconvenientes que debemos tener en cuenta a la hora de desarrollar aplicaciones.
Por ejemplo, en versiones anterior de ASP.NET no teníamos que preocuparnos demasiado de la gestión de los archivos estáticos (JS, CSS, HTML, fuentes...) porque teníamos por abajo a IIS que se encargaba de procesar las peticiones a este tipo de recursos. Ahora, tras la llegada de ASP.NET Core, las aplicaciones que utilicen archivos estáticos deberán incluir expresamente código para procesarlos.
Pero antes de continuar, recordaros que aún estamos jugando con una release candidate de ASP.NET Core, por lo que parte de lo que veamos a continuación podría no ser totalmente cierto en unas semanas.
Publicado por José M. Aguilar a las 9:10 a. m.
Etiquetas: aspnetcore, aspnetcoremvc, desarrollo, static files
.Net
- Web crawling with .net - part one - concepts
AJSON - .NET Core Console Applications
Ricardo Peres - The week in .NET – 3/22/2016
Bertrand Le Roy - Brownfield Async: Converting IAsyncResult to Task
Jeremy Bytes - Getting All "Special Folders" in .NET
Ray Koopa - High speed applications – parallelism in .NET part 1 & part 2
Erik Bergman - Sharing Information Between Asynchronous Processes
Peter Vogel - Using MEF in .NET Core
Ricardo Peres - Migrando aplicaciones de .NET al nuevo .NET Core - Preguntas y respuestas
José Manuel Alarcón
Seguro que estamos todos de acuerdo en que el nuevo sistema de configuración proporcionado por ASP.NET Core mejora bastante lo que teníamos en las versiones más tradicionales de ASP.NET.
Y la posibilidad de almacenar settings en formatos como .INI o .XML resulta interesante, el formato JSON me parece de lo más cómodo y apropiado para muchos escenarios en los que antes no lo teníamos tan sencillo, como definir configuraciones con un cierto nivel de jerarquía como la siguiente:
.Net
- Introducing Peachpie – the PHP Compiler for .NET
Benjamin Fistein - The week in .NET – 3/8/2016
Bertrand Le Roy - Roslyn scripting on CoreCLR (.NET CLI and DNX) and in memory assemblies
Filip Woj - How to ZIP/Unzip files using .NET/C# (without 3rd party libraries)?
Kunal-Chowdhury - C# Gets Pattern Matching, Disjoint Unions, Tuples and Ranges
Qwertie - Struct vs Class in C#
Abhi Jain - Detecting Liskov Substitution Principle Violations with Code Contracts
Arkadiusz Kaɫkus - Access Modifiers in C#
Abhi Jain - Ungrouping Page Numbers
Richard Carr - A very high performance web server utilizing .NET sockets and async I/O comparable to Node.js + Express and IIS 7.5
Perry Buttler - Use async keyword only when required
Miha Markič - Extending FileSystemWatcher to Use Regular Expression (Regex) Filters
Ambivalent Rob - C# Bad Practices: Learn how to make a good code by bad example
Radosław Sadowski - Create PDF from HTML using C#, Nustache, Mustache and Pechkin
Prabu am
.Net
- .NET Framework Compatibility Diagnostics
Immo Landwerth - C# 7 Feature Proposal: Local Functions
Bill Wagner - The week in .NET – 3/1/2016
Bertrand Le roy - JSON.Net Private Setters NuGet
Daniel Wertheim - Page Number Grouping
Richard Carr - Easy Programmatic .NET Config Transforms
George Mokbel - StructureMap 4.1 is Out
Jeremy Miller - Introducing Postal.NET
Ricardo Peres - DLNA Media Server to feed Smart TV's
Dr Gadgit - ConditionalWeakTable and dynamic properties in .NET 4+
Chris Whitworth - When you can't rely on your own identity
Ayende Rahien - A Subtle Case Sensitivity Gotcha with Regular Expressions
Phil Haack - C# Interfaces and Default Parameters
Tom Dupont
Seguro recordaréis que tradicionalmente tanto MVC como Web API han sido frameworks muy guiados por convenciones, es decir, venían de serie diseñados con un conjunto de pautas o normas a las que debíamos ceñirnos si queríamos aprovechar todo su potencial.
Teníamos convenciones para las rutas, de ubicación de vistas, para nombrar los controladores, nombrado de acciones según el verbo HTTP mediante el cual se pretendía acceder a una función del API, y algunas más.
Algunas de estas convenciones se podían cambiar fácilmente usando mecanismos directos proporcionados por los propios frameworks, pero había otras que era bastante más difícil hacerlo y a veces teníamos que hacer auténticos malabarismos con las piezas internas del marco de trabajo para conseguir nuestros objetivos.
ASP.NET Core MVC simplifica bastante la adaptación del framework a nuestras necesidades, proporcionando fórmulas muy potentes para la creación de convenciones personalizadas.
<Disclaimer>En el momento de escribir estas líneas ASP.NET MVC Core 1.0 se encuentra en RC1, por lo que algunos detalles aún pueden variar en la versión final</Disclaimer>
Destacado
- Welcoming the Xamarin team to Microsoft
Scott Guthrie - A Xamarin + Microsoft Future
Nat Friedman
.Net
- Understand the Impact of Low-Lock Techniques in Multithreaded Apps
Vance Morrison (vía @Guerrerotook) - Adventures in Benchmarking - Memory Allocations
Matt Warren - Build Lambda Expressions Dynamically
David Belmont - Understanding C# Delegates
Deborah Kurata - Fun async tricks for getting better performance
Ayende Rahien - Throwing things in C#
Bill Wagner - AutoMapper 4.2.1 released – Static is back (limited) edition
Jimmy Bogard - Benchmarking .NET code
Scott Hanselman - System.Uri in .Net 4.5 and un-escaping "%27"
Xiang Fan - Implement Copy Paste C# Code
Anton Angelov - Porting MSBuild to .NET Core
Immo Landwerth - The week in .NET – 2/23/2016
Bertrand Le Roy - Moq on .NET Core
Armen Shimoon
.Net
- The Evolution of Interactive C#
Miguel de Icaza - The week in .NET – 2/17/2016
Bertrand Le Roy - Un vistazo a Roslyn
Fernando Escolar - Up and running with HashSet in C#
Subhamoy Burman
El problema consistía básicamente en que Internet Explorer ignoraba las cookies, tanto las responsables de mantener el seguimiento de estado de la sesión (ASP.NET_SessionId), las de autenticación (.AspNet.ApplicationCookie) u otras cookies creadas a propósito por la aplicación, lo que hacía imposible su uso.
La verdad es que no pude ayudarlo demasiado porque es un tema que no me había ocurrido nunca y en un escenario que no era sencillo de reproducir. Intenté darle algunas pistas sobre qué podía ir mirando para identificar el origen del problema, pero finalmente no llevaron a ninguna parte y probablemente no sirvieron nada más que para aumentar la incertidumbre.
Algunos días después, me contactaba de nuevo diciéndome que había encontrado el problema, y me ha parecido tan curioso que pensé que sería interesante comentarlo por aquí, por si a alguien más le ocurre lo mismo.
.Net
- The week in .NET – 2/11/2016
Bertrand Le Roy - Concise Binary Object Representation (CBOR) in C#
- Peter Occil
- A (Hitchhiker's) Guide To The .NET Core Projects on GitHub
Mark Rendle - Generic Mapper written in TDD
Manfred Zik - A Single SignOn Implementation
Chihwei Chang - NamingFormatter - String Interpolation in runtime solution
Kouji Matsui - C# 7 Feature Proposal: Slicing
Bill Wagner - C#Lectures - Lecture 1: Primitive Types
Sergey Kizyan - Liskov Substitution Principle in C#
- Amir Ahani
- Testing That Your Public APIs Have Not Changed Unexpectedly with PublicApiGenerator and Approval Tests
Jason Roberts - Dynamic code generation in C#
Ayende Rahien
En esta ocasión, comentaremos muy brevemente una gran ausencia en las vistas Razor: la directiva
@helper
, que no estará disponible en la primera versión de ASP.NET Core MVC.<Disclaimer>Aunque en una Release Candidate las cosas no deberían cambiar, ya han demostrado bastantes veces que sí que cambian, por lo que algo de lo que digamos aquí podría no ser cierto en la versión final del producto</Disclaimer>
Esto no es un tema reciente: hace ya bastantes meses, la implementación que había era bastante incompleta y no encajaba bien en la nueva arquitectura, por lo que tras algunos debates y reuniones de diseño, se decidió que lo mejor era eliminar esta directiva.
En este caso, me ha entusiasmado dar por casualidad con el "bus factor", un término que seguro muchos conocíais pero para mi ha sido un descubrimiento reciente, que básicamente da forma a la pregunta que seguro que todos nos hemos hecho sobre la continuidad de algunos proyectos ante determinados acontecimientos inesperados.
Imaginemos que todo el equipo de desarrollo de un proyecto va caminando por la calle, y un autobús que circulaba cerca pierde el control y les arrolla de forma violenta. ¿A cuántos miembros del equipo tendría que afectar fatalmente este accidente para poner en gran peligro la continuidad del proyecto?
.Net
- Sesiones preaprobadas para la dotNet Spain Conference 2016
Isabel Cabezas - How to compute the Hash value of a file using #CSharp?
Kunal Chowdhury - Fastest code is the one not run: Part I – The cost of escaping strings
Ayende Rahien - AutoMapper 4.2.0 released
Jimmy Bogard - What I've learned about .NET Native
Mark Rendle - Microsoft .NET Framework 4.6.1 is available on Windows Update and WSUS
.NET fundamentals team - Cómo proteger tu password cuando esté en memoria RAM
Pablo González - El panorama de .NET en 2016: ¿plataforma completa o .NET Core?
José Manuel Alarcón - New features in C# 7, part 2
Kenneth Truyers - Different Types Of Joins In Linq
Debendra prasad Dash
Y hoy vamos a comentar muy rápidamente otro cambio que han introducido hace relativamente poco tiempo, y que afecta a lo que contábamos hace algunas semanas sobre la nueva carpeta "wwwroot", el lugar donde colocaremos todos los archivos estáticos usados por nuestra aplicación web.
.Net
- VerbalExpressions: Crea expresiones regulares describiéndolas
CampusMVP - Back to Basic : Difference Between int.Parse() and int.TryParse()
Abhijit Jana - Tor.NET - A managed Tor network library
Chris Copeland - New features in C# 7
Kenneth Truyers - Combining LINQ Queries (or, When to Call ToList)
Peter Vogel - How to Tell if an Assembly is Debug or Release
Dave Black - The week in .NET - 1/19/2016
Bertrand Le Roy - .NET Methods Inlining and Loops
Dmitry Orzhevsky - Learn Roslyn Now: Part 16 The Emit API
Josh Varty - From Task to Async/Await
Subhamoy Burman
Este mismo criterio se aplicó a otros productos que también habían sido creados from scratch, como .NET Core, que se versionó como 5.0, o el nuevo Entity Framework, cuya flamante primera versión sería la 7.0.
La cuestión es que este enfoque en la asignación de nombres y versiones no fue del agrado de muchos, que pensábamos que algo creado desde cero y que rompía en bastantes aspectos con lo anterior no tenía sentido lanzarlo a la calle simplemente como un incremento de versión de un producto existente. Es difícil de explicar y difícil de comprender.
Pues bien, hace unas horas recibíamos el comunicado oficial de que ASP.NET 5 ha cambiado su nombre por ASP.NET Core.
Publicado por José M. Aguilar a las 11:39 a. m.
Etiquetas: aspnet5, aspnetcore, aspnetcoremvc, entity framework, noticias
Hace poco veíamos cómo crear un middleware capaz de realizar transformaciones simples en los encabezados de respuesta de nuestras aplicaciones ASP.NET Core.
Nuestro componente, al que habíamos llamado
HeaderTransformMiddleware
, podíamos añadirlo al pipeline indicándole qué encabezados queríamos modificar y con qué valores (o nulo, si lo que queríamos era eliminar el encabezado). Por ejemplo, con el siguiente código añadíamos el encabezado "X-Author" y suprimíamos "Server":var transforms = new Dictionary<string, string>() { ["X-Author"] = "José M. Aguilar", ["Server"] = null }; app.UseHeaderTransform(transforms);
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
X-Author: José M. Aguilar
X-Powered-By: ASP.NET
Content-Length: 8011
El problema viene cuando intentamos eliminar ese "X-Powered-By: ASP.NET" que aparece siempre que ejecutamos nuestra aplicación sobre IIS Express o IIS. En este caso, cualquier intento de eliminarlo usando middlewares será infructuoso..Net
- The Loyc LL(k) Parser Generator: Part 2
Qwertie - Supporting Multiple String Formats from Your Class
Peter Vogel - Singleton Indexer - A Workaround for not having Static Indexers in C#
Nick Chamberlain - The week in .NET - 1/12/2016
Bertrand Le Roy - C# 6 under the hood: nameof operator
Erik Schierboom - Difference Between IEnumerable, ICollection and IList Interface in C#
Sarmistha Panda - To base() or not to base(), that is the question
Jon Skeet - Get Property Names Using Lambda Expressions in C#
Anton Angelov - Curiosidades de C#: tipado estructural… sólo para algunos
Juan María Hernández
.Net
- What's New with .NET Framework 4.6, Part 1: API Updates
Eric Vogel - Implement Tasks for Executing on Application-Start from Any Layers or Plugins: C# .NET
Farhad Taghavi Azar Sharabiani - How To Tell If An IQueryable Is In Memory Or Not?
Khalid Abuhakmeh - The week in .NET - 1/5/2016
Bertrand Le Roy - Having a Look at dotnet CLI Tool and .NET Native Compilation in Linux
Tugberk Ugurlu - Learn Roslyn Now: Part 14 Intro to the Scripting API
Josh Varty - ExpressMapper: lightweight and easy to use .Net mapper
George Anisimov
Y dicho esto, vamos a hacer un rápido repaso por los diez artículos publicados durante el año pasado que más visitantes atrajeron a Variable not found a lo largo de este periodo.
Publicado por José M. Aguilar a las 10:58 a. m.
Etiquetas: autobombo, blogging, variablenotfound, variablenotfound.com