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 I initial : IPdfEditor enveloppe PdfEditor.
  • 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

  • DocToolkitOptions contient les réglages valables pour toute l'application, pour qu'ils ne soient pas répétés à chaque point d'appel.
  • AllowRemoteImageDownload est l'interrupteur général des images distantes. Il vaut false, sauf si vous le définissez.
  • Page définit le papier une seule fois. La valeur par défaut est PageSetup.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.json avec reloadOnChange prend effet à la conversion suivante, sans redémarrage.

Services d'arrière-plan et tests

  • Un BackgroundService peut 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.DocToolkit et appelez les classes statiques.