الترحيل
الترقية إلى Doconut على .NET 8
هناك ترحيلان في هذه الصفحة: ترقية إصدار الحزمة داخل .NET 8، ونقل تكامل من إطار Doconut أقدم (.NET 6، .NET Standard 2.0، .NET Framework 4.7) إلى واجهة برمجة تطبيقات .NET 8.
ترقية إصدار الحزمة
- حدّث الحزمة (وأي حزم مكوّن إضافي — حافظ على توافق الإصدارات):
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom-
تحقق من نافذة الترخيص. يغطي الترخيص نطاقًا من الإصدارات. إذا كان الإصدار الجديد خارج هذا النطاق، فإن الفتح محظور —
OpenDocumentAsyncيرميLicenseException(فشل سريع)؛ لا يعود إلى علامة مائية، وIsVersionValidيحوّلfalse. جدد، استبدل.lic، وأعد تشغيل التطبيق حتىAddDoconut()يحمل الترخيص الجديد. -
أعد بناء المشروع ودع NuGet يستعيد إصدارات التبعيات المعلنة — لا تعيد تثبيت
System.Text.JsonأوSystem.Drawing.Common(انظر قسم استكشاف الأخطاء وإصلاحها للأخطاء الدقيقة التي يسببها التخفيض). -
قم باختبار سريع لمستند واحد لكل عائلة تنسيق تستخدمها.
الترحيل من .NET 6 / .NET Standard 2.0
واجهة برمجة تطبيقات .NET 8 هي إعادة تصميم حول الاعتماد على الحقن (DI) والبرمجة غير المتزامنة. الخريطة:
| الموضوع | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| الإعداد | إنشاء Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + حقن Viewer |
| الترخيص | ثابت Viewer.DoconutLicense(path) + SetLicensePlugin(...) لكل مكوّن إضافي | options.LicensePath / LicenseContent / LicenseStream — ترخيص واحد، اكتشاف تلقائي لملفات المكوّن الإضافي |
| الفتح | viewer.OpenDocument(...) (متزامن) | await viewer.OpenDocumentAsync(...) |
| الإغلاق | viewer.CloseDocument() أو viewer.Dispose() | viewer.CloseDocument(token) — Viewer ليس IDisposable |
| مدة الحياة | Viewer ينفّذ IDisposable، يحتفظ بالمستند المفتوح | Viewer ليس له حالة؛ الجلسات تعيش في الذاكرة المؤقتة تحت الرموز |
| المحوّل | خاصية viewer.Converter | ملحق المحوّل (AddPlugin<ConverterPlugin>()) + خدمة DocumentConverter |
| فئات التكوين | مساحات الأسماء Doconut.Configs.View.* | الكل في مساحة الأسماء Doconut |
| الوسطية | ربط يدوي للمعالج | app.UseDoconutResources() + app.UseDoconut() |
مثال نموذجي قبل/بعد:
// .NET 6 (واجهة برمجة تطبيقات قديمة، موضحة للمقارنة — غير صالحة على .NET 8)
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، تم تكوين الترخيص مرة واحدة في AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });الترحيل من .NET Framework 4.7 (نماذج الويب)
الـ Viewer في الإصدار 4.7 هو WebControl؛ .NET 8 يستبدل نموذج التحكم بالوسطية + خدمة DI:
- يتلاشى عنصر التحكم
<doconut:DocViewer runat=server>— تستضيف الصفحة زوج الودجتdivوتعيد نقطة النهاية الخاصة بك الرمز (يظهر Quick Start النمط). - طرق الترخيص الثابتة → مصادر الترخيص
DoconutOptions. OpenDocumentالمتزامن →await OpenDocumentAsync.Viewer.ReferenceScripts()/ReferenceCss()موجودان في كلا العالمين — إصدارات .NET 8 تأخذ كائناتScriptConfig/CssConfigوتكون مقيدة بالترخيص.- خصائص التحكم (
ShowThumbs،PageZoom،FixedZoom، …) → نفس الأسماء علىViewerConfig/ خيارات JS للـdocViewer. - طرق التصدير التي تُعيد
byte[]→ واجهات برمجة التطبيقات غير المتزامنة لتصدير التعليقات التوضيحية علىViewer.
خطط لهذا كإعادة كتابة لطبقة الاستضافة حول مفهوم غير متغيّر: الفتح → الرمز → الودجت.
ملاحظة حول التسمية
في جميع الأطر، الصنف هو Viewer — إذا وجدت DocumentViewer في مقاطع قديمة أو مقالات طرف ثالث، فإن ذلك النوع لم يكن موجودًا أبدًا في SDK.
قائمة التحقق من الترحيل
- بدّل الحزم؛ ووافق إصدارات حزم المكوّن الإضافي.
- انقل إعداد الترخيص إلى
AddDoconut()؛ احذف استدعاءات الترخيص الثابتة. - اجعل استدعاءات الفتح غير متزامنة؛ استبدل
Dispose/CloseDocumentبدون معاملات بـCloseDocument(token). - استبدل استخدامات
viewer.Converterبتسجيل ملحق المحوّل +DocumentConverter. - أعد اختبار مسار الأمان: الآن
AddSession()/UseSession()مطلوبان مع الأمان الافتراضي (بالإضافة إلىAddDistributedMemoryCache()في تطبيق minimal-API).
هل كانت هذه الصفحة مفيدة؟