Dokumentkonvertierung in ASP.NET Core mit Dependency Injection
Ein Aufruf, AddDocToolkit(), registriert DocToolkit in der Dependency Injection von ASP.NET Core. Diese Anleitung behandelt die Installation, die Einstellungen, Hintergrunddienste und Tests.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDocToolkit();
var app = builder.Build();Installieren und registrieren
- Das Extensions-Paket bringt das Kernpaket mit, Sie müssen also nicht beide referenzieren.
- Ein Aufruf registriert alle 21 Interfaces, die das Paket mitbringt, jedes ein dünner Wrapper um die passende statische Klasse.
- Ein Interface unterscheidet sich von seiner statischen Klasse nur durch das führende
I:IPdfEditorumschließtPdfEditor. - Alle sind Singletons, was sicher ist, weil keines davon einen Zustand hält.
- Sie werden mit
TryAddregistriert, daher gewinnt Ihre eigene Implementierung, wenn sie zuerst registriert wird.
Einmal festlegen
DocToolkitOptionsenthält anwendungsweite Einstellungen, sodass sie nicht an jeder Aufrufstelle wiederholt werden.AllowRemoteImageDownloadist der Hauptschalter für Remote-Bilder. Er istfalse, außer Sie setzen ihn.Pagelegt das Papier einmal fest. Der Standard istPageSetup.A4.- Ein Aufruf, der eine Seite angibt, hat trotzdem Vorrang vor der konfigurierten.
- Optionen werden bei jedem Aufruf gelesen, nicht einmal beim Start. Eine Änderung in
appsettings.jsonmitreloadOnChangewirkt bei der nächsten Konvertierung, ohne Neustart.
Hintergrunddienste und Tests
- Ein
BackgroundServicekann diese Dienste direkt im Konstruktor entgegennehmen, weil sie zustandslose Singletons sind. - Sie in einen Scope zu packen, würde ein Lebensdauerproblem andeuten, das es nicht gibt.
- Ersetzen Sie in einem Test das Interface, zum Beispiel
IHtmlToPdfConverter, damit der Test keine Zeit mit dem Rendern eines echten PDFs verbringt. - Tests zur Konvertierung selbst sollten die echte Implementierung aufrufen. Sie braucht weder Fixtures noch Netzwerk.
Was es nicht kann
- Das Extensions-Paket fügt keine Funktion hinzu. Alles, was es bereitstellt, ist statisch verfügbar; es existiert für Austauschbarkeit und Konfiguration.
- Für eine Konsolen-App, ein Skript oder eine Bibliothek verwenden Sie
Ank.DocToolkitund rufen die statischen Klassen auf.
Installation
dotnet add package Ank.DocToolkit.Extensions.DependencyInjectionIn der DocToolkit-Dokumentation lesenNuGetGitHub