Conversion de documents ASP.NET Core avec injection de dépendances
Un seul appel, AddDocToolkit(), enregistre DocToolkit dans l'injection de dépendances d'ASP.NET Core. Ce guide couvre l'installation, les réglages, les services d'arrière-plan et les tests.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDocToolkit();
var app = builder.Build();Installer et enregistrer
- Le paquet d'extensions apporte le paquet principal avec lui, vous n'avez donc pas besoin de référencer les deux.
- Un seul appel enregistre les 21 interfaces que fournit le paquet, chacune étant une fine enveloppe autour de la classe statique correspondante.
- Une interface ne diffère de sa classe statique que par le
Iinitial :IPdfEditorenveloppePdfEditor. - Toutes sont des singletons, ce qui est sûr, car aucune ne conserve d'état.
- Elles sont enregistrées avec
TryAdd, donc votre propre implémentation, enregistrée en premier, l'emporte.
Le régler une seule fois
DocToolkitOptionscontient les réglages valables pour toute l'application, pour qu'ils ne soient pas répétés à chaque point d'appel.AllowRemoteImageDownloadest l'interrupteur général des images distantes. Il vautfalse, sauf si vous le définissez.Pagedéfinit le papier une seule fois. La valeur par défaut estPageSetup.A4.- Un appel qui précise une page l'emporte quand même sur celle configurée.
- Les options sont lues à chaque appel, pas une seule fois au démarrage. Une modification dans
appsettings.jsonavecreloadOnChangeprend effet à la conversion suivante, sans redémarrage.
Services d'arrière-plan et tests
- Un
BackgroundServicepeut recevoir ces services directement dans son constructeur, car ce sont des singletons sans état. - Les envelopper dans un scope laisserait croire à un problème de durée de vie qui n'existe pas.
- Dans un test, substituez l'interface, par exemple
IHtmlToPdfConverter, pour que le test ne perde pas de temps à générer un vrai PDF. - Les tests qui portent sur la conversion elle-même doivent appeler la vraie implémentation. Elle n'a besoin ni de fixtures ni de réseau.
Ce qu'il ne fait pas
- Le paquet d'extensions n'ajoute aucune fonctionnalité. Tout ce qu'il expose est disponible en statique ; il existe pour la substituabilité et la configuration.
- Pour une application console, un script ou une bibliothèque, utilisez
Ank.DocToolkitet appelez les classes statiques.
Installation
dotnet add package Ank.DocToolkit.Extensions.DependencyInjectionLe lire dans la documentation de DocToolkitNuGetGitHub