Migration
Mise à niveau vers Doconut sur .NET 8
Deux migrations sont présentées sur cette page : mise à jour de la version du package sous .NET 8, et déplacement d’une intégration depuis un ancien framework Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) vers l’API .NET 8.
Mise à jour de la version du package
- Mettez à jour le package (et tous les packages d’extension — maintenez les versions alignées) :
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom-
Vérifiez la fenêtre de licence. Une licence couvre une plage de versions. Si la nouvelle version se situe en dehors de cette plage, l’ouverture est bloquée —
OpenDocumentAsynclèveLicenseException(échec immédiat) ; il n’y a pas de retour à un filigrane, etIsVersionValiddevientfalse. Renouvelez, remplacez le fichier.lic, puis redémarrez l’application afin queAddDoconut()charge la nouvelle licence. -
Recompilez et laissez NuGet restaurer les versions de dépendances déclarées — ne réépinglez pas
System.Text.JsonouSystem.Drawing.Common(voir la section Dépannage pour les erreurs exactes provoquées par une rétrogradation). -
Effectuez un test de fumée sur un document de chaque famille de formats que vous utilisez.
Migration depuis .NET 6 / .NET Standard 2.0
L’API .NET 8 est une refonte autour de l’injection de dépendances (DI) et du modèle asynchrone. Le tableau de correspondance :
| Aspect | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| Configuration | Construct Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + inject Viewer |
| Licence | Static Viewer.DoconutLicense(path) + SetLicensePlugin(...) per plugin | options.LicensePath / LicenseContent / LicenseStream — une licence, découverte automatique des fichiers d’extension |
| Ouverture | viewer.OpenDocument(...) (synchronisé) | await viewer.OpenDocumentAsync(...) |
| Fermeture | viewer.CloseDocument() ou viewer.Dispose() | viewer.CloseDocument(token) — Viewer n’est pas IDisposable |
| Durée de vie | Viewer implémente IDisposable, conserve le document ouvert | Viewer est sans état ; les sessions vivent dans le cache sous forme de tokens |
| Convertisseur | viewer.Converter property | Le plugin Convertisseur (AddPlugin<ConverterPlugin>()) + le service DocumentConverter |
| Classes de configuration | Doconut.Configs.View.* namespaces | Tout se trouve dans l’espace de noms Doconut |
| Middleware | Câblage manuel du gestionnaire | app.UseDoconutResources() + app.UseDoconut() |
Un exemple typique avant/après :
// .NET 6 (ancienne API, affichée à titre de contraste — non valide sur .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());// .NET 8 — Viewer injecté, licence configurée une seule fois dans AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });Migration depuis .NET Framework 4.7 (Web Forms)
Le Viewer 4.7 est un WebControl ; .NET 8 remplace le modèle de contrôle par un middleware + un service DI :
- Le contrôle
<doconut:DocViewer runat=server>disparaît — la page héberge la paire d’élémentsdivdu widget et votre point de terminaison renvoie le token (le Quick Start montre le schéma). - Les méthodes de licence statiques → les sources de licence
DoconutOptions. OpenDocumentsynchrone →await OpenDocumentAsync.Viewer.ReferenceScripts()/ReferenceCss()existent dans les deux mondes — les versions .NET 8 acceptent des objetsScriptConfig/CssConfiget sont soumises à la licence.- Propriétés du contrôle (
ShowThumbs,PageZoom,FixedZoom, …) → les mêmes noms surViewerConfig/ les options JSdocViewer. - Méthodes d’exportation retournant
byte[]→ les API d’exportation d’annotations asynchrones surViewer.
Planifiez cette migration comme une réécriture de la couche d’hébergement autour d’un concept inchangé : ouvrir → token → widget.
Note sur la nomenclature
Dans tous les frameworks, la classe est Viewer — si vous trouvez DocumentViewer dans d’anciens extraits ou des articles tiers, ce type n’a jamais existé dans le SDK.
Checklist de migration
- Remplacez les packages ; alignez les versions des packages d’extension.
- Déplacez la configuration de licence dans
AddDoconut(); supprimez les appels de licence statiques. - Rendre les appels d’ouverture asynchrones ; remplacez
Dispose/CloseDocumentsans paramètre parCloseDocument(token). - Remplacez les utilisations de
viewer.Converterpar l’enregistrement du plugin Convertisseur +DocumentConverter. - Re‑testez le chemin de sécurité :
AddSession()/UseSession()sont désormais obligatoires avec la sécurité par défaut (plusAddDistributedMemoryCache()dans une application minimal‑API).
Cette page était-elle utile ?