Μετανάστευση
Αναβάθμιση σε Doconut στο .NET 8
Δύο μεταναστεύσεις εμφανίζονται σε αυτή τη σελίδα: αναβάθμιση της έκδοσης του πακέτου στο .NET 8, και μεταφορά μιας ενσωμάτωσης από ένα παλαιότερο πλαίσιο Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) στο .NET 8 API.
Αναβάθμιση της έκδοσης του πακέτου
- Ενημερώστε το πακέτο (και τυχόν πακέτα πρόσθετων — διατηρήστε τις εκδόσεις ευθυγραμμισμένες):
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom- Ελέγξτε το παράθυρο άδειας. Μια άδεια καλύπτει ένα εύρος εκδόσεων. Εάν η νέα έκδοση βρίσκεται εκτός αυτού, το άνοιγμα αποκλείεται —
OpenDocumentAsyncρίχνειLicenseException(fail‑fast); δεν επιστρέφει σε υδατογράφημα, και τοIsVersionValidγίνεταιfalse. Ανανεώστε, αντικαταστήστε το.lic, και επανεκκινήστε την εφαρμογή ώστε τοAddDoconut()να φορτώσει τη νέα άδεια. - Ξανακτίστε και αφήστε το NuGet να επαναφέρει τις δηλωμένες εκδόσεις εξαρτήσεων — μην ξανακαρφώσετε το
System.Text.Jsonή τοSystem.Drawing.Common(δείτε την Επίλυση προβλημάτων για τα ακριβή σφάλματα που προκαλεί μια υποβάθμιση). - Δοκιμάστε γρήγορα ένα έγγραφο ανά οικογένεια μορφής που χρησιμοποιείτε.
Μεταφορά από .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 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 αντικαθιστά το μοντέλο ελέγχου με middleware + μια υπηρεσία 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[]→ τα ασύγχρονα APIs εξαγωγής σημειώσεων στοViewer.
Σχεδιάστε αυτό ως επανασχεδίαση του επιπέδου φιλοξενίας γύρω από μια αμετάβλητη έννοια: άνοιγμα → token → widget.
Σημείωση ονομασίας
Σε όλα τα πλαίσια η κλάση είναι Viewer — αν βρείτε DocumentViewer σε παλιές αποσπάσματα ή άρθρα τρίτων, αυτός ο τύπος δεν υπήρχε ποτέ στο SDK.
Λίστα ελέγχου μετανάστευσης
- Αντικαταστήστε τα πακέτα· ευθυγραμμίστε τις εκδόσεις των πακέτων πρόσθετων.
- Μετακινήστε τη ρύθμιση άδειας στο
AddDoconut()· διαγράψτε τις στατικές κλήσεις άδειας. - Κάντε τις κλήσεις ανοίγματος ασύγχρονες· αντικαταστήστε το
Dispose/τοCloseDocumentχωρίς παραμέτρους μεCloseDocument(token). - Αντικαταστήστε τις χρήσεις του
viewer.Converterμε την εγγραφή του plugin Converter +DocumentConverter. - Ξαναδοκιμάστε τη διαδρομή ασφαλείας: τα
AddSession()/UseSession()είναι πλέον απαραίτητα με την προεπιλεγμένη ασφάλεια.
Ήταν αυτή η σελίδα χρήσιμη;