الترحيل
الترقية إلى Doconut على .NET 8
هناك نوعان من الترحيل في هذه الصفحة: ترقية نسخة الحزمة داخل .NET 8، ونقل تكامل من إطار Doconut أقدم (.NET 6، .NET Standard 2.0، .NET Framework 4.7) إلى واجهة برمجة تطبيقات .NET 8.
ترقية نسخة الحزمة
- حدّث الحزمة (وأي حزم ملحقات — حافظ على توافق الإصدارات):
bash
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 |
|---|---|---|
| Setup | إنشاء Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + حقن Viewer |
| License | Viewer.DoconutLicense(path) ثابت + SetLicensePlugin(...) لكل ملحق | options.LicensePath / LicenseContent / LicenseStream — ترخيص واحد، اكتشاف تلقائي لملفات الملحقات |
| Open | viewer.OpenDocument(...) (متزامن) | await viewer.OpenDocumentAsync(...) |
| Close | viewer.CloseDocument() أو viewer.Dispose() | viewer.CloseDocument(token) — Viewer ليس IDisposable |
| Lifetime | Viewer ينفذ IDisposable، يحتفظ بالمستند المفتوح | Viewer عديم حالة؛ الجلسات تعيش في الذاكرة المؤقتة تحت الرموز |
| Converter | خاصية viewer.Converter | ملحق Converter (AddPlugin<ConverterPlugin>()) + خدمة DocumentConverter |
| Config classes | مساحات الأسماء Doconut.Configs.View.* | الكل في مساحة الاسم Doconut |
| Middleware | ربط المعالج يدويًا | app.UseDoconutResources() + app.UseDoconut() |
مثال نموذجي قبل/بعد:
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 (Web Forms)
Viewer في الإصدار 4.7 هو WebControl؛ .NET 8 يستبدل نموذج التحكم بوسيط + خدمة DI:
- اختفي التحكم
<doconut:DocViewer runat=server>— تستضيف الصفحة زوج عناصرdivللودجت وتعيد نقطة النهاية الخاصة بك الرمز (يظهر النمط في دليل البدء السريع). - طرق الترخيص الثابتة → مصادر ترخيص
DoconutOptions. OpenDocumentالمتزامن →await OpenDocumentAsync.Viewer.ReferenceScripts()/ReferenceCss()موجودة في كلا العالمين — إصدارات .NET 8 تأخذ كائناتScriptConfig/CssConfigوتخضع للترخيص.- خصائص التحكم (
ShowThumbs،PageZoom،FixedZoom، …) → نفس الأسماء فيViewerConfig/ خيارات JavaScriptdocViewer. - طرق التصدير التي تُعيد
byte[]→ واجهات برمجة تطبيقات التصدير غير المتزامنة علىViewer.
خطط لهذا كإعادة كتابة طبقة الاستضافة حول مفهوم غير متغير: فتح → رمز → ودجت.
ملاحظة حول التسمية
في جميع الأطر، الصنف هو Viewer — إذا وجدت DocumentViewer في مقتطفات قديمة أو مقالات طرف ثالث، فهذا النوع لم يكن موجودًا أبدًا في مجموعة تطوير البرمجيات (SDK).
قائمة التحقق للترحيل
- بدّل الحزم؛ حافظ على توافق إصدارات حزم الملحقات.
- انقل إعداد الترخيص إلى
AddDoconut()؛ احذف استدعاءات الترخيص الثابتة. - اجعل استدعاءات الفتح غير متزامنة؛ استبدل
Dispose/CloseDocumentبدون معلمات بـCloseDocument(token). - استبدل استخدامات
viewer.Converterبتسجيل ملحق Converter +DocumentConverter. - أعد اختبار مسار الأمان:
AddSession()/UseSession()الآن مطلوبان مع الأمان الافتراضي.
هل كانت هذه الصفحة مفيدة؟