{"id":389,"date":"2017-02-21T10:14:05","date_gmt":"2017-02-21T10:14:05","guid":{"rendered":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=389"},"modified":"2017-02-21T10:17:11","modified_gmt":"2017-02-21T10:17:11","slug":"hangfire-crear-procesos-segundo-plano-c","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/","title":{"rendered":"Hangfire: Como crear procesos en segundo plano con C#"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-401\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png\" alt=\"hangfire-workflow\" width=\"542\" height=\"324\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png 542w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow-300x179.png 300w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/a> En nuestros desarrollos, a menudo tenemos la necesidad de ejecutar tareas en segundo plano. Pensemos en una aplicaci\u00f3n web, por ejemplo. Imaginemos que tenemos que <strong>actualizar informaci\u00f3n de nuestra base de datos<\/strong> cada cierto tiempo y de forma desatendida o quiz\u00e1s ejecutar un costoso proceso de descarga de ficheros. Para realizar estas tareas, podr\u00edamos desarrollar servicios Windows e instalarlos en el servidor, incluso utilizar WebJobs de Azure si estamos en un entrono cloud.<\/p>\n<p><!--more--><\/p>\n<p>Tambi\u00e9n tenemos otra v\u00eda: <strong>Utilizar un framework<\/strong> para la programaci\u00f3n y ejecuci\u00f3n de tareas en segundo plano. Hay muchos frameworks para esto, incluso .NET tiene la API de <em>QueueBackgroundWorkItem<\/em> que intenta abordar este problema, pero en este post nos vamos a centrar en <strong>Hangfire<\/strong>.<\/p>\n<h2>\u00bfQu\u00e9 es Hangfire?<\/h2>\n<p><strong>Hangfire es uno de los frameworks mas completos para la creaci\u00f3n de tareas en segundo plano en aplicaciones .NET e incluso .NET Core<\/strong>. Tiene much\u00edsimas caracter\u00edsticas chulas (algunas de ellas en su versi\u00f3n PRO) y adem\u00e1s una documentaci\u00f3n genial.<\/p>\n<p>Para poder entender de verdad como funciona, vamos a ver su arquitectura. Simplificando, Hangfire consta de tres partes:<\/p>\n<p><strong>1. Cliente<\/strong><\/p>\n<p><strong>En nuestro hilo principal de ejecuci\u00f3n , simplemente tenemos que <em>instanciar<\/em> el cliente<\/strong> o utilizar m\u00e9todos est\u00e1ticos que nos proporciona la clase <em>BackgroundJob<\/em>.<\/p>\n<p>En el momento en el que Hangfire serialice la definici\u00f3n de la tarea en el sistema de almacenamiento que hayamos seleccionado, volveremos a tener el control de nuestro hilo principal y la tarea se encolar\u00e1 para su proceso.<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n\/\/ Podemos lanzar tareas &quot;fire-and-forget&quot;\r\nBackgroundJob.Enqueue(() =&amp;gt; Console.WriteLine(&quot;\u00a1Hola desde background!&quot;));\r\n\r\n\/\/ Crear tareas y posponerlas\r\nBackgroundJob.Schedule(() =&amp;gt; Console.WriteLine(&quot;\u00a1Hola desde hace media hora!&quot;), TimeSpan.FromMinutes(30));\r\n\r\n\/\/ Incluso programar tareas recurrentes\r\nRecurringJob.AddOrUpdate(() =&amp;gt; Console.Write(&quot;\u00a1Soy una tarea diaria!&quot;), Cron.Daily);\r\n<\/pre>\n<p><strong>\u00a02. Almacenamiento<\/strong><\/p>\n<p><strong>Hangfire mantiene nuestras tareas guardadas en un sistema de almacenamiento<\/strong>. Esto permite llevar un historial de las estad\u00edsticas de los trabajos e incluso reanudarlos en el caso de que nuestra aplicaci\u00f3n se caiga por completo.<\/p>\n<p>Podemos mantener nuestras tareas en SQL Server, MongoDB, Raven e incluso en Redis si estamos dispuestos a comprar licencia PRO. Podemos encontrar todos los sistemas de almacenamiento soportados <a href=\"http:\/\/hangfire.io\/extensions.html#storages\">en la documentaci\u00f3n<\/a>.<\/p>\n<p>El hist\u00f3rico de los trabajos se gestiona autom\u00e1ticamente, as\u00ed que no es necesario ir vaciando el sistema de almacenamiento, Hangfire lo hace por nosotros.<\/p>\n<p><strong>3. Servidor<\/strong><\/p>\n<p><strong><em>Hangfire Server<\/em> es la parte encargada de la ejecuci\u00f3n de las tareas<\/strong>. Este servidor se puede iniciar desde cualquier tipo de aplicaci\u00f3n, ya sea una aplicaci\u00f3n de consola o un servicio web. Simplemente instanciamos un objeto <em>BackgroundJobServer<\/em>\u00a0y lo desechamos cuando hayamos terminado con \u00e9l.<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nvar server = new BackgroundJobServer();\r\n\r\n\/\/ Es importante hacer dispose del servidor\r\nserver.Dispose();\r\n<\/pre>\n<p>Este servidor posee una cantidad configurable de hilos de proceso en segundo plano en los que encolar\u00e1 las tareas guardadas en el almacenamiento y actualizar\u00e1 su estado conforme vaya ejecutando.<\/p>\n<p>Adem\u00e1s, en el caso de que se produzca alg\u00fan tipo de excepci\u00f3n no controlada en la tarea, por defecto se volver\u00e1 a encolar hasta un m\u00e1ximo de diez veces en un periodo de alrededor de dos horas. Si se supera este l\u00edmite, la tarea se tendr\u00e1 que reanudar a mano desde el panel o mediante c\u00f3digo. Todo esto es f\u00e1cilmente personalizable desde c\u00f3digo. Solo hay que a\u00f1adir el siguiente atributo sobre el m\u00e9todo que ejecutamos en segundo plano:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n\/\/ Solo se reintentar\u00e1 una vez\r\n&#x5B;AutomaticRetry(Attempts = 1)]\r\npublic void BackgroundMethod()\r\n{\r\n}\r\n<\/pre>\n<h3>Escalado<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-406\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/farm-300x188.png\" alt=\"farm\" width=\"300\" height=\"188\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/farm-300x188.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/farm.png 492w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>En el caso de que necesitemos m\u00e1s de un servidor de Hangfire para nuestra aplicaci\u00f3n, solo tenemos que asegurarnos de que todos los servidores tengan el c\u00f3digo necesario para llevar a cabo las tareas y conectar dichos servidores al mismo almacenamiento. Detecta cuando un servidor se conecta al almacenamiento, lo a\u00f1ade a su <em>pool<\/em> de servidores y en el momento que se desconecte, lo elimina y sigue funcionando correctamente. As\u00ed de f\u00e1cil.<\/p>\n<p>Hangfire se encarga de repartir los trabajos conforme sea necesario, en principio de forma equitativa, pero podemos configurar qu\u00e9 trabajos van a qu\u00e9 servidores <a href=\"http:\/\/docs.hangfire.io\/en\/latest\/background-processing\/configuring-queues.html\">utilizando colas<\/a>. Esto nos permite tener servidores dedicados a colas de alta prioridad y compartir servidor para trabajos de menor prioridad.<\/p>\n<h2>Instalaci\u00f3n<\/h2>\n<p>En una aplicaci\u00f3n web con SQL Server, es tan f\u00e1cil como instalar los paquetes necesarios. Para ello, abrimos la consola de administraci\u00f3n de paquetes NuGET y escribimos lo siguiente:<\/p>\n<pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\r\nPM&amp;gt; Install-Package Hangfire\r\n<\/pre>\n<p>Esto nos instala <em>Hangfire.Core<\/em>, el paquete para almacenamiento mediante SQL Server y <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.owin.host.systemweb(v=vs.113).aspx\"><em>Microsoft.Owin.Host.SystemWeb<\/em><\/a>.<\/p>\n<p>Para configurarlo, simplemente tenemos que a\u00f1adir el espacio de nombres de Hangfire a la clase punto de entrada de nuestra aplicaci\u00f3n y utilizar los m\u00e9todos de extensi\u00f3n de la propiedad <em>GlobalConfiguration.Configuration<\/em>. Por ejemplo, para una aplicaci\u00f3n basada en OWIN, a\u00f1adir\u00edamos lo siguiente a la clase <em>Startup.cs<\/em>:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic void Configuration(IAppBuilder app)\r\n{\r\n    GlobalConfiguration.Configuration.UseSqlServerStorage(&quot;&amp;lt;Cadena de conexi\u00f3n&amp;gt;&quot;);\r\n    app.UseHangfireDashboard();\r\n}\r\n<\/pre>\n<p>Con esto ya tendr\u00edamos listo nuestro Hangfire funcionando, con las tareas almacenadas en un SQL Server e incluso con el panel de administraci\u00f3n disponible al acceder a <em>http:\/\/tuaplicaci\u00f3n\/hangfire<\/em>.<\/p>\n<p>Hay que tener en cuenta que dicho panel de administraci\u00f3n s\u00f3lo est\u00e1 disponible para las peticiones locales, aunque esto<a href=\"http:\/\/docs.hangfire.io\/en\/latest\/configuration\/using-dashboard.html#configuring-authorization\"> se puede cambiar<\/a>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p><strong>Hangfire es un framework de tareas en segundo plano con el que se puede hacer procesos muy costosos sin que pr\u00e1cticamente haya impacto alguno en la experiencia del usuario<\/strong>.<\/p>\n<p>Adem\u00e1s, viene con un panel de administraci\u00f3n genial y tiene una de las mejores documentaciones de un proyecto open source que yo haya visto.<\/p>\n<p>Personalmente, me declaro fan incondicional de este \u00abjuguetito\u00bb.<\/p>\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>En nuestros desarrollos, a menudo tenemos la necesidad de ejecutar tareas en segundo plano. Pensemos en una aplicaci\u00f3n web, por ejemplo. Imaginemos que tenemos que actualizar informaci\u00f3n de nuestra base de datos cada cierto tiempo y de forma desatendida o &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/\">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":126,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-389","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"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>Hangfire: Como crear procesos en segundo plano con C# - Piensa en software, desarrolla en colores<\/title>\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\/hangfire-crear-procesos-segundo-plano-c\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hangfire: Como crear procesos en segundo plano con C#\" \/>\n<meta property=\"og:description\" content=\"En nuestros desarrollos, a menudo tenemos la necesidad de ejecutar tareas en segundo plano. Pensemos en una aplicaci\u00f3n web, por ejemplo. Imaginemos que tenemos que actualizar informaci\u00f3n de nuestra base de datos cada cierto tiempo y de forma desatendida o &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-21T10:14:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-02-21T10:17:11+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png\" \/>\n<meta name=\"author\" content=\"Juan Carlos Mart\u00ednez Garc\u00eda\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jcmartinezg23\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Juan Carlos Mart\u00ednez Garc\u00eda\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 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\\\/hangfire-crear-procesos-segundo-plano-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/\"},\"author\":{\"name\":\"Juan Carlos Mart\u00ednez Garc\u00eda\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/979c86ed9d5e671c262ed57b80f5bf44\"},\"headline\":\"Hangfire: Como crear procesos en segundo plano con C#\",\"datePublished\":\"2017-02-21T10:14:05+00:00\",\"dateModified\":\"2017-02-21T10:17:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/\"},\"wordCount\":1001,\"commentCount\":4,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/hangfire-workflow.png\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/\",\"name\":\"Hangfire: Como crear procesos en segundo plano con C# - Piensa en software, desarrolla en colores\",\"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\\\/hangfire-crear-procesos-segundo-plano-c\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/hangfire-workflow.png\",\"datePublished\":\"2017-02-21T10:14:05+00:00\",\"dateModified\":\"2017-02-21T10:17:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/979c86ed9d5e671c262ed57b80f5bf44\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/hangfire-crear-procesos-segundo-plano-c\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/hangfire-workflow.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/hangfire-workflow.png\",\"width\":542,\"height\":324},{\"@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\\\/979c86ed9d5e671c262ed57b80f5bf44\",\"name\":\"Juan Carlos Mart\u00ednez Garc\u00eda\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c450966c6fe8374bc2c6bf7c86ce77e4c7504f9ddadcb56ff46f2c16ee6e55e4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c450966c6fe8374bc2c6bf7c86ce77e4c7504f9ddadcb56ff46f2c16ee6e55e4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c450966c6fe8374bc2c6bf7c86ce77e4c7504f9ddadcb56ff46f2c16ee6e55e4?s=96&d=mm&r=g\",\"caption\":\"Juan Carlos Mart\u00ednez Garc\u00eda\"},\"description\":\"Trabajo con tecnolog\u00eda Microsoft, especialmente NET Core y Azure, adem\u00e1s de con el stack de Office 365. Estoy certificado como MCSD en Web Applications y App Builder. Me apasiona lo que hay detr\u00e1s de las tecnolog\u00edas que utilizamos los desarrolladores a diario, el c\u00f3digo limpio y desarrollar pensando en colores. Actualmente aplico todo mi buen rollo trabajando como Software &amp; Cloud Architect para ENCAMINA.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/jcmartinezg23\"],\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/author\\\/jcmartinez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hangfire: Como crear procesos en segundo plano con C# - Piensa en software, desarrolla en colores","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\/hangfire-crear-procesos-segundo-plano-c\/","og_locale":"es_ES","og_type":"article","og_title":"Hangfire: Como crear procesos en segundo plano con C#","og_description":"En nuestros desarrollos, a menudo tenemos la necesidad de ejecutar tareas en segundo plano. Pensemos en una aplicaci\u00f3n web, por ejemplo. Imaginemos que tenemos que actualizar informaci\u00f3n de nuestra base de datos cada cierto tiempo y de forma desatendida o &hellip; Continue reading &rarr;","og_url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2017-02-21T10:14:05+00:00","article_modified_time":"2017-02-21T10:17:11+00:00","og_image":[{"url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png","type":"","width":"","height":""}],"author":"Juan Carlos Mart\u00ednez Garc\u00eda","twitter_card":"summary_large_image","twitter_creator":"@jcmartinezg23","twitter_misc":{"Escrito por":"Juan Carlos Mart\u00ednez Garc\u00eda","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/"},"author":{"name":"Juan Carlos Mart\u00ednez Garc\u00eda","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/979c86ed9d5e671c262ed57b80f5bf44"},"headline":"Hangfire: Como crear procesos en segundo plano con C#","datePublished":"2017-02-21T10:14:05+00:00","dateModified":"2017-02-21T10:17:11+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/"},"wordCount":1001,"commentCount":4,"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/","name":"Hangfire: Como crear procesos en segundo plano con C# - Piensa en software, desarrolla en colores","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\/hangfire-crear-procesos-segundo-plano-c\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png","datePublished":"2017-02-21T10:14:05+00:00","dateModified":"2017-02-21T10:17:11+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/979c86ed9d5e671c262ed57b80f5bf44"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/hangfire-crear-procesos-segundo-plano-c\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/hangfire-workflow.png","width":542,"height":324},{"@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\/979c86ed9d5e671c262ed57b80f5bf44","name":"Juan Carlos Mart\u00ednez Garc\u00eda","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/c450966c6fe8374bc2c6bf7c86ce77e4c7504f9ddadcb56ff46f2c16ee6e55e4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c450966c6fe8374bc2c6bf7c86ce77e4c7504f9ddadcb56ff46f2c16ee6e55e4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c450966c6fe8374bc2c6bf7c86ce77e4c7504f9ddadcb56ff46f2c16ee6e55e4?s=96&d=mm&r=g","caption":"Juan Carlos Mart\u00ednez Garc\u00eda"},"description":"Trabajo con tecnolog\u00eda Microsoft, especialmente NET Core y Azure, adem\u00e1s de con el stack de Office 365. Estoy certificado como MCSD en Web Applications y App Builder. Me apasiona lo que hay detr\u00e1s de las tecnolog\u00edas que utilizamos los desarrolladores a diario, el c\u00f3digo limpio y desarrollar pensando en colores. Actualmente aplico todo mi buen rollo trabajando como Software &amp; Cloud Architect para ENCAMINA.","sameAs":["https:\/\/x.com\/jcmartinezg23"],"url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/author\/jcmartinez\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/389","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\/126"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/comments?post=389"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/389\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}