Geçiş
Doconut'ı .NET 8'de Yükseltin
Bu sayfada iki geçiş bulunur: paket sürümünü yükseltmek .NET 8 içinde ve daha eski bir Doconut çerçevesinden bir entegrasyonu taşımak (.NET 6, .NET Standard 2.0, .NET Framework 4.7) .NET 8 API'ye.
Paket sürümünü yükseltmek
- 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 —
OpenDocumentAsyncLicenseExceptionfırlatır (hızlı hata); 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 (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 temel test (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 | Viewer(cache, httpContextAccessor, licensePath) oluşturun | builder.Services.AddDoconut(options => …) + Viewer'ı enjekte edin |
| 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(...) (senkron) | 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 tokenlar altında önbellekte yaşar |
| Dönüştürücü | viewer.Converter özelliği | Converter 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 (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());csharp
// .NET 8 — Viewer injected, license configured once in AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });.NET Framework 4.7'den Geçiş (Web Forms)
.NET 8, kontrol modelini ara katman + DI servisi ile değiştirir; 4.7 Viewer bir WebControl'dür:
<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 bulunur — .NET 8 sürümleriScriptConfig/CssConfignesnelerini alır ve lisansla kısıtlanır.- Kontrol özellikleri (
ShowThumbs,PageZoom,FixedZoom, …) →ViewerConfig/docViewerJS seçeneklerinde aynı adlar. 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?