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

  1. Paketi güncelleyin (ve varsa eklenti paketlerini — sürümleri hizalı tutun):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. 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 — OpenDocumentAsync LicenseException fırlatır (hızlı hata); bir filigrana geri dönmez ve IsVersionValid false olur. Lisansı yenileyin, .lic dosyasını değiştirin ve uygulamayı yeniden başlatın, böylece AddDoconut() yeni lisansı yükler.
  2. Yeniden derleyin ve NuGet'in bildirilen bağımlılık sürümlerini geri yüklemesine izin verin — System.Text.Json veya System.Drawing.Common paketlerini yeniden sabitlemeyin (düşürmenin neden olduğu kesin hatalar için Sorun Giderme bölümüne bakın).
  3. 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
KurulumViewer(cache, httpContextAccessor, licensePath) oluşturunbuilder.Services.AddDoconut(options => …) + Viewer'ı enjekte edin
LisansStatik 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(...)
Kapatviewer.CloseDocument() veya viewer.Dispose()viewer.CloseDocument(token) — Viewer IDisposable değildir
ÖmürViewer, IDisposable uygular, açık belgeyi tutarViewer durum içermez; oturumlar tokenlar altında önbellekte yaşar
Dönüştürücüviewer.Converter özelliğiConverter eklentisi (AddPlugin<ConverterPlugin>()) + DocumentConverter servisi
Yapılandırma sınıflarıDoconut.Configs.View.* ad alanlarıHepsi Doconut ad alanında
Ara KatmanManuel işleyici bağlamaapp.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 widget div çiftini barındırır ve uç noktanız token döndürür (Quick Start deseni gösterir).
  • Statik lisans yöntemleri → DoconutOptions lisans kaynakları.
  • Senkron OpenDocument → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() her iki dünyada da bulunur — .NET 8 sürümleri ScriptConfig/CssConfig nesnelerini alır ve lisansla kısıtlanır.
  • Kontrol özellikleri (ShowThumbs, PageZoom, FixedZoom, …) → ViewerConfig / docViewer JS 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

  1. Paketleri değiştirin; eklenti paket sürümlerini hizalayın.
  2. Lisans kurulumunu AddDoconut() içine taşıyın; statik lisans çağrılarını silin.
  3. Açma çağrılarını async yapın; Dispose/parametresiz CloseDocument yerine CloseDocument(token) kullanın.
  4. viewer.Converter kullanımını Converter eklentisi kaydı + DocumentConverter ile değiştirin.
  5. Güvenlik yolunu yeniden test edin: AddSession()/UseSession() artık varsayılan güvenlikle gereklidir.

Bu sayfa yardımcı oldu mu?