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

  1. Paketi güncelleyin (ve herhangi bir eklenti paketini — sürümleri uyumlu 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 engellenirOpenDocumentAsync LicenseException (hızlı hata) fırlatır; 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 (bir sürüm düşürmenin neden olduğu tam hatalar için Sorun Giderme bölümüne bakın).

  3. 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
KurulumViewer(cache, httpContextAccessor, licensePath) oluşturunbuilder.Services.AddDoconut(options => …) + Viewer enjeksiyonu
LisansStatik Viewer.DoconutLicense(path) + eklenti başına SetLicensePlugin(...)options.LicensePath / LicenseContent / LicenseStream — tek lisans, eklenti dosyaları için otomatik keşif
viewer.OpenDocument(...) (eşzamanlı)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 token altında önbellekte yaşar
Dönüştürücüviewer.Converter özelliğiConverter eklentisi (AddPlugin<ConverterPlugin>()) + DocumentConverter hizmeti
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()

Eşleme:

text
// .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());
csharp
// .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 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ı.
  • Eşzamanlı OpenDocumentawait OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() her iki dünyada da bulunur — .NET 8 sürümleri ScriptConfig/CssConfig nesnelerini alır ve lisans kontrollüdür.
  • Kontrol özellikleri (ShowThumbs, PageZoom, FixedZoom, …) → aynı adlar ViewerConfig / docViewer JS 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

  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?