Geçiş
Doconut'u .NET 8'de Yükseltin
Bu sayfada iki geçiş bulunur: .NET 8 içinde paket sürümünü yükseltmek ve eski bir Doconut çerçevesinden (.NET 6, .NET Standard 2.0, .NET Framework 4.7) .NET 8 API'sine bir entegrasyonu taşımak.
Paket sürümünü yükseltme
- Paketi güncelleyin (ve herhangi bir eklenti paketini — sürümleri uyumlu tutun):
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom-
Lisans penceresini kontrol edin. Bir lisans bir sürüm aralığını kapsar. Yeni sürüm bu aralığın dışına çıkarsa, açma engellenir —
OpenDocumentAsyncLicenseException(hızlı hata) fırlatır; bir filigrana geri dönmez veIsVersionValidfalseolur. Lisansı yenileyin,.licdosyasını değiştirin ve uygulamayı yeniden başlatın, böyleceAddDoconut()yeni lisansı yükler. -
Yeniden derleyin ve NuGet'in bildirilen bağımlılık sürümlerini geri yüklemesine izin verin —
System.Text.JsonveyaSystem.Drawing.Commonpaketlerini yeniden sabitlemeyin (bir sürüm düşürmenin neden olduğu tam hatalar için Sorun Giderme bölümüne bakın). -
Kullandığınız her format ailesi için bir belgeyle duman testi yapın.
.NET 6 / .NET Standard 2.0'dan Geçiş
.NET 8 API, DI ve async etrafında yeniden tasarlanmıştır. Eşleme:
| Konu | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| Kurulum | Viewer(cache, httpContextAccessor, licensePath) oluşturun | builder.Services.AddDoconut(options => …) + Viewer enjeksiyonu |
| Lisans | Statik Viewer.DoconutLicense(path) + eklenti başına SetLicensePlugin(...) | options.LicensePath / LicenseContent / LicenseStream — tek lisans, eklenti dosyaları için otomatik keşif |
| Aç | viewer.OpenDocument(...) (eşzamanlı) | await viewer.OpenDocumentAsync(...) |
| Kapat | viewer.CloseDocument() veya viewer.Dispose() | viewer.CloseDocument(token) — Viewer IDisposable değildir |
| Ömür | Viewer IDisposable uygular, açık belgeyi tutar | Viewer durum içermez; oturumlar token altında önbellekte yaşar |
| Dönüştürücü | viewer.Converter özelliği | Converter eklentisi (AddPlugin<ConverterPlugin>()) + DocumentConverter hizmeti |
| Yapılandırma sınıfları | Doconut.Configs.View.* ad alanları | Hepsi Doconut ad alanında |
| Ara Katman | Manuel işleyici bağlama | app.UseDoconutResources() + app.UseDoconut() |
Eşleme:
// .NET 6 (eski API, karşılaştırma amaçlı — .NET 8'de geçerli değil)
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 enjeksiyonlu, lisans AddDoconut() içinde bir kez yapılandırılmıştır
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });.NET Framework 4.7'den Geçiş (Web Forms)
4.7 Viewer bir WebControl'dür; .NET 8 kontrol modelini ara katman + bir DI hizmetiyle değiştirir:
<doconut:DocViewer runat=server>kontrolü kaybolur — sayfa widgetdivçiftini barındırır ve uç noktanız token döndürür (Quick Start deseni gösterir).- Statik lisans yöntemleri →
DoconutOptionslisans kaynakları. - Eşzamanlı
OpenDocument→await OpenDocumentAsync. Viewer.ReferenceScripts()/ReferenceCss()her iki dünyada da bulunur — .NET 8 sürümleriScriptConfig/CssConfignesnelerini alır ve lisans kontrollüdür.- Kontrol özellikleri (
ShowThumbs,PageZoom,FixedZoom, …) → aynı adlarViewerConfig/docViewerJS seçeneklerinde. byte[]döndüren dışa aktarma yöntemleri →Viewerüzerindeki async açıklama dışa aktarma API'leri.
Bunu, değişmemiş bir kavram etrafında barındırma katmanının yeniden yazılması olarak planlayın: aç → token → widget.
İsimlendirme notu
Tüm çerçevelerde sınıf Viewer'dır — eski kod parçacıklarında veya üçüncü taraf makalelerde DocumentViewer bulursanız, bu tip SDK'da hiç bulunmamıştır.
Geçiş kontrol listesi
- Paketleri değiştirin; eklenti paket sürümlerini hizalayın.
- Lisans kurulumunu
AddDoconut()içine taşıyın; statik lisans çağrılarını silin. - Açma çağrılarını async yapın;
Dispose/parametresizCloseDocumentyerineCloseDocument(token)kullanın. viewer.Converterkullanımını Converter eklentisi kaydı +DocumentConverterile değiştirin.- Güvenlik yolunu yeniden test edin:
AddSession()/UseSession()artık varsayılan güvenlikle gereklidir.
Bu sayfa yardımcı oldu mu?