{"id":1824,"date":"2023-05-09T07:43:53","date_gmt":"2023-05-09T07:43:53","guid":{"rendered":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=1824"},"modified":"2023-05-09T07:43:53","modified_gmt":"2023-05-09T07:43:53","slug":"app-configuration-con-refresco-dinamico-de-settings","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/","title":{"rendered":"App Configuration con refresco din\u00e1mico de settings"},"content":{"rendered":"<h1><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1848\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg\" alt=\"\" width=\"676\" height=\"409\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg 676w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings-300x182.jpg 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings-610x369.jpg 610w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><\/h1>\n<p>App Configuration es un servicio muy potente de Azure que nos permite manejar las configuraciones de nuestra aplicaci\u00f3n desde la nube. Nos permite definir settings por clave-valor, asignar labels que diferencian su valor entre los posibles entornos de nuestra aplicaci\u00f3n e incluso da soporte para aplicar A\/B testing a trav\u00e9s de su feature manager.<\/p>\n<p><!--more--><\/p>\n<p>En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!<\/p>\n<h1>Paso a paso<\/h1>\n<p>En primer lugar, partamos de una base. En este <a href=\"https:\/\/github.com\/AndresSanRo\/reloadable-settings\">repositorio de github<\/a> dejo la aplicaci\u00f3n ya terminada, por si quieres ver directamente el resultado final. Tambi\u00e9n tienes la opci\u00f3n de ir haciendo el paso a paso conmigo si te apetece, descarg\u00e1ndote el c\u00f3digo y yendo a la rama \u201cfresh-app\u201d, desde donde empezaremos a configurar todo.<\/p>\n<p>Tenemos una soluci\u00f3n con tres proyectos, uno de API y dos de clases, donde iremos dejando nuestro c\u00f3digo de manera ordenada.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1849\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/start-point-1.png\" alt=\"\" width=\"335\" height=\"328\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/start-point-1.png 335w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/start-point-1-300x294.png 300w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><\/p>\n<p>Ahora, vamos al portal de Azure y creamos el App Config que usaremos para dar de alta las settings de nuestra aplicaci\u00f3n. Te dejo el <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-app-configuration\/quickstart-azure-app-configuration-create?tabs=azure-portal#create-an-app-configuration-store\">link a la documentaci\u00f3n oficial de Microsoft<\/a> que tiene un paso a paso de c\u00f3mo hacer este proceso.<\/p>\n<p>Una vez tengamos nuestro App Config listo, vamos a crear dos claves. En la secci\u00f3n configuration explorer a\u00f1adiremos la clave \u201cSettings:HelloWorld\u201d que tendr\u00e1 el valor \u201cHola mundo!\u201d y la clave \u201cSentinel\u201d que tendr\u00e1 el valor \u201cFalse\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1850\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/app-config-keys-1.png\" alt=\"\" width=\"706\" height=\"198\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/app-config-keys-1.png 706w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/app-config-keys-1-300x84.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/app-config-keys-1-610x171.png 610w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/p>\n<p>Tras esto, iremos a la secci\u00f3n de Access keys y copiaremos nuestra cadena de conexi\u00f3n para usarla en nuestra aplicaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1851\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/get-conn-str-1.png\" alt=\"\" width=\"985\" height=\"489\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/get-conn-str-1.png 985w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/get-conn-str-1-300x149.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/get-conn-str-1-768x381.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/get-conn-str-1-610x303.png 610w\" sizes=\"auto, (max-width: 985px) 100vw, 985px\" \/><\/p>\n<p>Y la pegaremos en nuestro archivo \u201cappsettings.Development.json\u201d de tal manera que quede as\u00ed.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1853\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-file-1.png\" alt=\"\" width=\"1341\" height=\"361\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-file-1.png 1341w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-file-1-300x81.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-file-1-1024x276.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-file-1-768x207.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-file-1-610x164.png 610w\" sizes=\"auto, (max-width: 1341px) 100vw, 1341px\" \/><\/p>\n<p>Siguiente paso: a\u00f1adir el paquete nuget \u201cMicrosoft.Azure.AppConfiguration.AspNetCore\u201d a nuestro proyecto de API y empezar a configurarlo todo.<\/p>\n<p>En nuestro Program.cs a\u00f1adiremos lo siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1854\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-app-config-1.png\" alt=\"\" width=\"1266\" height=\"846\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-app-config-1.png 1266w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-app-config-1-300x200.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-app-config-1-1024x684.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-app-config-1-768x513.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-app-config-1-610x408.png 610w\" sizes=\"auto, (max-width: 1266px) 100vw, 1266px\" \/><\/p>\n<p>Vamos a analizar esta configuraci\u00f3n por partes.<\/p>\n<p><strong>\u201cbuilder.Configuration.AddAzureAppConfiguration\u201d<\/strong>, configura nuestra aplicaci\u00f3n para conectarse al App Config de Azure.<\/p>\n<ul>\n<li>Haciendo ese \u201c.Select()\u201d le estamos diciendo que recupere todas las claves almacenadas sin importar su key o etiqueta.<\/li>\n<li>Con el m\u00e9todo \u201cConfigureRefresh\u201d le indicamos que se ponga a la escucha de nuestra clave \u201cSentinel\u201d. Cuando esta clave cambie de valor, har\u00e1 que nuestra aplicaci\u00f3n refresque los valores de las settings y obtendr\u00e1 la configuraci\u00f3n m\u00e1s reciente.<\/li>\n<li>Adem\u00e1s, en el m\u00e9todo \u201c.SetCacheExpiration()\u201d hemos configurado un intervalo de tiempo para tener cacheadas las claves. Con eso, hasta que la cach\u00e9 no expire, no intentar\u00e1 refrescar nuevamente las settings de nuestra aplicaci\u00f3n.<\/li>\n<\/ul>\n<p><strong>\u201cbuilder.Services.AddAzureAppConfiguration()\u201d<\/strong> a\u00f1ade el middleware de App Configuration a la colecci\u00f3n de servicios de nuestra aplicaci\u00f3n.<\/p>\n<p>Y <strong>\u201capp.UseAzureAppConfiguration()\u201d<\/strong> habilita que nuestra aplicaci\u00f3n use el middleware para refrescar la configuraci\u00f3n autom\u00e1ticamente.<\/p>\n<p>En este punto, me gustar\u00eda detenerme para explicar m\u00e1s en detalle c\u00f3mo funciona el proceso de refresco de las settings.<\/p>\n<h3>\u00bfC\u00f3mo funciona el refresco de las settings?<\/h3>\n<p>Con cada llamada que recibe nuestra API, se activa el middleware e intenta actualizar las claves de nuestra aplicaci\u00f3n. Lo primero que hace es comprobar si la cach\u00e9 de las claves ha expirado (por eso se la hemos configurado con tan poco tiempo de vida en el ejemplo, para poder ver los cambios de manera r\u00e1pida).<\/p>\n<p>Si nuestra cach\u00e9 est\u00e1 vigente, devolver\u00e1 los valores que ya tiene almacenados. En caso de que nuestra cach\u00e9 haya expirado, lanza una llamada contra App Configuration de Azure preguntando por el valor de la clave que est\u00e1 trackeando. Esta clave suele contener la palabra \u201cSentinel\u201d por convenci\u00f3n, y solo cuando el valor de la clave ha cambiado, hace una nueva petici\u00f3n para recuperar las claves que tiene configuradas en el m\u00e9todo \u201c.Select()\u201d.<\/p>\n<p>Ahora que ya tenemos un poco m\u00e1s claro c\u00f3mo funciona el refresco de las settings, sigamos configurando nuestra aplicaci\u00f3n.<\/p>\n<hr \/>\n<p>En el proyecto <strong>\u201cReloadableSettings.Models\u201d<\/strong> vamos a a\u00f1adir una clase llamada \u201cSettings\u201d. En esta clase\u00a0 volcaremos los valores de nuestras settings para consumirlos posteriormente en m\u00e1s partes de la aplicaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1856\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-class-1.png\" alt=\"\" width=\"973\" height=\"300\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-class-1.png 973w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-class-1-300x92.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-class-1-768x237.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-class-1-610x188.png 610w\" sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><\/p>\n<p>En el proyecto \u201cReloadableSettings.Api\u201d creamos una nueva carpeta \u201cExtensions\u201d, en la que a\u00f1adiremos una clase est\u00e1tica llamada \u201cConfigureServicesExtensions\u201d para a\u00f1adir m\u00e9todos de extensi\u00f3n que nos ayuden a configurar nuestra aplicaci\u00f3n.<\/p>\n<p>Vamos a crear el m\u00e9todo <strong>\u201cConfigureSettings\u201d<\/strong>, con el que registramos las settings de la aplicaci\u00f3n, y as\u00ed, poder consumirlas posteriormente a trav\u00e9s del patr\u00f3n TOptions<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1857\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/register-settings-2.png\" alt=\"\" width=\"1436\" height=\"361\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/register-settings-2.png 1436w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/register-settings-2-300x75.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/register-settings-2-1024x257.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/register-settings-2-768x193.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/register-settings-2-610x153.png 610w\" sizes=\"auto, (max-width: 1436px) 100vw, 1436px\" \/><\/p>\n<p>Y ahora, llamamos al m\u00e9todo desde nuestro Program.cs<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1858\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-settings-1.png\" alt=\"\" width=\"589\" height=\"290\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-settings-1.png 589w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/configure-settings-1-300x148.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/p>\n<p>Con todo esto, ya estamos listos para empezar a hacer uso de nuestros valores de configuraci\u00f3n.<\/p>\n<p>Vamos a crear un servicio que nos devuelva nuestras settings, llamado <strong>\u201cSettings Service\u201d<\/strong> en el proyecto<strong> \u201cReloadableSettings.Services\u201d.<\/strong><\/p>\n<p><a href=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1859\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service-1.png\" alt=\"\" width=\"1129\" height=\"737\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service-1.png 1129w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service-1-300x196.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service-1-1024x668.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service-1-768x501.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-service-1-610x398.png 610w\" sizes=\"auto, (max-width: 1129px) 100vw, 1129px\" \/><br \/>\n<\/a>En este servicio hacemos uso de la interfaz IOptionsSnapshot para inyectar la dependencia de las settings. Luego, creamos un m\u00e9todo para devolver el valor de nuestra setting \u201cHelloWorld\u201d.<\/p>\n<p>Ahora, vamos a registrar nuestro servicio en la inyecci\u00f3n de dependencias del proyecto.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1863\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-1-3.png\" alt=\"\" width=\"1431\" height=\"537\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-1-3.png 1431w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-1-3-300x113.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-1-3-1024x384.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-1-3-768x288.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-1-3-610x229.png 610w\" sizes=\"auto, (max-width: 1431px) 100vw, 1431px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1862\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-2-1.png\" alt=\"\" width=\"1319\" height=\"611\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-2-1.png 1319w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-2-1-300x139.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-2-1-1024x474.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-2-1-768x356.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/DI-2-1-610x283.png 610w\" sizes=\"auto, (max-width: 1319px) 100vw, 1319px\" \/><\/p>\n<p>Y por \u00faltimo, creamos un nuevo controller que nos devuelva el valor de nuestras setting. Con este controller vamos a comprobar que el valor se refresca en tiempo real.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1864\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-controller-1.png\" alt=\"\" width=\"1118\" height=\"835\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-controller-1.png 1118w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-controller-1-300x224.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-controller-1-1024x765.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-controller-1-768x574.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/settings-controller-1-610x456.png 610w\" sizes=\"auto, (max-width: 1118px) 100vw, 1118px\" \/><\/p>\n<h1>\u00a1Vamos a probar!<\/h1>\n<p>Arrancamos nuestra API y hacemos una petici\u00f3n al endpoint para ver el valor actual de nuestra setting.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1865\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1.png\" alt=\"\" width=\"1725\" height=\"736\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1.png 1725w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1-300x128.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1-1024x437.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1-768x328.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1-1536x655.png 1536w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-1-1-610x260.png 610w\" sizes=\"auto, (max-width: 1725px) 100vw, 1725px\" \/><\/p>\n<p>\u00a1Genial! Ya estamos consumiendo nuestras settings desde App Config. Ahora, vamos a Azure, cambiamos el valor de la clave de Sentinel en nuestro app config, \u00a0y\u2026<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1866\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1.png\" alt=\"\" width=\"1722\" height=\"733\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1.png 1722w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1-300x128.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1-1024x436.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1-768x327.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1-1536x654.png 1536w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/resultado-2-1-610x260.png 610w\" sizes=\"auto, (max-width: 1722px) 100vw, 1722px\" \/><\/p>\n<p>\u00a1Tach\u00e1n! Ya estamos viendo c\u00f3mo nuestras settings se refrescan en tiempo real. \u00a1Todo ha salido a pedir de boca!<\/p>\n<h1>Buenas pr\u00e1cticas al trabajar con App Configuration<\/h1>\n<p>Hablemos un poco de buenas pr\u00e1cticas a la hora de trabajar con App Configuration.<\/p>\n<p>Es recomendable que si trabajamos en un escenario en el que m\u00faltiples aplicaciones se conectan a nuestro App Configuration, tengamos claves separadas para cada una de las aplicaciones. Es un poco m\u00e1s complejo de mantener, pero con ello te aseguras de que las settings no se actualizan en una aplicaci\u00f3n hasta el momento en el que lo deseas.<\/p>\n<p>Si bien es cierto que el valor de la clave Sentinel no es importante, yo recomendar\u00eda que guarde alg\u00fan tipo de formato en funci\u00f3n de la versi\u00f3n de la aplicaci\u00f3n o de la fecha. De esta forma, podemos establecer una relaci\u00f3n sobre cu\u00e1ndo fue la \u00faltima vez que se hizo un refresco de las settings.<\/p>\n<p>Es recomendable tambi\u00e9n, pararse un rato a analizar el tiempo de expiraci\u00f3n de cach\u00e9 que queremos establecer. App Configuration tiene un l\u00edmite de 1000 peticiones al d\u00eda en su capa gratis, y de 30.000 a la hora en el plan standart, tras lo cual empieza a devolver errores 429 (Too many requests). Si dejamos la tasa de refresco por defecto de treinta segundos, tenemos que estar seguros de que no va a dar problemas en nuestro contexto de trabajo.<\/p>\n<p>En este post hemos utilizado la interfaz <strong>IOptionsSnapshot<\/strong> para recuperar las settings, pero no es la \u00fanica manera de hacerlo. El patr\u00f3n TOptions nos expone tres interfaces de las que hacer uso:<\/p>\n<ul>\n<li>TOptionsSnapshot, pensada para ser usada en dependencias de tipo transient o scoped.<\/li>\n<li>TOptionsMonitor, ideal para ser usada en dependencias de tipo singleton.<\/li>\n<li>TOptions,\u00a0 pensada para ser usada en dependencias de tipo singleton, pero que no es capaz de refrescar en tiempo de ejecuci\u00f3n las settings. Es necesario reiniciar la aplicaci\u00f3n para actualizar los valores.<\/li>\n<\/ul>\n<p>Cuando vayamos a usar el patr\u00f3n TOptions es bueno que averig\u00fcemos en qu\u00e9 tipo de dependencia estamos, y as\u00ed utilizar la interfaz que m\u00e1s se adecue a nuestras necesidades.<\/p>\n<h1>Recapitulando<\/h1>\n<p>Hagamos un repaso final de lo que hemos visto en el post.<\/p>\n<ol>\n<li>Hemos a\u00f1adido paso a paso el servicio App Configuration a nuestra aplicaci\u00f3n.<\/li>\n<li>Hemos hablado sobre c\u00f3mo funciona el sistema de refresco de App Configuration.<\/li>\n<li>Hemos usado el patr\u00f3n TOptions para recuperar las settings de nuestra aplicaci\u00f3n.<\/li>\n<li>Hemos hecho una prueba para ver c\u00f3mo los valores de las settings cambian en tiempo real.<\/li>\n<li>Y finalmente hemos hablado de buenas pr\u00e1cticas a la hora de implementar App Configuration en nuestras aplicaciones.<\/li>\n<\/ol>\n<p>Espero que este post te haya resultado interesante y \u00fatil, y ojal\u00e1 que te haya dejado con ganas de aprender m\u00e1s.<\/p>\n<p>En un futuro escribir\u00e9 otro art\u00edculo relacionado, hablando de otra de las funcionalidades que tiene App Configuration, el <strong>Feature Manager.<\/strong><\/p>\n<p>\u00a1Un saludo y hasta la pr\u00f3xima!<\/p>\n<h1>Bibliograf\u00eda y referencias<\/h1>\n<ul>\n<li class=\"entry-title\"><a href=\"https:\/\/dotnetgik.com\/2021\/11\/22\/azure-app-configuration-refresh-configuration-dynamically\/\">Refresh Azure App Configuration dynamically in .Net Core Web App<\/a><\/li>\n<li id=\"tutorial-use-dynamic-configuration-in-an-aspnet-core-app\"><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-app-configuration\/enable-dynamic-configuration-aspnet-core?tabs=core6x\">Tutorial: Use dynamic configuration in an ASP.NET Core app<\/a><\/li>\n<li id=\"connect-to-the-app-configuration-store\" class=\"heading-anchor\"><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-app-configuration\/quickstart-aspnet-core-app?tabs=core6x#connect-to-the-app-configuration-store\">Connect to the App Configuration store<\/a><\/li>\n<li><a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/details\/app-configuration\/\">App Configuration pricing<\/a><\/li>\n<li id=\"create-an-app-configuration-store\" class=\"heading-anchor\"><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-app-configuration\/quickstart-azure-app-configuration-create?tabs=azure-portal#create-an-app-configuration-store\">Create an App Configuration store<\/a><\/li>\n<\/ul>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>App Configuration es un servicio muy potente de Azure que nos permite manejar las configuraciones de nuestra aplicaci\u00f3n desde la nube. Nos permite definir settings por clave-valor, asignar labels que diferencian su valor entre los posibles entornos de nuestra aplicaci\u00f3n &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":193,"featured_media":1848,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[],"class_list":["post-1824","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>App Configuration con refresco din\u00e1mico de settings | ENCAMINA<\/title>\n<meta name=\"description\" content=\"En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"App Configuration con refresco din\u00e1mico de settings\" \/>\n<meta property=\"og:description\" content=\"En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-09T07:43:53+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"676\" \/>\n\t<meta property=\"og:image:height\" content=\"409\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Andr\u00e9s S\u00e1nchez Roble\u00f1o\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9s S\u00e1nchez Roble\u00f1o\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/\"},\"author\":{\"name\":\"Andr\u00e9s S\u00e1nchez Roble\u00f1o\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/b4177badafd61061e939c45e3e2c6d72\"},\"headline\":\"App Configuration con refresco din\u00e1mico de settings\",\"datePublished\":\"2023-05-09T07:43:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/\"},\"wordCount\":1496,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/04\\\/App-Configuration-con-refresco-de-settings.jpg\",\"articleSection\":[\".NET\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/\",\"name\":\"App Configuration con refresco din\u00e1mico de settings | ENCAMINA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/04\\\/App-Configuration-con-refresco-de-settings.jpg\",\"datePublished\":\"2023-05-09T07:43:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/b4177badafd61061e939c45e3e2c6d72\"},\"description\":\"En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/app-configuration-con-refresco-dinamico-de-settings\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/04\\\/App-Configuration-con-refresco-de-settings.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/04\\\/App-Configuration-con-refresco-de-settings.jpg\",\"width\":676,\"height\":409},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/\",\"name\":\"Piensa en software, desarrolla en colores\",\"description\":\"Las ventajas que te ofrece Microsoft Azure y el mundo.NET\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/b4177badafd61061e939c45e3e2c6d72\",\"name\":\"Andr\u00e9s S\u00e1nchez Roble\u00f1o\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0bdd170031df5f8351199d72b038ebfc632f9ca40078f4246923b0ed5517d996?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0bdd170031df5f8351199d72b038ebfc632f9ca40078f4246923b0ed5517d996?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0bdd170031df5f8351199d72b038ebfc632f9ca40078f4246923b0ed5517d996?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9s S\u00e1nchez Roble\u00f1o\"},\"description\":\"T\u00e9cnico superior en desarrollo de aplicaciones web y Microsoft Certified Solutions Developer. Apasionado de las tecnolog\u00edas y de como usarlas para dar soluciones a problemas complejos. Disfruta de aprender cada d\u00eda algo nuevo y de aportar todo su valor en su actual puesto como Cloud Solutions Developer en ENCAMINA. Dando pasos de beb\u00e9 para luego poder dar pasos de gigante.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/author\\\/asanchez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"App Configuration con refresco din\u00e1mico de settings | ENCAMINA","description":"En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/","og_locale":"es_ES","og_type":"article","og_title":"App Configuration con refresco din\u00e1mico de settings","og_description":"En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!","og_url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2023-05-09T07:43:53+00:00","og_image":[{"width":676,"height":409,"url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg","type":"image\/jpeg"}],"author":"Andr\u00e9s S\u00e1nchez Roble\u00f1o","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Andr\u00e9s S\u00e1nchez Roble\u00f1o","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/"},"author":{"name":"Andr\u00e9s S\u00e1nchez Roble\u00f1o","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/b4177badafd61061e939c45e3e2c6d72"},"headline":"App Configuration con refresco din\u00e1mico de settings","datePublished":"2023-05-09T07:43:53+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/"},"wordCount":1496,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg","articleSection":[".NET"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/","name":"App Configuration con refresco din\u00e1mico de settings | ENCAMINA","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg","datePublished":"2023-05-09T07:43:53+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/b4177badafd61061e939c45e3e2c6d72"},"description":"En este post veremos c\u00f3mo integrar App Configuration con en una API en .NET 6, c\u00f3mo configurarlo para poder refrescar las settings de la aplicaci\u00f3n en tiempo real y qu\u00e9 buenas pr\u00e1cticas debemos seguir para hacerlo. \u00a1Vamos a ello!","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/app-configuration-con-refresco-dinamico-de-settings\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2023\/04\/App-Configuration-con-refresco-de-settings.jpg","width":676,"height":409},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/","name":"Piensa en software, desarrolla en colores","description":"Las ventajas que te ofrece Microsoft Azure y el mundo.NET","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/b4177badafd61061e939c45e3e2c6d72","name":"Andr\u00e9s S\u00e1nchez Roble\u00f1o","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/0bdd170031df5f8351199d72b038ebfc632f9ca40078f4246923b0ed5517d996?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0bdd170031df5f8351199d72b038ebfc632f9ca40078f4246923b0ed5517d996?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0bdd170031df5f8351199d72b038ebfc632f9ca40078f4246923b0ed5517d996?s=96&d=mm&r=g","caption":"Andr\u00e9s S\u00e1nchez Roble\u00f1o"},"description":"T\u00e9cnico superior en desarrollo de aplicaciones web y Microsoft Certified Solutions Developer. Apasionado de las tecnolog\u00edas y de como usarlas para dar soluciones a problemas complejos. Disfruta de aprender cada d\u00eda algo nuevo y de aportar todo su valor en su actual puesto como Cloud Solutions Developer en ENCAMINA. Dando pasos de beb\u00e9 para luego poder dar pasos de gigante.","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/author\/asanchez\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/comments?post=1824"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1824\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media\/1848"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=1824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=1824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=1824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}