[Remix] Multitud de recursos para .NET

por:

Multitud de recursos para .NET

En los últimos tiempos no he podido escribir con toda la frecuencia que me gustaría, pero no por ello he dejado de trabajar con .NET y coleccionar multitud de recursos que me han permitido mejorar mucho mi conocimiento con este framework.

SharpLab C# interactivo y online

Sharplab captura con texto lenguaje de programación

SharpLab permite correr código C# desde el navegador, además de inspeccionar tanto el resultado como el código intermedio generado. Para mí es una herramienta imprescindible para realizar pruebas de código, prototipar y realizar ejemplos. Además, al ser todo online, puedes compartir el resultado fácilmente con tus compañeros, con solo mandarles tu url.

 

Coyote

Coyote es un proyecto creado por Microsoft que permite resolver uno de los problemas más difíciles de detectar, los errores en aplicaciones multihilo. Si has programado algún tipo de aplicación de este estilo, seguramente conocerás que hay varias técnicas para sincronizar hilos o procesos, como semáforos, locks, monitores, barreras, etc. Sin embargo, crear código que los use sin producir interbloqueos suele ser muy complejo. Por esta razón Microsoft ha desarrollado esta librería, la cual prueba tu código multitud de veces y si detecta algún error te guarda el escenario para que puedas reproducirlo. Reproducir un interbloqueo es muy complicado, porque en desarrollo es difícil tener el tráfico necesario para que se produzca, por eso este recurso me parece excelente y añade una gran mejora al ecosistema .NET

Coyote es uno de los mejores recursos .net para detectar problemas de concurrencia

La imagen superior ha sido obtenida de este artículo en inglés con una guía detallada de su uso.

Leer más

Los 10 mejores paquetes nuget que tienes que instalar

por:

Los 10 mejores paquetes nuget que tienes que instalar

Cuando empiezas un proyecto hay una serie de aspectos comunes que suelen ser resueltos mediante la instalación de una serie de paquetes básicos. Hoy te vengo a hablar de los que yo uso de manera habitual. Aunque lo primero que te recomiendo es configurar bien tu Visual Studio.

 

Logs con Serilog

Serilog el mejor framework de logs para .NET

Para mí Serilog es un paquete indispensable para gestionar los logs de una aplicación en .NET. Este paquete tiene varias características por las que lo considero imprescindible:

  • Gran integración con el framework
  • Está especialmente pensado para usar logs estructurados
  • Configuración flexible, tanto por código como por fichero de configuración
  • Puede exportar o enviar estos logs a muchos proveedores
  • Gran flexibilidad debido a la multitud de extensiones que tiene

Leer más

Las 5 mejores extensiones para Visual Studio

por:

Las 5 mejores extensiones de Visual Studio

Visual Studio es uno de los principales entornos de desarrollo y, desde mi punto de vista, uno de los más completos. Sin embargo, para mí hay 5 extensiones imprescindibles que deberías instalar en Visual Studio.

 

.NET Portability Analyzer

Como seguramente sabrás, el ecosistema de .NET está cambiando a gran velocidad y es preciso adaptarse a las nuevas APIs, si no te quieres quedar atrás a medio plazo. Este cambio, significa que hay métodos, clases y bibliotecas que van a dejar de funcionar y por tanto, hay que realizar migraciones.

Este plugin te va a ahorrar multitud de tiempo, analizando qué partes de tu código actual no son compatibles y si debes cambiar algo. Desde mi experiencia las aplicaciones que necesitan más cambios son las de tipo web, ya que en ASP.NET Core se han eliminado multitud de APIs y compatibilidades con desarrollos legacy.

Leer más

Programación a bajo nivel con C# y .NET Core 3

por:

Programación a bajo nivel con C# y .NET Core 3

Programar a bajo nivel, quizás es una de esas cosas que aprendes en la carrera y que nunca vas a necesitar. Sin embargo, es muy curioso como algunos lenguajes de alto nivel, según van evolucionando, van añadiendo más características de bajo nivel.

¿Qué es programar a bajo nivel?

Para mí, programar a bajo nivel es programar lo más cerca posible al uso directo de la memoria del ordenador y al juego de instrucciones básicas del procesador. Esto evita usar abstracciones como clases, operadores propios del lenguaje, etc. acercándote lo máximo posible a programar en ensamblador.

¿Cuándo es necesario programar a bajo nivel?

En el día a día, seguro que el 99% de los desarrolladores no necesitamos programar a bajo nivel. Pero que no forme parte de nuestro día a día, no quiere decir que todavía no sea muy necesario en algunas áreas:

  • Programación de sistemas empotrados o embebidos.
  • Computación científica, con alta carga matemática.
  • Desarrollo de motores o sistemas que simulen sucesos.
  • Programación de sistemas criptográficos.

Leer más

Identificando mejoras de rendimiento en .NET

por:

Identificando mejoras de rendimiento en .NET

¿Cuántas veces nos hemos preguntado entre dos opciones cuál es más óptima? Hoy os muestro una utilidad que os puede ayudar.

Conociendo nuestro lenguaje

Lo primero que hay que saber para ver cómo se optimiza en el lenguaje que trabajamos es ver cómo funciona el mismo. En el caso de C# (java es similar), hay 2 fases principales:

Proceso de compilar y optimizar el código en .Net para mejorar el rendimiento.

Viendo el gráfico anterior, podemos apreciar como el compilar puede realizar optimizaciones tanto en la generación del código C#, como en la generación del IL(Intermediate Language) y en tiempo de ejecución, en la generación de las instrucciones que ejecutará nuestra CPU.

Leer más

DevCleaner: limpia tus desarrollos

por:

DevCleaner limpia tus desarrollos

Hace poco tiempo me di cuenta de que almacenaba en mi equipo un gran número de proyectos de desarrollo, que había ido acumulando a lo largo de los meses. Estos proyectos cada vez ocupaban más espacio y, por lo tanto, era importante limpiarlos.

Estructura de un proyecto de desarrollo

Normalmente todos los proyectos de desarrollo tienen la siguiente estructura:

  1. Una o varias carpetas donde se almacena el código fuente.
  2. Otra carpeta donde se guardan recursos: imágenes, traducciones, archivos de configuración, etc.
  3. Un conjunto de carpetas donde se guardan dependencias, archivos con el código precompilado, paquetes y los archivos finales para ser publicados.

Está bastante claro que ni se quiere perder el código de las aplicaciones, ni los archivos auxiliares necesarios para que la misma funcione correctamente. Pero todos los archivos del punto 3, son candidatos a ser eliminados, puesto que se pueden volver a generar a partir de los archivos de los puntos 1 y 2.

Leer más

Cómo crear aplicaciones multiplataforma con Xamarin y C#

por:

Como crear aplicaciones multiplataforma con Xamarin y C#

La necesidad de crear aplicaciones (principalmente para móviles), cada vez es mayor para cualquier tipo de servicio y/o empresa. Por ello en esta guía te enseño cómo crear aplicaciones multiplataforma con Xamarin y el lenguaje de programación C#.

La necesidad de Xamarin

Aunque cada vez se crean más aplicaciones y se necesitan que sean compatibles con varias plataformas, su desarrollo todavía sigue siendo un proceso costoso y largo. Esto es debido a que cada plataforma cuenta con un lenguaje de programación propio, impidiendo la compartición de recursos, por esta razón han surgido varias aproximaciones para crear aplicaciones multiplataformas:

  • Utilizar los lenguajes y tecnologías web (HTML, CSS y JavaScript), aprovechando que todos los dispositivos cuentan con un navegador web y un componente para representar este código.
  • Utilizar Xamarin junto con C#, para unificar el desarrollo gracias al proyecto Mono.

Ventajas del uso de Xamarin frente a las aplicaciones web

Seguramente habrás notado que los navegadores son un tipo de software cuyo consumo es elevado y, en muchos casos, no dan el rendimiento esperado. Esto, junto con las limitaciones que de HTML5 hace que las aplicaciones basadas en tecnologías web (Ionic, PhoneGap…), suelen tener un menor rendimiento, mayor consumo de batería y limitaciones para el acceso a algunas características de los dispositivos.

Por otro lado, Xamarin permite el desarrollo nativo para cada plataforma, lo que permite obtener un rendimiento similar a las aplicaciones creadas en el lenguaje de cada plataforma y el acceso completo a todas las APIs del sistema.

Leer más

3 componentes básicos para tu app con C#

por:

3 componentes básicos para tu app con C#

En los dos últimos meses he estado desarrollando algunas aplicaciones tanto para móviles (vía Xamarin), como para escritorio (WPF) y en todas ellas hay 3 componentes que siempre se repiten.

PRISM

Como muchos de vosotros sabréis, la arquitectura propuesta por Microsoft para desarrollar aplicaciones es la denominada MVVM (Model View ViewModel). Esta arquitectura requiere escribir bastante código para algunas características simples, así que suele ir siempre apoyada por un framework. En mi caso, la elección es PRISM debido a que es:

  • El framework diseñado por Microsoft
  • Uno de los desarrollos más completos en el soporte de MVVM
  • Un sistema muy estable y maduro
  • Un desarrollo que soporta todo tipo de aplicaciones realizadas con C#

Este proyecto es software libre y puede ser consultado en GitHub, donde también están presentes enlaces a la documentación y a los paquetes de NuGet.

Leer más

3 maneras de optimizar tus programas en C# ?

por:

3 maneras de optimizar tus programas en C#

Uno de los problemas que más se repite en los programas que manejan muchos datos o que tienen algoritmos complejos, es el tiempo que tarda el sistema en realizar los cálculos y los recursos que necesita. Por esta razón, hoy te enseñamos 3 maneras de optimizar tus programas en C#

¿Qué es optimizar?

Optimizar es un proceso clave en el mundo empresarial, el cual consiste en reducir los recursos necesarios para alcanzar un objetivo. En este caso queremos reducir el tiempo de computación y la cantidad de memoria, necesaria para ordenar un conjunto de datos grande. La optimización tiene los siguientes problemas:

  • Es un proceso complejo, ya que para alcanzar mejoras en el rendimiento, muchas veces, es necesario utilizar estructuras de datos más complejas.
  • Requiere definir claramente qué queremos optimizar (memoria, tiempo, uso del disco duro, etc), porque en muchos casos al optimizar un parámetro, empeoramos otros.
  • Es necesario conocer a fondo la plataforma y tecnologías que estamos utilizando, para saber qué mejoras son más óptimas.
  • El coste de optimizar suele ser logarítmico, al principio se necesita poco tiempo para conseguir mejoras, pero se llega a un punto donde el coste de desarrollar una mejora es muy alto.

Leer más

Cómo insertar un video de YouTube en WPF o UWP

por:

Cómo insertar un video de YouTube en WPF o UWP

YouTube actualmente se ha convertido en el lugar por excelencia para albergar vídeos, por lo que es bastante común que tengamos que reproducir algún video hosteado en este servicio en nuestras aplicaciones.

Utilizando el control MediaElement

Tanto WPF como UWP tienen el control MediaElement, que no es más que un reproductor nativo de elementos multimedia (video, audio), como se puede ver en la siguiente imagen:

Demostración del control Media Element en UWP

Leer más