Przejdź do treści stopki
POMOC .NET

Hangfire .NET Core (jak to działa dla programistów)

Nowoczesne tworzenie aplikacji często wymaga przetwarzania zadań w tle, aby obsłużyć ogromne obciążenia. W takich scenariuszach potrzebujemy obsługujących zadań w tle, które są w stanie wykonywać wiele zadań. Jednym z takich obsługujących zadań w tle dla aplikacji C# .NET Core jest Hangfire. W tym blogu dowiemy się, jak zarządzać zadaniami w tle za pomocą Hangfire i jak korzystać z nich z innymi pakietami, takimi jak IronPDF for PDF Generation, aby generować dokumenty PDF w tle.

Hangfire upraszcza implementację przetwarzania w tle w aplikacjach ASP.NET Core lub .NET Core 6 Web API, dostarczając niezawodny i elastyczny framework do zarządzania i wykonywania zadań w tle. Hangfire jest dostępny jako pakiet NuGet i można go zainstalować, używając .NET CLI, jak pokazano poniżej:

dotnet add package Hangfire --version 1.8.6

Implementacja w .NET Core Web API

Aby dowiedzieć się o Hangfire, stwórzmy prostą aplikację API .NET Core i zainstalujmy Hangfire, używając 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

Tutaj tworzymy proste REST API pogody, używając .NET CLI. Pierwsza linia tworzy projekt .NET Core Web API o nazwie HangfireDemo do wykonywania punktów końcowych API. Druga linia nawiguję do właśnie utworzonego folderu "HangfireDemo", a następnie budujemy projekt. Następnie dodajemy pakiet Hangfire NuGet do naszego projektu i ponownie go budujemy. Po tym możesz otworzyć swój projekt w dowolnym edytorze, takim jak Visual Studio 2022 lub JetBrains Rider. Teraz, jeśli uruchomisz projekt, możesz zobaczyć Swagger w następujący sposób:

Hangfire .NET Core (How It Works For Developer): Rysunek 1 - Swagger

Tutaj widzimy GET API pogody, które zwracają datę, podsumowanie i temperaturę.

Hangfire .NET Core (How It Works For Developer): Rysunek 2 - Weather GET API

Teraz dodajmy procesor zadań w tle Hangfire. Otwórz projekt w Visual Studio.

Dodaj procesor zadań Hangfire

Skonfiguruj Hangfire w swojej aplikacji, zazwyczaj w pliku Startup.cs. To obejmuje ustawienie magazynu zadań i zainicjowanie serwera 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

Metoda ConfigureServices jest używana do dodania magazynu, aby zapisywać nowo utworzone zadania Hangfire. Tutaj używana jest baza danych SQL Server. Ciąg połączeń SQL Server powinien być zastąpiony za pomocą "your_connection_string". Można również używać magazynu w pamięci z Hangfire.InMemory.

dotnet add package Hangfire.InMemory --version 0.6.0

I zastąp za pomocą:

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

Twórz zadania w tle

Definiuj metody, które chcesz uruchamiać jako zadania w tle. Te metody powinny być statycznymi lub instancyjnymi metodami klasy z konstruktorem bez parametrów. Zadania można uruchomić jako zadania cykliczne, albo można uruchamiać wiele zadań jednocześnie.

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

Enqueue Jobs

Umieszczaj zadania w tle w kolejce używając API Hangfire. Możesz zaplanować zadania w tle do uruchomienia w określonym czasie, po opóźnieniu lub regularnie.

// 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

Hangfire Dashboard and Server

Panel nawigacyjny Hangfire i serwer można dodać w metodzie Configure do monitorowania zadań w czasie rzeczywistym.

// 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

Serwer można również dodać w ConfigureServices.

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

Zadania jednorazowe

// 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

Zadania cykliczne

// 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

Zadania opóźnione

// 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

Kontynuacje

// 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

Zadanie wsadowe

// 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

Zadanie wsadowe z kontynuacją

// 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

Dashboard

Panel nawigacyjny Hangfire to miejsce, gdzie możesz znaleźć wszystkie informacje o swoich zadaniach w tle. Jest napisany jako middleware OWIN (jeśli nie jesteś zaznajomiony z OWIN, nie martw się), więc możesz podłączyć go do swoich aplikacji ASP.NET, ASP.NET MVC, Nancy i ServiceStack, a także używać funkcji OWIN Self-Host do hostowania Dashboard wewnątrz aplikacji konsolowych lub usług systemu Windows.

Gdy masz włączony panel nawigacyjny, jest on dostępny na rozszerzeniu /hangfire/. W tym panelu nawigacyjnym, możesz zarządzać zadaniami w tle, planować zadania w tle i przeglądać zadania jednorazowe oraz powtarzające się. Zadania mogą być identyfikowane za pomocą ID zadania.

Przetwarzanie na żywo

Hangfire .NET Core (How It Works For Developer): Rysunek 3 - Przetwarzanie zadań na żywo

Udane zadania

Przeglądaj poniżej udane zadania.

Hangfire .NET Core (How It Works For Developer): Rysunek 4 - Udane zadania

Zaplanowane zadania

Hangfire .NET Core (How It Works For Developer): Rysunek 5 - Zaplanowane zadania

Kiedy twoja aplikacja działa, Hangfire zadba o przetwarzanie zadań w tle na podstawie skonfigurowanych ustawień.

Pamiętaj, aby sprawdzić dokumentację Hangfire dla bardziej zaawansowanych opcji konfiguracyjnych i funkcji: Hangfire Dokumentacja, a pełny kod można znaleźć na GitHub Hangfire Demo.

Przedstawiamy IronPDF

IronPDF for .NET Generacja PDF to pakiet NuGet od Biblioteka PDF Iron Software, który pomaga w odczycie i generacji dokumentów PDF. Może łatwo konwertować sformatowane dokumenty z informacjami o stylu do PDF. IronPDF może łatwo generować PDF z treści HTML. Może pobierać HTML z URL i następnie generować PDF.

Główną atrakcją IronPDF jest jego funkcja Konwersja HTML do PDF, która zachowuje układy i style. Może tworzyć PDF z treści web, idealne dla raportów, faktur i dokumentacji. Ta funkcja umożliwia konwersję plików HTML, adresów URL i ciągów znaków HTML do formatu 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");
    }
}
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

Zacznij korzystać z IronPDF

Zainstaluj bibliotekę IronPDF

Instalacja za pomocą menedżera pakietów NuGet

Aby zintegrować IronPDF z Twoim projektem Hangfire .NET używając Menedżera pakietów NuGet, postępuj według tych kroków:

  1. Otwórz Visual Studio i w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy na swoim projekcie.
  2. Wybierz "Zarządzaj pakietami NuGet..." z menu kontekstowego.
  3. Przejdź na kartę Przeglądaj i wyszukaj IronPDF.
  4. Wybierz bibliotekę IronPDF z wyników wyszukiwania i kliknij przycisk Zainstaluj.
  5. Zaakceptuj wszelkie monity dotyczące Umowy licencyjnej.

Jeśli wolisz używać Konsoli Menedżera pakietów, wykonaj następujące polecenie:

Install-Package IronPdf

To pobierze i zainstaluje IronPDF w Twoim projekcie.

Instalacja za pomocą NuGet Strona internetowa

Aby uzyskać szczegółowy przegląd IronPDF, w tym funkcje, kompatybilność i dodatkowe opcje pobierania, odwiedź stronę IronPDF na stronie NuGet pod adresem https://www.nuget.org/packages/IronPdf.

Instalacja za pomocą biblioteki DLL

Alternatywnie, można bezpośrednio zintegrować IronPDF z projektem, używając pliku DLL. Pobierz plik ZIP zawierający DLL z tego Bezpośrednie pobieranie IronPDF. Rozpakuj plik i dołącz bibliotekę DLL do swojego projektu.

Teraz zmodyfikujmy naszą aplikację, aby dodać zadanie przetwarzania w tle do pobrania strony internetowej jako pliku 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

IronPDF ma wbudowaną metodę do pobierania strony internetowej z URL i zapisywania jej jako dokument PDF. Będziemy używać tej metody w naszej pracy, aby pobrać i zapisać ją w określonej lokalizacji. To zadanie w tle można zmodyfikować, aby pobierało wiele adresów URL stron internetowych i zapisywało je jako PDF.

Teraz dodajmy kontroler, aby wyeksponować generację PDF i API pobierania.

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

Tutaj stworzyliśmy dwa API: jedno do uruchomienia zadania w tle i pobrania adresu URL strony w celu zainicjowania pobierania oraz drugie API do pobrania wynikowego PDF. API są przedstawione, jak pokazano poniżej.

Hangfire .NET Core (How It Works For Developer): Rysunek 7 - PDFGenerator API

A wyniki wyglądają tak:

Hangfire .NET Core (How It Works For Developer): Rysunek 8 - Wynik

Licencjonowanie (dostępna bezpłatna wersja próbna)

Aby powyższy kod działał bez znaków wodnych, wymagany jest klucz licencyjny. Licencja trial jest dostępna dla programistów po zarejestrowaniu w IronPDF Free Trial. Nie jest wymagana karta kredytowa do otrzymania licencji trial. Możesz podać swoje ID e-mail i zarejestrować się na darmowy okres próbny.

Wnioski

Hangfire i IronPDF razem stanowią doskonałe połączenie do generowania i pobierania PDF w tle. Hangfire umożliwia efektywne przetwarzanie zadań długotrwałych, a IronPDF zapewnia elastyczne i łatwe w użyciu rozwiązanie do generacji PDF. Aby dowiedzieć się więcej o IronPDF, możesz odwiedzić Dokumentację IronPDF.

Również, sprawdź inne narzędzia z Iron Software Product Suite, które mogą poprawić Twoje umiejętności kodowania i spełnić współczesne wymagania aplikacji.

Często Zadawane Pytania

Czym jest Hangfire w .NET Core?

Hangfire to framework, który upraszcza wdrażanie przetwarzania w tle w aplikacjach ASP.NET Core lub .NET Core 6. Zapewnia niezawodne i elastyczne rozwiązanie do zarządzania i wykonywania zadań w tle.

Jak zainstalować Hangfire w aplikacji .NET Core?

Hangfire można zainstalować jako pakiet NuGet. Można go dodać za pomocą interfejsu CLI .NET, używając polecenia: dotnet add package Hangfire --version 1.8.6.

Jakie rodzaje zadań w tle obsługuje Hangfire?

Hangfire obsługuje różne typy zadań w tle, w tym zadania typu „fire-and-forget”, zadania opóźnione, zadania cykliczne oraz zadania kontynuacyjne.

Jak skonfigurować Hangfire w aplikacji .NET Core?

Hangfire konfiguruje się w pliku Startup.cs, gdzie ustawia się magazyn zadań i inicjuje serwer Hangfire. Zazwyczaj wiąże się to z dodaniem usług Hangfire i skonfigurowaniem serwera SQL lub pamięci wewnętrznej.

Czym jest Hangfire Dashboard?

Hangfire Dashboard to narzędzie do monitorowania i zarządzania zadaniami w tle. Dostarcza informacji o przetwarzaniu na żywo, zadaniach zakończonych sukcesem i zadaniach zaplanowanych, a dostęp do niego można uzyskać za pośrednictwem interfejsu internetowego.

Jak utworzyć zadanie w tle za pomocą Hangfire?

Zadania w tle można tworzyć za pomocą Hangfire, definiując metody, które mają być uruchamiane jako zadania, a następnie umieszczając je w kolejce za pomocą interfejsu API Hangfire. Zadania można zaplanować tak, aby były uruchamiane natychmiast, po upływie określonego czasu lub cyklicznie.

Jak można generować pliki PDF w tle za pomocą .NET Core?

Zadania związane z generowaniem plików PDF można wykonywać w tle, korzystając z biblioteki PDF obsługującej konwersję HTML do PDF. Można ją zintegrować z frameworkiem do przetwarzania zadań w tle, takim jak Hangfire, w celu automatyzacji tworzenia plików PDF na podstawie treści HTML.

Jakie są możliwości biblioteki do generowania plików PDF w środowisku .NET?

Biblioteka do generowania plików PDF może konwertować ciągi znaków HTML, pliki HTML i adresy URL na pliki PDF. Zachowuje układy i style i jest przydatna do generowania raportów, faktur i dokumentacji na podstawie treści internetowych.

Jak zainstalować bibliotekę do generowania plików PDF w projekcie .NET?

Bibliotekę do generowania plików PDF można zainstalować za pomocą menedżera pakietów NuGet w Visual Studio lub poprzez konsolę menedżera pakietów za pomocą określonego polecenia. Można ją również zainstalować, pobierając plik DLL bezpośrednio ze strony internetowej biblioteki.

Co jest potrzebne do korzystania z biblioteki do generowania plików PDF bez znaków wodnych?

Aby korzystać z biblioteki do generowania plików PDF bez znaków wodnych, zazwyczaj wymagany jest klucz licencyjny. Bezpłatna licencja próbna może być dostępna po zarejestrowaniu się na stronie internetowej biblioteki.

Jak zintegrować narzędzie do generowania plików PDF z Hangfire w .NET Core?

Można zintegrować narzędzie do generowania plików PDF z Hangfire w .NET Core, konfigurując zadanie w tle, które wykorzystuje bibliotekę do generowania plików PDF w celu konwersji HTML na PDF. Umożliwia to automatyczne tworzenie dokumentów i zarządzanie nimi w aplikacjach.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie