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

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

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

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

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

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

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

Θέμα.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 αντικαθιστά το μοντέλο ελέγχου με middleware + μια υπηρεσία DI:

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

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

Σημείωση ονομασίας

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

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

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

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