Ir para o conteúdo do rodapé
AJUDA DO .NET

Hangfire .NET Core (Como funciona para desenvolvedores)

O desenvolvimento de aplicações modernas frequentemente exige o processamento de tarefas em segundo plano para lidar com grandes volumes de trabalho. Em tais cenários, precisamos de gerenciadores de tarefas em segundo plano capazes de executar várias tarefas simultaneamente. Um exemplo de gerenciador de tarefas em segundo plano para aplicações C# .NET Core é o Hangfire. Neste blog, vamos aprender sobre como gerenciar tarefas em segundo plano do Hangfire e como usá-las com outros pacotes, como o IronPDF para geração de PDFs , para gerar documentos PDF em segundo plano.

O Hangfire simplifica a implementação do processamento em segundo plano em aplicações ASP.NET Core ou .NET Core 6 Web API, fornecendo uma estrutura confiável e flexível para gerenciar e executar tarefas em segundo plano. O Hangfire está disponível como um pacote NuGet e pode ser instalado usando a CLI do .NET , conforme mostrado abaixo:

dotnet add package Hangfire --version 1.8.6

Implementação em .NET Core Web API

Para aprender sobre o Hangfire, vamos criar uma aplicação de API .NET Core simples e instalar o Hangfire usando a CLI.

dotnet new webapi -n HangfireDemo
cd HangfireDemo
dotnet build
dotnet add package Hangfire --version 1.8.6
dotnet build
dotnet new webapi -n HangfireDemo
cd HangfireDemo
dotnet build
dotnet add package Hangfire --version 1.8.6
dotnet build
SHELL

Aqui, estamos criando uma API REST simples para previsão do tempo usando a CLI do .NET . A primeira linha cria um projeto de API Web .NET Core chamado HangfireDemo para executar endpoints de API. A segunda linha navega até a pasta recém-criada "HangfireDemo" e, em seguida, compilamos o projeto. Em seguida, adicionamos o pacote NuGet Hangfire ao nosso projeto e o compilamos novamente. Depois disso, você poderá abrir seu projeto em qualquer editor de sua escolha, como o Visual Studio 2022 ou o JetBrains Rider. Agora, se você executar o projeto, poderá ver o Swagger da seguinte forma:

Hangfire .NET Core (Como funciona para desenvolvedores): Figura 1 - Swagger

Aqui podemos ver as APIs GET de previsão do tempo, que retornam data, resumo e temperatura.

Hangfire .NET Core (Como funciona para desenvolvedores): Figura 2 - API GET de previsão do tempo

Agora vamos adicionar um processador de tarefas em segundo plano do Hangfire. Abra o projeto no Visual Studio.

Adicionar processador de tarefas Hangfire

Configure o Hangfire em sua aplicação, normalmente no arquivo Startup.cs. Isso envolve configurar um armazenamento de tarefas e inicializar o servidor Hangfire.

// Startup.cs
using Hangfire;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Hangfire services and use SQL Server as storage option
        services.AddHangfire(config => config.UseSqlServerStorage("your_connection_string"));
        services.AddHangfireServer();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Use Hangfire Server and Dashboard for monitoring and managing jobs
        app.UseHangfireServer();
        app.UseHangfireDashboard();
        // Your other configuration settings
    }
}
// Startup.cs
using Hangfire;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Hangfire services and use SQL Server as storage option
        services.AddHangfire(config => config.UseSqlServerStorage("your_connection_string"));
        services.AddHangfireServer();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Use Hangfire Server and Dashboard for monitoring and managing jobs
        app.UseHangfireServer();
        app.UseHangfireDashboard();
        // Your other configuration settings
    }
}
' Startup.cs
Imports Hangfire

Public Class Startup
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		' Add Hangfire services and use SQL Server as storage option
		services.AddHangfire(Function(config) config.UseSqlServerStorage("your_connection_string"))
		services.AddHangfireServer()
	End Sub

	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IHostingEnvironment)
		' Use Hangfire Server and Dashboard for monitoring and managing jobs
		app.UseHangfireServer()
		app.UseHangfireDashboard()
		' Your other configuration settings
	End Sub
End Class
$vbLabelText   $csharpLabel

O método ConfigureServices é usado para adicionar espaço de armazenamento para salvar os trabalhos recém-criados pelo Hangfire. Aqui, é utilizado um banco de dados SQL Server. A string de conexão do SQL Server deve ser substituída por "your_connection_string". Também é possível usar armazenamento em memória com Hangfire.InMemory.

dotnet add package Hangfire.InMemory --version 0.6.0

E substitua por:

services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });
services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });
services.AddHangfire(Sub(configuration)
	configuration.UseInMemoryStorage()
End Sub)
$vbLabelText   $csharpLabel

Criar trabalhos em segundo plano

Defina os métodos que você deseja executar como tarefas em segundo plano. Esses métodos devem ser métodos estáticos ou de instância de uma classe com um construtor sem parâmetros. As tarefas podem ser executadas de forma recorrente ou várias tarefas podem ser executadas simultaneamente.

public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Background job logic, can be a recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}
public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Background job logic, can be a recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}
Public Class MyBackgroundJob
	Public Sub ProcessJob()
		' Background job logic, can be a recurring job or multiple jobs
		Console.WriteLine("Background job is running...")
	End Sub
End Class
$vbLabelText   $csharpLabel

Enfileirar trabalhos

Enfileire tarefas em segundo plano usando a API do Hangfire. Você pode agendar tarefas em segundo plano para serem executadas em um horário específico, após um atraso ou regularmente.

// Enqueue a job to run immediately
BackgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());

// Schedule a job to run after a 5-minute delay
BackgroundJob.Schedule<MyBackgroundJob>(x => x.ProcessJob(), TimeSpan.FromMinutes(5));

// Schedule a recurring job using a job ID
RecurringJob.AddOrUpdate<MyBackgroundJob>("jobId", x => x.ProcessJob(), Cron.Daily);
// Enqueue a job to run immediately
BackgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());

// Schedule a job to run after a 5-minute delay
BackgroundJob.Schedule<MyBackgroundJob>(x => x.ProcessJob(), TimeSpan.FromMinutes(5));

// Schedule a recurring job using a job ID
RecurringJob.AddOrUpdate<MyBackgroundJob>("jobId", x => x.ProcessJob(), Cron.Daily);
' Enqueue a job to run immediately
BackgroundJob.Enqueue(Of MyBackgroundJob)(Function(x) x.ProcessJob())

' Schedule a job to run after a 5-minute delay
BackgroundJob.Schedule(Of MyBackgroundJob)(Function(x) x.ProcessJob(), TimeSpan.FromMinutes(5))

' Schedule a recurring job using a job ID
RecurringJob.AddOrUpdate(Of MyBackgroundJob)("jobId", Function(x) x.ProcessJob(), Cron.Daily)
$vbLabelText   $csharpLabel

Painel de controle e servidor Hangfire

O painel de controle e o servidor Hangfire podem ser adicionados no método Configure para monitoramento de tarefas em tempo real.

// Run Hangfire server and dashboard
app.UseHangfireServer();
app.UseHangfireDashboard();
// Run Hangfire server and dashboard
app.UseHangfireServer();
app.UseHangfireDashboard();
' Run Hangfire server and dashboard
app.UseHangfireServer()
app.UseHangfireDashboard()
$vbLabelText   $csharpLabel

O servidor também pode ser adicionado em ConfigureServices.

services.AddHangfireServer();
services.AddHangfireServer();
services.AddHangfireServer()
$vbLabelText   $csharpLabel

Tarefas "Disparar e esquecer"

// Fire and forget jobs are executed only once and almost immediately after creation.
var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!")); // Job ID for fire and forget job
// Fire and forget jobs are executed only once and almost immediately after creation.
var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!")); // Job ID for fire and forget job
' Fire and forget jobs are executed only once and almost immediately after creation.
Dim jobId = BackgroundJob.Enqueue(Sub() Console.WriteLine("Fire-and-forget!")) ' Job ID for fire and forget job
$vbLabelText   $csharpLabel

Tarefas recorrentes

// Recurring jobs fire many times based on a specified CRON schedule.
RecurringJob.AddOrUpdate("myrecurringjob", () => Console.WriteLine("Recurring!"), Cron.Daily);
// Recurring jobs fire many times based on a specified CRON schedule.
RecurringJob.AddOrUpdate("myrecurringjob", () => Console.WriteLine("Recurring!"), Cron.Daily);
' Recurring jobs fire many times based on a specified CRON schedule.
RecurringJob.AddOrUpdate("myrecurringjob", Sub() Console.WriteLine("Recurring!"), Cron.Daily)
$vbLabelText   $csharpLabel

Tarefas atrasadas

// Delayed jobs are executed only once but after a specified interval.
var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"), TimeSpan.FromDays(7));
// Delayed jobs are executed only once but after a specified interval.
var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"), TimeSpan.FromDays(7));
' Delayed jobs are executed only once but after a specified interval.
Dim jobId = BackgroundJob.Schedule(Sub() Console.WriteLine("Delayed!"), TimeSpan.FromDays(7))
$vbLabelText   $csharpLabel

Continuações

// Continuation jobs are executed once their parent jobs have completed.
BackgroundJob.ContinueJobWith(jobId, () => Console.WriteLine("Continuation!"));
// Continuation jobs are executed once their parent jobs have completed.
BackgroundJob.ContinueJobWith(jobId, () => Console.WriteLine("Continuation!"));
' Continuation jobs are executed once their parent jobs have completed.
BackgroundJob.ContinueJobWith(jobId, Sub() Console.WriteLine("Continuation!"))
$vbLabelText   $csharpLabel

Trabalho em lote

// Batch is a group of background jobs created atomically and considered as a single entity.
var batchId = BatchJob.StartNew(x =>
{
    x.Enqueue(() => Console.WriteLine("Job 1"));
    x.Enqueue(() => Console.WriteLine("Job 2"));
});
// Batch is a group of background jobs created atomically and considered as a single entity.
var batchId = BatchJob.StartNew(x =>
{
    x.Enqueue(() => Console.WriteLine("Job 1"));
    x.Enqueue(() => Console.WriteLine("Job 2"));
});
' Batch is a group of background jobs created atomically and considered as a single entity.
Dim batchId = BatchJob.StartNew(Sub(x)
	x.Enqueue(Sub() Console.WriteLine("Job 1"))
	x.Enqueue(Sub() Console.WriteLine("Job 2"))
End Sub)
$vbLabelText   $csharpLabel

Tarefa de continuação em lote

// Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, x =>
{
    x.Enqueue(() => Console.WriteLine("Last Job"));
});
// Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, x =>
{
    x.Enqueue(() => Console.WriteLine("Last Job"));
});
' Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, Sub(x)
	x.Enqueue(Sub() Console.WriteLine("Last Job"))
End Sub)
$vbLabelText   $csharpLabel

Painel

O painel de controle do Hangfire é onde você encontra todas as informações sobre seus trabalhos em segundo plano. Ele foi desenvolvido como um middleware OWIN (se você não estiver familiarizado com OWIN, não se preocupe), então você pode integrá-lo aos seus aplicativos ASP.NET, ASP.NET MVC, Nancy e ServiceStack, bem como usar o recurso OWIN Self-Host para hospedar o Dashboard em aplicativos de console ou serviços do Windows.

Quando o painel de controle estiver ativado, ele estará disponível na extensão /hangfire/. Neste painel, você pode gerenciar tarefas em segundo plano, agendar tarefas em segundo plano e visualizar tarefas "disparar e esquecer", além de tarefas recorrentes. Os trabalhos podem ser identificados usando um ID de trabalho.

Processamento em tempo real

Hangfire .NET Core (Como funciona para o desenvolvedor): Figura 3 - Processamento de tarefas em tempo real

Tarefas bem-sucedidas

Veja abaixo alguns exemplos de trabalhos bem-sucedidos.

Hangfire .NET Core (Como funciona para o desenvolvedor): Figura 4 - Tarefas concluídas com sucesso

Tarefas agendadas

Hangfire .NET Core (Como funciona para o desenvolvedor): Figura 5 - Tarefas agendadas

Quando sua aplicação for executada, o Hangfire se encarregará de processar as tarefas em segundo plano com base nas configurações definidas.

Lembre-se de consultar a documentação do Hangfire para opções de configuração e recursos mais avançados: A documentação e o código completo do Hangfire podem ser encontrados no GitHub Hangfire Demo .

Apresentando o IronPDF

IronPDF para geração de PDFs em .NET é um pacote NuGet da biblioteca PDF da Iron Software que auxilia na leitura e geração de documentos PDF. Ele consegue converter facilmente documentos formatados com informações de estilo para PDF. O IronPDF pode gerar PDFs facilmente a partir de conteúdo HTML. Ele pode baixar o HTML da URL e, em seguida, gerar PDFs.

O principal atrativo do IronPDF é sua função de conversão de HTML para PDF , que preserva layouts e estilos. Ele pode criar PDFs a partir de conteúdo da web, ideal para relatórios, faturas e documentação. Essa funcionalidade permite converter arquivos HTML, URLs e strings HTML em PDFs.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Comece a usar o IronPDF

Instale a biblioteca IronPDF.

Instale usando o Gerenciador de Pacotes NuGet

Para integrar o IronPDF ao seu projeto Hangfire .NET usando o Gerenciador de Pacotes NuGet , siga estes passos:

  1. Abra o Visual Studio e, no Solution Explorer, clique com o botão direito do mouse no seu projeto.
  2. Selecione "Gerenciar pacotes NuGet …" no menu de contexto.
  3. Vá para a aba Procurar e pesquise por IronPDF.
  4. Selecione a biblioteca IronPDF nos resultados da pesquisa e clique no botão Instalar.
  5. Aceite qualquer solicitação de contrato de licença.

Se preferir usar o Console do Gerenciador de Pacotes, execute o seguinte comando:

Install-Package IronPdf

Isso irá buscar e instalar o IronPDF em seu projeto.

Instalar usando o site do NuGet

Para obter uma visão geral detalhada do IronPDF, incluindo recursos, compatibilidade e opções adicionais de download, visite a página do IronPDF no site do NuGet emhttps://www.nuget.org/packages/IronPdf .

Instalar via DLL

Alternativamente, você pode incorporar o IronPDF diretamente em seu projeto usando seu arquivo DLL. Baixe o arquivo ZIP contendo a DLL neste link de Download Direto do IronPDF . Descompacte o arquivo e inclua a DLL no seu projeto.

Agora, vamos modificar nossa aplicação para adicionar uma tarefa de processamento em segundo plano para baixar um site como um arquivo PDF.

namespace HangfireDemo.Core;

public class PdfGenerationJob
{
    public void Start(string website)
    {
        // Create a PDF from any existing web page
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderUrlAsPdf(website);
        var filePath = AppContext.BaseDirectory + "result.pdf";
        pdf.SaveAs(filePath);
    }
}
namespace HangfireDemo.Core;

public class PdfGenerationJob
{
    public void Start(string website)
    {
        // Create a PDF from any existing web page
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderUrlAsPdf(website);
        var filePath = AppContext.BaseDirectory + "result.pdf";
        pdf.SaveAs(filePath);
    }
}
Namespace HangfireDemo.Core

	Public Class PdfGenerationJob
		Public Sub Start(ByVal website As String)
			' Create a PDF from any existing web page
			Dim renderer As New ChromePdfRenderer()
			Dim pdf As PdfDocument = renderer.RenderUrlAsPdf(website)
			Dim filePath = AppContext.BaseDirectory & "result.pdf"
			pdf.SaveAs(filePath)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

O IronPDF possui um método integrado para baixar um site a partir de um URL e salvá-lo como um documento PDF. Vamos usar esse método em nosso trabalho para baixar e salvar o arquivo em um local específico. Essa tarefa em segundo plano pode ser modificada para receber vários URLs de sites e salvá-los como PDFs.

Agora, vamos adicionar um controlador para expor as APIs de geração e download de PDFs.

using Hangfire;
using HangfireDemo.Core;
using Microsoft.AspNetCore.Mvc;

namespace HangfireDemo.Controllers;

[ApiController]
[Route("[controller]")]
public class PdfGeneratorController : ControllerBase
{
    [HttpGet("request", Name = "Start PDF Generation")]
    public void Start([FromQuery] string websiteUrl)
    {
        BackgroundJob.Enqueue<PdfGenerationJob>(x => x.Start(websiteUrl));
    }

    [HttpGet("result", Name = "Download PDF Generation")]
    public IActionResult WebResult()
    {
        var filePath = AppContext.BaseDirectory + "result.pdf";
        var stream = new FileStream(filePath, FileMode.Open);
        return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = "website.pdf" };
    }
}
using Hangfire;
using HangfireDemo.Core;
using Microsoft.AspNetCore.Mvc;

namespace HangfireDemo.Controllers;

[ApiController]
[Route("[controller]")]
public class PdfGeneratorController : ControllerBase
{
    [HttpGet("request", Name = "Start PDF Generation")]
    public void Start([FromQuery] string websiteUrl)
    {
        BackgroundJob.Enqueue<PdfGenerationJob>(x => x.Start(websiteUrl));
    }

    [HttpGet("result", Name = "Download PDF Generation")]
    public IActionResult WebResult()
    {
        var filePath = AppContext.BaseDirectory + "result.pdf";
        var stream = new FileStream(filePath, FileMode.Open);
        return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = "website.pdf" };
    }
}
Imports Hangfire
Imports HangfireDemo.Core
Imports Microsoft.AspNetCore.Mvc

Namespace HangfireDemo.Controllers

	<ApiController>
	<Route("[controller]")>
	Public Class PdfGeneratorController
		Inherits ControllerBase

		<HttpGet("request", Name := "Start PDF Generation")>
		Public Sub Start(<FromQuery> ByVal websiteUrl As String)
			BackgroundJob.Enqueue(Of PdfGenerationJob)(Function(x) x.Start(websiteUrl))
		End Sub

		<HttpGet("result", Name := "Download PDF Generation")>
		Public Function WebResult() As IActionResult
			Dim filePath = AppContext.BaseDirectory & "result.pdf"
			Dim stream = New FileStream(filePath, FileMode.Open)
			Return New FileStreamResult(stream, "application/octet-stream") With {.FileDownloadName = "website.pdf"}
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Criamos aqui duas APIs: uma para iniciar a tarefa em segundo plano e obter o URL do site para iniciar o download, e outra API para baixar o PDF resultante. As APIs são representadas conforme mostrado abaixo.

Hangfire .NET Core (Como funciona para desenvolvedores): Figura 7 - APIs do PDFGenerator

E o resultado é este:

Hangfire .NET Core (Como funciona para o desenvolvedor): Figura 8 - Saída

Licenciamento (Teste Gratuito Disponível)

Para que o código acima funcione sem marcas d'água, é necessária uma chave de licença. Uma licença de avaliação está disponível para desenvolvedores mediante cadastro no IronPDF Free Trial . Não é necessário cartão de crédito para obter uma licença de teste. Você pode fornecer seu endereço de e-mail e se inscrever para um teste gratuito.

Conclusão

Hangfire e IronPDF juntos formam uma ótima combinação para gerar e baixar PDFs em segundo plano. O Hangfire permite o processamento eficiente de tarefas de longa duração, enquanto o IronPDF oferece uma solução flexível e fácil de usar para geração de PDFs. Para saber mais sobre o IronPDF, você pode visitar a Documentação do IronPDF .

Explore também outras ferramentas do pacote de produtos Iron Software , que podem aprimorar suas habilidades de programação e atender aos requisitos de aplicativos modernos.

Perguntas frequentes

O que é Hangfire no .NET Core?

Hangfire é um framework que simplifica a implementação de processamento em segundo plano em aplicações ASP.NET Core ou .NET Core 6. Ele fornece uma solução confiável e flexível para gerenciar e executar tarefas em segundo plano.

Como faço para instalar o Hangfire em uma aplicação .NET Core?

O Hangfire pode ser instalado como um pacote NuGet. Você pode adicioná-lo usando a CLI do .NET com o comando: dotnet add package Hangfire --version 1.8.6 .

Quais são os tipos de tarefas em segundo plano que o Hangfire suporta?

O Hangfire suporta vários tipos de tarefas em segundo plano, incluindo tarefas "disparar e esquecer", tarefas com atraso, tarefas recorrentes e tarefas de continuação.

Como configurar o Hangfire em uma aplicação .NET Core?

O Hangfire é configurado no arquivo Startup.cs , onde você define o armazenamento de tarefas e inicializa o servidor Hangfire. Normalmente, isso envolve adicionar os serviços do Hangfire e configurar um servidor SQL ou um armazenamento em memória.

O que é o painel de controle do Hangfire?

O Painel de Controle do Hangfire é uma ferramenta para monitorar e gerenciar tarefas em segundo plano. Ele fornece informações sobre processamento em andamento, tarefas concluídas com sucesso e tarefas agendadas, e pode ser acessado por meio de uma interface web.

Como posso criar uma tarefa em segundo plano usando o Hangfire?

É possível criar tarefas em segundo plano usando o Hangfire, definindo os métodos que você deseja executar como tarefas e, em seguida, enfileirando-as usando a API do Hangfire. As tarefas podem ser agendadas para serem executadas imediatamente, após um atraso ou de forma recorrente.

Como posso executar tarefas de geração de PDF em segundo plano com o .NET Core?

Você pode executar tarefas de geração de PDF em segundo plano usando uma biblioteca de PDF que suporte a conversão de HTML para PDF. Isso pode ser integrado a uma estrutura de processamento de tarefas em segundo plano, como o Hangfire, para automatizar a criação de PDFs a partir de conteúdo HTML.

Quais são algumas das funcionalidades de uma biblioteca de geração de PDF em .NET?

Uma biblioteca de geração de PDF pode converter strings HTML, arquivos HTML e URLs em PDFs. Ela preserva layouts e estilos e é útil para gerar relatórios, faturas e documentação a partir de conteúdo da web.

Como instalar uma biblioteca de geração de PDF em um projeto .NET?

Uma biblioteca de geração de PDF pode ser instalada usando o Gerenciador de Pacotes NuGet no Visual Studio ou através do Console do Gerenciador de Pacotes com um comando específico. Ela também pode ser instalada baixando o arquivo DLL diretamente do site da biblioteca.

O que é necessário para usar uma biblioteca de geração de PDFs sem marcas d'água?

Para usar uma biblioteca de geração de PDFs sem marcas d'água, geralmente é necessária uma chave de licença. Uma licença de avaliação gratuita pode estar disponível mediante cadastro no site da biblioteca.

Como integrar uma ferramenta de geração de PDF com o Hangfire no .NET Core?

É possível integrar uma ferramenta de geração de PDF com o Hangfire no .NET Core configurando uma tarefa em segundo plano que utiliza a biblioteca de geração de PDF para converter HTML em PDF. Isso permite a criação e o gerenciamento automatizados de documentos em aplicativos.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim