Μετάβαση
Αναβάθμιση σε 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()φορτώνει τη νέα άδεια. - Ανακατασκευάστε και αφήστε το NuGet να επαναφέρει τις δηλωμένες εκδόσεις εξαρτήσεων — μην ξανακλειδώσετε το
System.Text.Jsonή τοSystem.Drawing.Common(δείτε την Επίλυση προβλημάτων για τα ακριβή σφάλματα που προκαλεί μια υποβάθμιση). - Εκτελέστε δοκιμή καπνού (smoke-test) ενός εγγράφου ανά οικογένεια μορφής που χρησιμοποιείτε.
Μεταφορά από .NET 6 / .NET Standard 2.0
Το API του .NET 8 είναι μια επανασχεδίαση γύρω από DI και ασύγχρονη λειτουργία. Η αντιστοίχηση:
| Αντικείμενο | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| Ρύθμιση | Δημιουργία Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + ενσωμάτωση Viewer |
| Άδεια | Στατική Viewer.DoconutLicense(path) + SetLicensePlugin(...) ανά plugin | options.LicensePath / LicenseContent / LicenseStream — μία άδεια, αυτόματη ανίχνευση αρχείων plugin |
| Άνοιγμα | viewer.OpenDocument(...) (συγχρονικό) | await viewer.OpenDocumentAsync(...) |
| Κλείσιμο | viewer.CloseDocument() ή viewer.Dispose() | viewer.CloseDocument(token) — το Viewer δεν είναι IDisposable |
| Διάρκεια ζωής | Viewer υλοποιεί IDisposable, κρατά το ανοιχτό έγγραφο | Viewer είναι χωρίς κατάσταση (stateless); οι συνεδρίες ζουν στην κρυφή μνήμη (cache) υπό tokens |
| Μετατροπέας | ιδιότητα viewer.Converter | Το plugin Converter (AddPlugin<ConverterPlugin>()) + η υπηρεσία DocumentConverter |
| Κλάσεις διαμόρφωσης | ονομαστικούς χώρους Doconut.Configs.View.* | Όλα στο namespace Doconut |
| Μεσαίος λογισμικός | Χειροκίνητη σύνδεση χειριστών | app.UseDoconutResources() + app.UseDoconut() |
Ένα τυπικό πριν/μετά:
// .NET 6 (παλαιό API, εμφανίζεται για αντίθεση — δεν ισχύει στο .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 ενσωματωμένο, άδεια ρυθμισμένη μία φορά στο 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[]→ τα ασύγχρονα APIs εξαγωγής σχολίων στοViewer.
Σχεδιάστε αυτή τη μεταφορά ως επανασχεδίαση του επιπέδου φιλοξενίας γύρω από μια αμετάβλητη έννοια: άνοιγμα → token → widget.
Σημείωση ονομασίας
Σε όλα τα πλαίσια η κλάση είναι Viewer — εάν βρείτε DocumentViewer σε παλιά αποσπάσματα ή άρθρα τρίτων, αυτός ο τύπος δεν υπήρχε ποτέ στο SDK.
Λίστα ελέγχου μετάβασης
- Αντικαταστήστε τα πακέτα· ευθυγραμμίστε τις εκδόσεις των πακέτων plugin.
- Μεταφέρετε τη ρύθμιση της άδειας στο
AddDoconut()· διαγράψτε τις στατικές κλήσεις άδειας. - Κάντε τις κλήσεις ανοίγματος ασύγχρονες· αντικαταστήστε το
Dispose/τοCloseDocumentχωρίς παράμετρο μεCloseDocument(token). - Αντικαταστήστε τις χρήσεις του
viewer.Converterμε την καταχώρηση του plugin Converter +DocumentConverter. - Επαναλάβετε τη δοκιμή του ασφαλιστικού μονοπατιού: τα
AddSession()/UseSession()είναι τώρα απαιτούμενα με την προεπιλεγμένη ασφάλεια (συμπεριλαμβανομένου τουAddDistributedMemoryCache()σε εφαρμογή minimal-API).
Ήταν αυτή η σελίδα χρήσιμη;