.NET-HILFE

Hangfire .NET Core (Wie es für Entwickler funktioniert)

Veröffentlicht 14. Januar 2024
Teilen Sie:

Die moderne Anwendungsentwicklung erfordert häufig die Verarbeitung von Hintergrundaufgaben, um große Aufgaben zu bewältigen. In diesem Szenario benötigen wir Hintergrund-Job-Handler, um mehrere Aufgaben auszuführen. Es gibt viele Job-Handler, und ein solcher Hintergrund-Job-Handler für C# .NET Core-Anwendungen ist Hangfire. In diesem Blog werden wir etwas über den Hintergrundjob von Hangfire erfahren und wie man ihn mit anderen Paketen verwendet, wie zum BeispielIronPDFim Hintergrund PDF-Dokumente zu erstellen.

Einführung

Hangfirevereinfacht die Implementierung der Hintergrundverarbeitung in ASP.NET Core oder .NET Core 6 Web API-Anwendungen, indem es ein zuverlässiges und flexibles Framework zur Verwaltung und Ausführung von Hintergrundjobs bereitstellt. Hangfire ist verfügbar als einNuGetPaket und kann wie unten beschrieben mit .NET CLI installiert werden.

dotnet add package Hangfire --version 1.8.6

Implementierung in .NET Core Web API

Um mehr über Hangfire zu lernen, erstellen wir eine einfache .NET Core API-Anwendung und installieren Hangfire mithilfe der CLI.

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

Hier erstellen wir eine einfache Wetter-REST-API mit dem .NET CLI. Die erste Zeile erstellt ein Core-Web-API-Projekt mit dem Namen HangfireDemo.(kann auch ASP.NET Core erstellen)um API-Endpunkte auszuführen. Die zweite Zeile dient dazu, zu unserem neu erstellten Ordner "HangfireDemo" zu navigieren und dann das Projekt zu erstellen. Als Nächstes haben wir das Hangfire-NuGet-Paket zu unserem Projekt hinzugefügt und es erneut gebaut. Danach können Sie Ihr Projekt in einem beliebigen Editor Ihrer Wahl öffnen, Visual Studio 2022 oder JetBrains Rider. Wenn Sie nun das Projekt ausführen, können Sie das Swagger wie unten sehen.

Hangfire .NET Core(Wie es für Entwickler funktioniert): Abbildung 1 - Swagger

Hier sehen wir die Wetter-GET-APIs, die Datum, Zusammenfassung und Temperatur zurückgeben.

Hangfire .NET Core(Wie es für Entwickler funktioniert): Abbildung 2 - Wetter-GET-API

Fügen wir nun einen Hangfire-Hintergrund-Jobprozessor hinzu. Projekt in Visual Studio öffnen.

Hangfire-Jobprozessor hinzufügen

Konfigurieren Sie Hangfire in Ihrer Anwendung, typischerweise in der Datei Startup.cs. Dies umfasst die Einrichtung eines Job-Speichers und die Initialisierung des Hangfire-Servers.

// Startup.cs
using Hangfire;
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Hangfire services
        services.AddHangfire(config => config.UseSqlServerStorage("your_connection_string"));
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Configure Hangfire
        app.UseHangfireServer();
        app.UseHangfireDashboard();
        // Your other configuration settings
    }
}
// Startup.cs
using Hangfire;
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Hangfire services
        services.AddHangfire(config => config.UseSqlServerStorage("your_connection_string"));
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Configure Hangfire
        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
		services.AddHangfire(Function(config) config.UseSqlServerStorage("your_connection_string"))
	End Sub
	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IHostingEnvironment)
		' Configure Hangfire
		app.UseHangfireServer()
		app.UseHangfireDashboard()
		' Your other configuration settings
	End Sub
End Class
VB   C#

Die Methode ConfigureServices wird verwendet, um Speicher hinzuzufügen, damit die neu erstellten Jobs von Hangfire gespeichert werden können. Hier wird eine SQL Server-Datenbank verwendet. Der SQL Server-Verbindungszeichenfolge sollte durch "your_connection_string" ersetzt werden. Man kann auch den Speicher im Arbeitsspeicher mit Hangfire.InMemory verwenden.

dotnet add package Hangfire.InMemory --version 0.6.0

Und ersetzen mit

services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });
services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });
services.AddHangfire(Sub(configuration)
	configuration.UseInMemoryStorage()
End Sub)
VB   C#

Hintergrundjobs erstellen

Definieren Sie die Methoden, die Sie als Hintergrundaufgabe ausführen möchten. Diese Methoden sollten statische oder Instanzmethoden einer Klasse mit einem parameterlosen Konstruktor sein. Die Jobs können als wiederkehrende Jobs ausgeführt werden oder es können viele Jobs ausgeführt werden.

public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Your background job logic, recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}
public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Your background job logic, recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}
Public Class MyBackgroundJob
	Public Sub ProcessJob()
		' Your background job logic, recurring job or multiple jobs
		Console.WriteLine("Background job is running...")
	End Sub
End Class
VB   C#

Aufgaben in die Warteschlange stellen

Enqueue-Hintergrundaufgaben mithilfe der Hangfire-API. Sie können Hintergrundjobs so planen, dass sie zu einer bestimmten Zeit, nach einer Verzögerung oder regelmäßig ausgeführt werden.

// Enqueue a job to run immediately
BackgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());
// Schedule a job to run after 5 min delay, delayed job
BackgroundJob.Schedule<MyBackgroundJob>(x => x.ProcessJob(), TimeSpan.FromMinutes(5));
// Schedule a recurring job / recurring jobs using job Id
RecurringJob.AddOrUpdate<MyBackgroundJob>("job Id", x => x.ProcessJob(), Cron.Daily);
// Enqueue a job to run immediately
BackgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());
// Schedule a job to run after 5 min delay, delayed job
BackgroundJob.Schedule<MyBackgroundJob>(x => x.ProcessJob(), TimeSpan.FromMinutes(5));
// Schedule a recurring job / recurring jobs using job Id
RecurringJob.AddOrUpdate<MyBackgroundJob>("job Id", 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 5 min delay, delayed job
BackgroundJob.Schedule(Of MyBackgroundJob)(Function(x) x.ProcessJob(), TimeSpan.FromMinutes(5))
' Schedule a recurring job / recurring jobs using job Id
RecurringJob.AddOrUpdate(Of MyBackgroundJob)("job Id", Function(x) x.ProcessJob(), Cron.Daily)
VB   C#

Hangfire-Dashboard und -Server

Das Hangfire-Dashboard und der Server können in der Configure-Methode hinzugefügt werden.

// Run Hangfire server
app.UseHangfireServer();
app.UseHangfireDashboard();
// Run Hangfire server
app.UseHangfireServer();
app.UseHangfireDashboard();
' Run Hangfire server
app.UseHangfireServer()
app.UseHangfireDashboard()
VB   C#

Der Server kann auch in ConfigureServices hinzugefügt werden.

services.AddHangfireServer();
services.AddHangfireServer();
services.AddHangfireServer()
VB   C#

Fire-and-Forget-Aufgaben

//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!")); //jobId for Fire and forget job
//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!")); //jobId for Fire and forget job
'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!")) 'jobId for Fire and forget job
VB   C#

Wiederkehrende Jobs

//Recurring jobs fire many times on the specified CRON schedule.
RecurringJob.AddOrUpdate( "myrecurringjob",() => Console.WriteLine("Recurring!"),Cron.Daily);
//Recurring jobs fire many times on the specified CRON schedule.
RecurringJob.AddOrUpdate( "myrecurringjob",() => Console.WriteLine("Recurring!"),Cron.Daily);
'Recurring jobs fire many times on the specified CRON schedule.
RecurringJob.AddOrUpdate("myrecurringjob",Sub() Console.WriteLine("Recurring!"),Cron.Daily)
VB   C#

Verzögerte Jobs

//Delayed jobs are executed only once too, but not immediately, after a certain specific interval.
var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"),
    TimeSpan.FromDays(7));
//Delayed jobs are executed only once too, but not immediately, after a certain specific interval.
var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"),
    TimeSpan.FromDays(7));
'Delayed jobs are executed only once too, but not immediately, after a certain specific interval.
Dim jobId = BackgroundJob.Schedule(Sub() Console.WriteLine("Delayed!"), TimeSpan.FromDays(7))
VB   C#

Fortsetzungen

//Continuation jobs are executed when its parent job has been finished, immediate child job
BackgroundJob.ContinueJobWith(jobId,() => Console.WriteLine("Continuation!"));
//Continuation jobs are executed when its parent job has been finished, immediate child job
BackgroundJob.ContinueJobWith(jobId,() => Console.WriteLine("Continuation!"));
'Continuation jobs are executed when its parent job has been finished, immediate child job
BackgroundJob.ContinueJobWith(jobId,Sub() Console.WriteLine("Continuation!"))
VB   C#

Batch-Job

//Batch is a group of background jobs that is created atomically and considered as a single entity. Two jobs can be run as below.
var batchId = BatchJob.StartNew(x =>
{
    x.Enqueue(() => Console.WriteLine("Job 1"));
    x.Enqueue(() => Console.WriteLine("Job 2"));
});
//Batch is a group of background jobs that is created atomically and considered as a single entity. Two jobs can be run as below.
var batchId = BatchJob.StartNew(x =>
{
    x.Enqueue(() => Console.WriteLine("Job 1"));
    x.Enqueue(() => Console.WriteLine("Job 2"));
});
'Batch is a group of background jobs that is created atomically and considered as a single entity. Two jobs can be run as below.
Dim batchId = BatchJob.StartNew(Sub(x)
	x.Enqueue(Sub() Console.WriteLine("Job 1"))
	x.Enqueue(Sub() Console.WriteLine("Job 2"))
End Sub)
VB   C#

Sammelverarbeitungsfortsetzungsauftrag

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"));
});
Dim tempVar As Boolean = TypeOf continuation Is fired
Dim [when] As fired = If(tempVar, CType(continuation, fired), Nothing)
Batch tempVar all background jobs in a parent batch are finished.BatchJob.ContinueBatchWith(batchId, Sub(x)
	x.Enqueue(Sub() Console.WriteLine("Last Job"))
End Sub)
VB   C#

Dashboard

Das Hangfire-Dashboard ist der Ort, an dem Sie alle Informationen über Ihre Hintergrundjobs finden können. Es ist als OWIN-Middleware geschrieben.(wenn Sie mit OWIN nicht vertraut sind, keine Sorge), damit Sie es in Ihre ASP.NET-, ASP.NET MVC-, Nancy- und ServiceStack-Anwendung einbinden können, sowie denOWIN Self-HostFunktion zur Einbettung eines Dashboards in Konsolenanwendungen oder Windows-Dienste.

Wenn Sie das Dashboard in Ihrer Ansicht aktiviert haben, befindet sich das Dashboard unter der /hangfire/ Erweiterung. In diesem Dashboard kann man Hintergrundaufgaben verwalten, Hintergrundaufgaben planen, Fire-and-Forget-Jobs anzeigen und wiederkehrende Jobs verwalten. Die Aufgaben können mithilfe der Job-ID identifiziert werden.

Live-Verarbeitung

Hangfire .NET Core(Wie es für Entwickler funktioniert): Abbildung 3 - Live-Verarbeitung von Jobs

Erfolgreiche Aufträge

Die erfolgreichen Jobs können unten eingesehen werden.

Hangfire .NET Core(So funktioniert es für Entwickler): Abbildung 4 - Erfolgreiche Aufträge

Geplante Aufgaben

Hangfire .NET Core(Wie es für Entwickler funktioniert): Abbildung 5 - Geplante Aufgaben

Nun, wenn Ihre Anwendung läuft, wird sich Hangfire um die Verarbeitung der Hintergrundaufgaben basierend auf den konfigurierten Einstellungen kümmern.

Denken Sie daran, die Hangfire-Dokumentation für weitere fortgeschrittene Konfigurationsmöglichkeiten und Funktionen zu überprüfen: HangfireDokumentationund der vollständige Code ist zu finden aufGitHub.

Einführung in IronPDF

IronPDFist einNuGetPaket vonIron Softwaredas beim Lesen und Erstellen von PDF-Dokumenten hilft. Es kann einfach formatierte Dokumente mit Stilinformationen in PDF konvertieren. IronPDF kann problemlos PDFs aus HTML-Inhalten erstellen. Es kann das HTML von der URL herunterladen und dann PDFs erstellen.

Der Hauptanziehungspunkt von IronPDF ist seineHTML zu PDFFunktion, die Layouts und Stile beibehält. Es kann PDFs aus Webinhalten erstellen, ideal für Berichte, Rechnungen und Dokumentationen. Diese Funktion unterstützt die Umwandlung von HTML-Dateien, URLs und HTML-Strings in PDFs.

using IronPdf;

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

        // 1. 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");

        // 2. 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");

        // 3. 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();

        // 1. 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");

        // 2. 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");

        // 3. 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()

		' 1. 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")

		' 2. 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")

		' 3. 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
VB   C#

IronPDF-Bibliothek installieren

C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Install-Package IronPdf
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Install-Package IronPdf
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.

Erster Schritt:
green arrow pointer

Schau dir an IronPDF an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es PDF mit C#.

C# NuGet-Bibliothek für PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

Erwägen Sie die Installation der IronPDF DLL direkt. Laden Sie es herunter und installieren Sie es manuell für Ihr Projekt oder die GAC-Form: IronPdf.zip

Manuelle Installation in Ihr Projekt

DLL herunterladen

Mit NuGet-Paket-Manager installieren

Um IronPDF in Ihr Hangfire .NET-Projekt mit dem NuGet-Paketmanager zu integrieren, folgen Sie diesen Schritten:

  1. Öffnen Sie Visual Studio und klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf Ihr Projekt.

  2. Wählen Sie „NuGet-Pakete verwalten...“ aus dem Kontextmenü.

  3. Gehe zum "Durchsuchen"-Tab und suche nach IronPDF.

  4. Wählen Sie die IronPDF-Bibliothek aus den Suchergebnissen aus und klicken Sie auf die Installationsschaltfläche.

  5. Akzeptieren Sie jede Lizenzvereinbarungsaufforderung.

    Wenn Sie IronPDF in Ihr Projekt über die Paket-Manager-Konsole einbinden möchten, führen Sie den folgenden Befehl in der Paket-Manager-Konsole aus:

Install-Package IronPdf

Es lädt IronPDF herunter und installiert es in Ihr Projekt.

Installation über die NuGet-Website

Für einen detaillierten Überblick über IronPDF, einschließlich seiner Funktionen, Kompatibilität und zusätzlichen Download-Optionen, besuchen Sie die IronPDF-Seite auf der NuGet-Website unter https://www.nuget.org/packages/IronPdf.

Über DLL installieren

Alternativ können Sie IronPDF direkt in Ihr Projekt integrieren, indem Sie dessen DLL-Datei verwenden. Laden Sie die ZIP-Datei herunter, die die DLL enthält, von diesemLink. Entpacken Sie es und fügen Sie die DLL in Ihr Projekt ein.

Nun lass uns unsere Anwendung anpassen, um einen Hintergrundverarbeitungsjob hinzuzufügen, der eine Website aus einer HTTP-Anfrage-Pipeline als PDF-Datei herunterlädt.

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
VB   C#

IronPDF verfügt über eine eingebaute Methode, um eine Website von einer URL herunterzuladen und als PDF-Dokument zu speichern. Wir werden diese Methode in unserem Job verwenden, um es herunterzuladen und an einem temporären Ort zu speichern. Dieser Hintergrundauftrag kann so modifiziert werden, dass er mehrere Website-URLs annimmt und sie als PDFs speichert.

Fügen wir nun einen Controller hinzu, um die PDF-Generierungs- und Download-APIs bereitzustellen.

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
VB   C#

Hier haben wir zwei APIs erstellt, eine, um den Hintergrundjob zu starten, der die Website-URL aufnimmt und den Download initiiert. Eine weitere API ermöglicht das Herunterladen des PDF-Ergebnisses. Die APIs sehen wie unten gezeigt aus.

Hangfire .NET Core(Wie es für Entwickler funktioniert): Abbildung 7 - PDFGenerator-APIs

Das Ergebnis sieht wie folgt aus.

Hangfire .NET Core(Wie es für Entwickler funktioniert): Abbildung 8 - Ausgabe

Lizenzierung (Kostenlose Testversion verfügbar)

Damit der obige Code ohne Wasserzeichen funktioniert, ist ein Lizenzschlüssel erforderlich. Eine Testlizenz ist für Entwickler nach der Registrierung erhältlich.hierund ja, keine Kreditkarte ist für eine Testlizenz erforderlich. Man kann die E-Mail-ID angeben und sich für eine kostenlose Testversion registrieren.

Fazit

Hangfire und IronPDF zusammen sind eine großartige Kombination, um PDFs im Hintergrund zu erstellen und herunterzuladen. Wir können Hangfire in verschiedenen Programmierparadigmen verwenden, um lang andauernde Aufgaben zu verarbeiten. IronPDF bietet eine flexible und benutzerfreundliche Lösung zur Erstellung von PDFs. Um mehr über IronPDF zu erfahren, können Sie die Dokumente findenhier.

Außerdem können Sie andere Tools vonIron Softwaredie Ihnen helfen werden, Ihre Programmierfähigkeiten zu verbessern und moderne Anwendungsanforderungen zu erfüllen.

< PREVIOUS
C# Null-Koaleszenz (So funktioniert es für Entwickler)
NÄCHSTES >
C# Warteschlange (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >