Μετανάστευση
Αναβάθμιση σε Doconut στο .NET 8
Δύο μεταναστεύσεις εμφανίζονται σε αυτή τη σελίδα: αναβάθμιση της έκδοσης του πακέτου στο .NET 8, και μεταφορά μιας ενσωμάτωσης από ένα παλαιότερο πλαίσιο Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) στο API του .NET 8.
Αναβάθμιση της έκδοσης του πακέτου
- Ενημερώστε το πακέτο (και τυχόν πακέτα plugin — διατηρήστε τις εκδόσεις ευθυγραμμισμένες):
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom- Ελέγξτε το παράθυρο άδειας. Μια άδεια καλύπτει ένα εύρος εκδόσεων. Εάν η νέα έκδοση βρίσκεται εκτός αυτού, το άνοιγμα αποκλείεται —
OpenDocumentAsyncρίχνειLicenseException(αποτυχία άμεσα); δεν επιστρέφει σε υδατογράφημα, και τοIsVersionValidγίνεταιfalse. Ανανεώστε, αντικαταστήστε το.lic, και επανεκκινήστε την εφαρμογή ώστε τοAddDoconut()να φορτώνει τη νέα άδεια. - Ξανακάντε build και αφήστε το NuGet να επαναφέρει τις δηλωμένες εκδόσεις εξαρτήσεων — μην ξανακαρφώσετε το
System.Text.Jsonή τοSystem.Drawing.Common(δείτε την Επίλυση προβλημάτων για τα ακριβή σφάλματα που προκαλεί μια υποβάθμιση). - Δοκιμάστε γρήγορα ένα έγγραφο ανά οικογένεια μορφής που χρησιμοποιείτε.
Μεταφορά από .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 plugin | options.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 document | Viewer is stateless; sessions live in the cache under tokens |
| Μετατροπέας | viewer.Converter property | The Converter plugin (AddPlugin<ConverterPlugin>()) + the DocumentConverter service |
| Κλάσεις ρυθμίσεων | Doconut.Configs.View.* namespaces | All in the Doconut namespace |
| Μεσολαβητής | Manual handler wiring | app.UseDoconutResources() + app.UseDoconut() |
Ένα τυπικό πριν/μετά:
// .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());// .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>εξαφανίζεται — η σελίδα φιλοξενεί το ζεύγος widgetdivκαι το endpoint σας επιστρέφει το token (το Quick Start δείχνει το πρότυπο). - Μέθοδοι στατικής άδειας → πηγές άδειας
DoconutOptions. - Συγχρονικό
OpenDocument→await OpenDocumentAsync. Viewer.ReferenceScripts()/ReferenceCss()υπάρχουν και στα δύο περιβάλλοντα — οι εκδόσεις .NET 8 δέχονται αντικείμεναScriptConfig/CssConfigκαι ελέγχονται από την άδεια.- Ιδιότητες ελέγχου (
ShowThumbs,PageZoom,FixedZoom, …) → τα ίδια ονόματα στοViewerConfig/ τις επιλογές JSdocViewer. - Μέθοδοι εξαγωγής που επιστρέφουν
byte[]→ τα async APIs εξαγωγής σημειώσεων στοViewer.
Σχεδιάστε αυτό ως επανασχεδίαση του επιπέδου φιλοξενίας γύρω από μια αμετάβλητη έννοια: άνοιγμα → token → widget.
Σημείωση ονοματολογίας
Σε όλα τα πλαίσια η κλάση είναι Viewer — αν βρείτε DocumentViewer σε παλιές αποσπάσεις κώδικα ή άρθρα τρίτων, αυτός ο τύπος δεν υπήρχε ποτέ στο SDK.
Λίστα ελέγχου μετανάστευσης
- Αντικαταστήστε τα πακέτα· ευθυγραμμίστε τις εκδόσεις των πακέτων plugin.
- Μεταφέρετε τη ρύθμιση άδειας στο
AddDoconut()· διαγράψτε τις κλήσεις στατικής άδειας. - Κάντε τις κλήσεις ανοίγματος async· αντικαταστήστε το
Dispose/τοCloseDocumentχωρίς παραμέτρους μεCloseDocument(token). - Αντικαταστήστε τις χρήσεις του
viewer.Converterμε την εγγραφή του plugin Converter +DocumentConverter. - Ξαναδοκιμάστε τη διαδρομή ασφαλείας: τα
AddSession()/UseSession()είναι πλέον απαραίτητα με την προεπιλεγμένη ασφάλεια.
Ήταν αυτή η σελίδα χρήσιμη;