Μετανάστευση

Αναβάθμιση σε Doconut στο .NET 8

Δύο μεταναστεύσεις εμφανίζονται σε αυτή τη σελίδα: αναβάθμιση της έκδοσης του πακέτου στο .NET 8, και μεταφορά μιας ενσωμάτωσης από ένα παλαιότερο πλαίσιο Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) στο API του .NET 8.

Αναβάθμιση της έκδοσης του πακέτου

  1. Ενημερώστε το πακέτο (και τυχόν πακέτα plugin — διατηρήστε τις εκδόσεις ευθυγραμμισμένες):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. Ελέγξτε το παράθυρο άδειας. Μια άδεια καλύπτει ένα εύρος εκδόσεων. Εάν η νέα έκδοση βρίσκεται εκτός αυτού, το άνοιγμα αποκλείεται — OpenDocumentAsync ρίχνει LicenseException (αποτυχία άμεσα); δεν επιστρέφει σε υδατογράφημα, και το IsVersionValid γίνεται false. Ανανεώστε, αντικαταστήστε το .lic, και επανεκκινήστε την εφαρμογή ώστε το AddDoconut() να φορτώνει τη νέα άδεια.
  2. Ξανακάντε build και αφήστε το NuGet να επαναφέρει τις δηλωμένες εκδόσεις εξαρτήσεων — μην ξανακαρφώσετε το System.Text.Json ή το System.Drawing.Common (δείτε την Επίλυση προβλημάτων για τα ακριβή σφάλματα που προκαλεί μια υποβάθμιση).
  3. Δοκιμάστε γρήγορα ένα έγγραφο ανά οικογένεια μορφής που χρησιμοποιείτε.

Μεταφορά από .NET 6 / .NET Standard 2.0

Το API του .NET 8 είναι μια επανασχεδίαση γύρω από DI και async. Η αντιστοίχηση:

Θέμα.NET 6 / Standard 2.0.NET 8
ΡύθμισηConstruct Viewer(cache, httpContextAccessor, licensePath)builder.Services.AddDoconut(options => …) + inject Viewer
ΆδειαStatic Viewer.DoconutLicense(path) + SetLicensePlugin(...) per pluginoptions.LicensePath / LicenseContent / LicenseStream — one license, auto-discovery for plugin files
Άνοιγμαviewer.OpenDocument(...) (synchronous)await viewer.OpenDocumentAsync(...)
Κλείσιμοviewer.CloseDocument() or viewer.Dispose()viewer.CloseDocument(token) — Viewer is not IDisposable
Διάρκεια ζωήςViewer implements IDisposable, holds the open documentViewer is stateless; sessions live in the cache under tokens
Μετατροπέαςviewer.Converter propertyThe Converter plugin (AddPlugin<ConverterPlugin>()) + the DocumentConverter service
Κλάσεις ρυθμίσεωνDoconut.Configs.View.* namespacesAll in the Doconut namespace
ΜεσολαβητήςManual handler wiringapp.UseDoconutResources() + app.UseDoconut()

Ένα τυπικό πριν/μετά:

text
// .NET 6 (old API, shown for contrast — not valid on .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());
csharp
// .NET 8 — Viewer injected, license configured once in AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });

Μεταφορά από .NET Framework 4.7 (Web Forms)

Το Viewer της 4.7 είναι ένα WebControl; το .NET 8 αντικαθιστά το μοντέλο ελέγχου με μεσολαβητή + μια υπηρεσία DI:

  • Ο έλεγχος <doconut:DocViewer runat=server> εξαφανίζεται — η σελίδα φιλοξενεί το ζεύγος widget div και το endpoint σας επιστρέφει το token (το Quick Start δείχνει το πρότυπο).
  • Μέθοδοι στατικής άδειας → πηγές άδειας DoconutOptions.
  • Συγχρονικό OpenDocument → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() υπάρχουν και στα δύο περιβάλλοντα — οι εκδόσεις .NET 8 δέχονται αντικείμενα ScriptConfig/CssConfig και ελέγχονται από την άδεια.
  • Ιδιότητες ελέγχου (ShowThumbs, PageZoom, FixedZoom, …) → τα ίδια ονόματα στο ViewerConfig / τις επιλογές JS docViewer.
  • Μέθοδοι εξαγωγής που επιστρέφουν byte[] → τα async APIs εξαγωγής σημειώσεων στο Viewer.

Σχεδιάστε αυτό ως επανασχεδίαση του επιπέδου φιλοξενίας γύρω από μια αμετάβλητη έννοια: άνοιγμα → token → widget.

Σημείωση ονοματολογίας

Σε όλα τα πλαίσια η κλάση είναι Viewer — αν βρείτε DocumentViewer σε παλιές αποσπάσεις κώδικα ή άρθρα τρίτων, αυτός ο τύπος δεν υπήρχε ποτέ στο SDK.

Λίστα ελέγχου μετανάστευσης

  1. Αντικαταστήστε τα πακέτα· ευθυγραμμίστε τις εκδόσεις των πακέτων plugin.
  2. Μεταφέρετε τη ρύθμιση άδειας στο AddDoconut()· διαγράψτε τις κλήσεις στατικής άδειας.
  3. Κάντε τις κλήσεις ανοίγματος async· αντικαταστήστε το Dispose/το CloseDocument χωρίς παραμέτρους με CloseDocument(token).
  4. Αντικαταστήστε τις χρήσεις του viewer.Converter με την εγγραφή του plugin Converter + DocumentConverter.
  5. Ξαναδοκιμάστε τη διαδρομή ασφαλείας: τα AddSession()/UseSession() είναι πλέον απαραίτητα με την προεπιλεγμένη ασφάλεια.

Ήταν αυτή η σελίδα χρήσιμη;