Librerías HTTP en .Net

He de decir que nunca me había planteado usar librerías HTTP para hacer una llamada REST desde mí código en C#. Simplemente uso HttpClient y luego serializo el resultado con Newtonsoft, nada del otro mundo. La autenticación, parámetros o cuerpo de la petición, la monto a mano y listos. Hasta el día de hoy (en el momento de escribir esta entrada para el blog) no conocía librerías para hacer esto, ni interés que tenia. Pero entonces, me ha llamado un compañero de trabajo para ver si podía darle mi opinión sobre un tema y mientras mirábamos el código, he visto una clase llamada RestClient. -Eso no es estándar de .Net- he pensado, así que me he puesto a indagar. Y lo que he visto me ha parecido interesante y por eso he indagado un poco y me he puesto ha hacer unas pruebas básicas, para ver si compensa o no usar librerías para realizar llamadas HTTP.

Sigue leyendo Librerías HTTP en .Net

Pasar argumentos en la aplicación de consola con Net 6 y Visual Studio 2022

Si ya has instalado Visual Studio 2022 en tu PC y te has dispuesto a crear una aplicación de consola con .Net 6 tal vez te haya sorprendido el aspecto de la nueva plantilla, que siguiendo con la línea de las «minimal API«, han hecho desaparecer toda la sintaxis a la que estábamos acostumbrados, ahora se va al grano 😉

nuevo aspecto de los programas de consola en Net 6 y Visual Studio 2022

Pero claro, con esto ha desparecido el clásico static void main(string[] args). Entonces, ¿Cómo hacemos si queremos pasar argumentos? Sigue leyendo, que te vas a sorprender.

Sigue leyendo Pasar argumentos en la aplicación de consola con Net 6 y Visual Studio 2022

Resumen del año 2021

Al finalizar este año 2021 este blog llevará en activo nada mas y nada menos que cuatro años, siempre activo y con actualizaciones mas o menos constantes. Cada uno de estos cuatro años he querido hacer un post retrospectivo, pero oye, por unas cosas o por otras nunca lo hacia. Y luego ya, entrado el año siguiente tampoco tenia mucho sentido hacerlo. Pero de este año no pasa, así que haya van unos cuantos datos sobre este 2021, no solo del blog sino también de todo el contenido que he ido generando a lo largo del año. Empezamos por el blog, pero vamos a ver también los números de Youtube y Twitch.

Sigue leyendo Resumen del año 2021

Renovar el certificado Microsoft

Renovar certificados Microsoft

Hace ya algún tiempo os contaba por aquí que había obtenido la certificación de Azure Solutions Architect Expert, y os explicaba mi experiencia a la par que os daba algunos consejos para preparar la certificación.

Antes, cuando te certificabas, al cabo de un año caducaba la certificación y si querías renovar el certificado de Microsoft tenias que presentarte de nuevo al examen. No se si mucha gente lo haría, pero yo jamás he renovado un certificado, me parecía un sistema terrible, la verdad. Con lo complicado que es obtener el certificado (al menos si lo haces bien) no voy a pasar por eso cada ocho meses (caduca al año, pero tendrás que prepararlo un poco antes).

Pero esto ha cambiado, y ahora hay un nuevo modo de renovar el certificado de Microsoft. Os explico cual ha sido mi experiencia.

Sigue leyendo Renovar el certificado Microsoft

Como compartir una contraseña de forma segura

No se si alguna vez te has visto en la necesidad de compartir una contraseña con alguien, o que la compartan contigo, pero a mi me ha pasado muchas veces. Es algo bastante habitual si trabajas en IT. «Pásame las credenciales para acceder al FTP», «te he dado de alta: toma, aquí tienes tu contraseña», «este es al API KEY para acceder a la API», etc. son algunas de las frases que podemos escuchar en nuestro día a día. O simplemente queremos mandar un texto del cual queremos controlar cuanto tiempo va a poder verse o por quien.

Compartir contraseñas por correo y por chat es inherentemente inseguro. Normalmente dentro del mismo correo suele haber contexto sobre este, e incluso cuando se envía en un mail por separado, este puede ser re-enviado y se pierde el control. Ni que decir que lo mismo sucede si compartimos por Teams, Telegram, Whatsapp, o cualquier otro chat.
Además, tanto en el correo como en los chats, estos secretos van a quedar expuestos para siempre.

Hoy os vengo a hablar de mi libro: DevTools Share Password, una herramienta web para poder compartir una contraseña de forma segura y controlada. Ojo, no es un gestor de contraseñas, es para compartir un secreto de forma puntual y que este solo sea visible durante un periodo muy controlado.

A continuación, os explico como.

Sigue leyendo Como compartir una contraseña de forma segura

Pasar el contexto de formulario y XRM de Dynamics 365 a un WebResource

Dynamics 365 CE permite muchas formas distintas para poder extender su funcionalidad y adaptarla a tus necesidades. Una de ellas es poder añadir un recurso web y mostrarlo en un formulario. Esto nos va a permitir crear nuestro propio HTML que se mostrará dentro de Dynamics.

En estos casos nos puede pasar que necesitemos mostrar en nuestro recurso web algún dato que se recupere del propio Dynamics.

Cuando estamos en el lado de cliente, Dynamics nos ofrece el objeto XRM y el FormContext para poder realizar acciones sobre los objetos del propio Dynamics y por lo tanto si tenemos que acceder a cualquier dato del formulario, podemos hacer algo tan sencillo como lo siguiente:

function displayName(executionContext)
{
    var formContext = executionContext.getFormContext(); // get formContext

    // use formContext instead of Xrm.Page  
    var firstName = formContext.getAttribute("firstname").getValue(); 
    var lastName = formContext.getAttribute("lastname").getValue();
    console.log(firstName + " " + lastName);
}

¿Pero que pasa cuando estamos en el contexto de nuestro recurso web? Pues que no tendremos dicho contexto y que por lo tanto, en este caso, no podemos acceder a estos datos. Pero es muy sencillo solucionar esto, vamos a ver como podemos pasar este contexto a nuestro recurso web para poder accederlo.

Sigue leyendo Pasar el contexto de formulario y XRM de Dynamics 365 a un WebResource

Pasar un número variable de parámetros en C#

Estamos en verano, y esto se nota en el blog. El ritmo de actualización ha bajado mucho, es cierto, pero también es cierto que genero mas contenido además del publicado en el blog, cosa que hace un año no era así. Aprovecho pues para recordarte que puedes seguir mi contenido en Twitch y en Youtube.

Dicho esto, vamos con una pequeña píldora. El otro día aprendí una nueva característica, posiblemente muy básica, de primero se podría decir, pero que yo por el motivo que fuese, desconocía. Y es la posibilidad de pasar un numero variable de parámetros a una función en C#.

Es posible que tengamos la necesidad de pasar un número variable de parámetros a una función, para ello podríamos pasar un listado o un array, pero también tenemos la palabra reservada params.

Para mostrar esta funcionalidad, un pequeño ejemplo. En este trozo de código tenemos una función recibe un número indeterminado de palabras, que simplemente junta para mostrar una frase:

static void Main(string[] args)
{
     MuestraFrase("Hola", "esto", "es", "una", "prueba"); 
}

public static void MuestraFrase(params string[] palabras)
{
     Console.WriteLine(string.Join(" ", palabras));
     Console.ReadLine();
}

El resultado de ejecutar el código anterior será:

Resultado de ejecutar el código de pasar un número variable de argumentos

Para poder usar esta funcionalidad solo hay que tener en cuenta un par de cosas:

  1. Se pueden pasar parámetros adicionales a la función, pero el declarado como params ha de ser el último dentro del método.
  2. El parámetro declarado como params ha de ser un array unidimensional

Hasta aquí esta pequeña píldora de verano, espero que te sea de utilidad.

¡Nos leemos!

Nombres de los recursos en Azure

ejemplo de convención de nombres de los recursos en Azure

En naming en desarrollo es importantísimo. Cuando empecé en esto, recuerdo «discusiones» en el equipo que podían durar 10-15 minutos para elegir el nombre de un método o una variable. «Mi no entender» pensaba, si solo es un nombre. ¡Que equivocado estaba! Yo venia de estudiar y de usar variables llamadas «aux, aux2, sum», etc.

Para tener una consistencia dentro de un mismo proyecto basado en Azure, es necesario establecer una convención de nombres para los recursos de Azure en la que apoyarnos a la hora de crearlos. Ya sabes como moverte por el portal de Azure para crear estos recursos, ahora debes ponerles un buen nombre.

Pueden existir muchas estrategias a la hora de elegir la convención adecuada, y todo dependerá del proyecto en el que trabajes y del equipo con el que colabores, pero aquí expongo mi propuesta.

Para poner un nombre a los recursos de Azure, podemos basarnos en los siguientes parámetros:

Sigue leyendo Nombres de los recursos en Azure

Empezar en Azure, algunos consejos

Si eres nuevo en esto del cloud y quieres empezar en Azure es mas que probable que estés un poco sobrepasado/a. Cientos de servicios, infraestructura, serverless, configuraciones… Voy a intentar darte algunos consejos para intentar que al menos la cosa sea un poco más leve.

Detecta cual es tu área

Esto no te va a costar mucho. En los entornos clasicos no cloud, ¿eres programador? o por el contrario ¿te encargas de la parte de sistemas? Si aún no has empezado en el mercado laboral, que es lo que te gustaría hacer. ¿Crear código o encargarte de la infraestructura?

En la nube, todo esto se diluye un poco mas, ya que al ser todo como servicio, es más sencillo entrar en uno u otro, pero básicamente y por buscar un punto de entrada, te diré que:

  • Si estas mas enfocado al desarrollo te van a interesar mas los servicios PaaS
  • Si estas enfocado al mundo sistemas, probablemente los servicios SaaS sean lo tuyo.

Como he dicho, no siempre es así y conviene conocer un poco de los dos mundos, pero estamos hablando de como ir empezando, hay que filtrar un poco.

Sigue leyendo Empezar en Azure, algunos consejos

Yield Return: que es y como usarlo

Hoy os quiero traer una pequeña píldora con el uso de yield return en C#. Usándolo, estamos indicando que el método es un iterador. Pero, ¿esto que quiere decir?

Veámoslo con un ejemplo, leed el siguiente código. Sin conocer el uso de yield return, a priori el método DameInts() sería imposible, ya que entraríamos en un bucle infinito. Tomate un segundo y ejecútalo, a ver que pasa.

using System;
using System.Collections.Generic;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Hello World!");
            var resultado = DameInts();
            foreach (var a in resultado)
                Console.WriteLine(a);
        }

        public static IEnumerable<int> DameInts()
        {
            int i = 0;
            while (true)
            {
                yield return ++i;
                System.Threading.Thread.Sleep(1000);
            }
        }

    }
}
Sigue leyendo Yield Return: que es y como usarlo