Geçiş
Doconut'u .NET 8'de Yükseltme
Bu sayfada iki geçiş bulunur: paket sürümünü yükseltme .NET 8 içinde ve eski bir Doconut çerçevesinden bir entegrasyonu taşıma (.NET 6, .NET Standard 2.0, .NET Framework 4.7) .NET 8 API'sine.
Paket sürümünü yükseltme
- Paketi güncelleyin (ve varsa eklenti paketlerini — sürümleri hizalı tutun):
bash
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 —
OpenDocumentAsyncfırlatırLicenseException(fail-fast); bir filigrana geri dönmez veIsVersionValiddönüştürürfalse. Lisansı yenileyin,.licdeğ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.Commonyeniden sabitlemeyin (bir düşürmenin neden olduğu kesin hatalar için Sorun Giderme bölümüne bakın). - Kullandığınız her format ailesi için bir belgeyle smoke-test 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 | Oluştur Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + inject Viewer |
| Lisans | Statik Viewer.DoconutLicense(path) + SetLicensePlugin(...) her eklenti için | options.LicensePath / LicenseContent / LicenseStream — bir lisans, eklenti dosyaları için otomatik keşif |
| Aç | viewer.OpenDocument(...) (senkron) | await viewer.OpenDocumentAsync(...) |
| Kapat | viewer.CloseDocument() veya viewer.Dispose() | viewer.CloseDocument(token) — Viewer değil IDisposable |
| Ömür | Viewer implements IDisposable, açık belgeyi tutar | Viewer durumsuz; oturumlar tokenlar altında önbellekte yaşar |
| Dönüştürücü | viewer.Converter özelliği | Dönüştürücü eklentisi (AddPlugin<ConverterPlugin>()) + DocumentConverter servisi |
| 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() |
Tipik bir önce/sonra:
text
// .NET 6 (eski API, karşılaştırma için gösterildi — .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());csharp
// .NET 8 — Viewer enjekte edildi, lisans AddDoconut() içinde bir kez yapılandırıldı
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });.NET Framework 4.7'den Geçiş (Web Forms)
4.7 Viewer bir WebControl; .NET 8 kontrol modelini ara katman + bir DI servisi ile 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ı. - Senkron
OpenDocument→await OpenDocumentAsync. Viewer.ReferenceScripts()/ReferenceCss()her iki dünyada da mevcut — .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 aktarım yöntemleri →Viewerüzerindeki async açıklama-dışa aktarım API'leri.
Bunu, değişmeyen bir kavram etrafında barındırma katmanının yeniden yazımı olarak planlayın: aç → token → widget.
İsimlendirme notu
Tüm çerçevelerde sınıf Viewer'dir — 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ımlarını Dönüştürücü eklenti kaydı +DocumentConverterile değiştirin.- Güvenlik yolunu yeniden test edin:
AddSession()/UseSession()artık varsayılan güvenlikle gereklidir (minimal-API uygulamasındaAddDistributedMemoryCache()ek olarak).
Bu sayfa yardımcı oldu mu?