يبدأ العديد من المطورين بالبحث عن مكتبات مكوّنات واجهة المستخدم عندما يحتاجون إلى عرض المستندات في تطبيق ويب. يُعد Doconut Viewer مجموعة تطوير برمجيات (.NET SDK) لإضافة عرض في المتصفح بدون إضافات إلى مشاريع ASP.NET Core أو MVC أو WebForms الكلاسيكية. لا يزال الأمان يعتمد على بنية التطبيق الكاملة: المصادقة، التفويض، النقل، التخزين، التحقق، التنظيف، التصحيح، والمراقبة.

1. تثبيت مجموعة تطوير Doconut App وإعداد مشروع .NET الخاص بك لتعدد صيغ الملفات
1.1 إضافة الحزمة المدعومة
استخدم الحزمة الحالية وتعليمات الإعداد من صفحة تحميل Doconut الرسمية. سجّل الإصدار المختار وتأكد من أنه يدعم بيئة تشغيل .NET المستهدفة.
1.2 التحقق من مرجع الحزمة
بعد التثبيت، أكد مرجع الحزمة والإصدار المحلول في ملف المشروع. الحفاظ على إصدارات صريحة يساعد في جعل عمليات البناء والنشر قابلة للتكرار.
1.3 تمكين HTTPS
قدّم التطبيق عبر HTTPS حتى لا تنتقل المستندات التي تم تحميلها بنص واضح على شبكتك. لتطبيق مستضاف على Kestrel، أضف تكوين نقطة النهاية في appsettings.json:
{
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "
}
}
}
}
إذا استضافت على IIS، اربط شهادة HTTPS بالموقع. مع تمكين HTTPS، ينتقل الملف عبر قناة آمنة إلى خادمك الخاص، حيث يقوم SDK بعرضه.
من أين يأتي الأمان. يعمل SDK داخل تطبيقك، على بنيتك التحتية: لا يقوم بأي استدعاءات إلى خوادم Doconut، لذا لا تغادر المستندات شبكتك أبدًا. هذه هي الخاصية التي تستحق التصميم حولها. إنه ليس شهادة امتثال — لا يأتي SDK مع شهادة ISO 27001 أو SOC 2 أو HIPAA، ولا يمكنه منح واحدة لتطبيقك. ما يفعله هو إبقاء الملف داخل حدود تتحكم فيها وتدقق فيها بالفعل.
2. تكوين تحميلات ملفات آمنة وتخزين لإدارة المستندات
هذا هو الجزء الذي يخصك وليس SDK، ومن الجدير قول ذلك بصراحة: أمان النقل، التشفير أثناء التخزين، الاحتفاظ والتنظيف هي قرارات يتخذها تطبيقك. يقوم SDK بعرض المستندات؛ فهو ليس طبقة تخزين ولا يقوم بتشفير القرص لك.
2.1 تسجيل الخدمات
في Startup.cs (أو Program.cs في .NET الحديث)، سجّل خدمات Doconut في حاوية حقن الاعتمادية وفقًا للوثائق الخاصة بالإصدار الذي قمت بتثبيته. عندما يحتاج SDK إلى مجلد عمل لإخراج العرض المؤقت، وجهه إلى موقع تتحكم فيه، واجعل تنظيف ذلك المجلد مسؤوليتك — وظيفة مجدولة أو عمر يُدار بواسطة التطبيق، وليس افتراضًا.
2.2 إنشاء نقطة نهاية التحميل
نفّذ إجراءً في المتحكم يستقبل ملفًا مرفوعًا، يكتبه إلى أي مخزن يستخدمه تطبيقك بالفعل، ويعيد رمزًا قصيرًا لمرة واحدة. يستخدم عارض الجانب العميل هذا الرمز لجلب وعرض المستند. لاحظ أن التخزين هو مسؤوليتك: تسلم SDK البايتات أو المسار عندما يحين وقت العرض، وهو يعيد لك الصفحات.
2.3 حماية نقطة النهاية
نظرًا لأن نقطة نهاية التحميل تتعامل مع بيانات حساسة، احمها بالمصادقة وتفويض مبني على الأدوار (على سبيل المثال، فقط المستخدمون الذين لديهم دور DocumentViewer يمكنهم التحميل). تحقق من الامتداد والحجم على الخادم وكذلك في المتصفح، وعامل البايتات المرفوعة كمدخل غير موثوق.
لا تتخطى هذا بافتراض أن SDK يغطيه. التشفير أثناء التخزين، إدارة المفاتيح وتنظيف الملفات اليتيمة هي مسؤولية تطبيقك. إذا كنت بحاجة إلى تشفير المستندات على القرص، استخدم المرافق التي تثق بها في المنصة لهذا الغرض — العارض ليس المكان المناسب لذلك.
3. تضمين مكوّن العارض في ASP.NET Core أو MVC أو WebForms
مع جاهزية الواجهة الخلفية، قم بتهيئة العارض باستخدام الأصول وواجهة برمجة التطبيقات الموثقة للإصدار المثبت من Doconut.
3.1 إضافة حزمة JavaScript
في التخطيط المشترك الخاص بك، قم بتضمين موارد العارض فقط كما هو موضح في الوثائق التي تتطابق مع SDK المثبت. لا تفترض أسماء حزم ثابتة أو مواقع ثابتة عبر الإصدارات.
3.2 إنشاء عرض Razor لـ Core/MVC
أضف عرضًا (مثال: Views/Document/View.cshtml) يحتوي على حقل إدخال ملف، وعنصر حاوية للعارض، وسكربت صغير يرفع الملف المحدد، ويتلقى الرمز الآمن، ويُهيئ عنصر واجهة Doconut Viewer.
يجب أن يقوم السكربت بما يلي:
- التقاط الملف المحدد من عنصر
<input type="file">. - إرسال الملف إلى نقطة النهاية للرفع باستخدام
fetchأوXMLHttpRequest. - عند وصول الاستجابة المصرح بها، قم بتهيئة العارض باستخدام واجهة برمجة التطبيقات المدعومة للإصدار المثبت.
3.3 ما يعادل WebForms
في صفحة WebForms (مثال: DocumentViewer.aspx), ضع عنصر تحكم asp:FileUpload، وزرًا لتفعيل الرفع، و<div> سيستضيف العارض. في الكود‑خلفي، استدعِ خدمة Doconut لتخزين الملف المرفوع، واحصل على الرمز، وسجِّل سكربت بدء تشغيل يستدعي دالة JavaScript (initViewer(token)) لإنشاء نسخة العارض.
السبب للقيام بذلك بهذه الطريقة: مسار عرض واحد يخدم ثلاثة نماذج UI في .NET، دون الحاجة لتثبيت أي شيء على جهاز المستخدم النهائي.
4. تخصيص العارض لإدارة المستندات
يعرض العارض داخل حاوية في صفحتك الخاصة، لذا فإن التطبيق المحيط هو بالفعل لك. علاوة على ذلك، احصل على أسماء الخيارات والقيم الافتراضية من الوثائق الخاصة بالإصدار الذي قمت بتثبيته بدلاً من أي دليل، بما في ذلك هذا — تتغير واجهة التكوين بين الإصدارات واسم الخيار المبرمج ثابتًا هو الأكثر احتمالًا أن يتعطل عند التحديث.
الأمور التي تستحق اتخاذ قرار مسبقًا:
4.1 ما هي عناصر التحكم التي يحصل عليها المستخدم
قرر ما إذا كان يجب أن يتمكن المستخدمون من تنزيل الملف الأصلي، أو قراءة الصفحات المرسومة فقط. الطباعة المتحكم فيها هي جزء من العارض وليس شراءً منفصلًا، لذا فإن قواعد الطباعة هي مسألة تكوين، لا مسألة ترخيص.
4.2 ما هي الإضافات التي تحتاجها فعليًا
أربعة منها مرخصة بشكل منفصل، والقائمة قصيرة بما يكفي لتستحق الحفظ: Annotation، Converter، DICOM و Search. التحويل — من DOC إلى PDF والبقية — هو إضافة Converter. البحث النصي هو إضافة Search. إذا لم تحتاج أيًا منهما، فلا تشتري أيًا منهما.
4.3 التعريب
إذا كان تطبيقك متعدد اللغات، تحقق مما يقدمه الإصدار المثبت من سلاسل واجهة المستخدم للعارض قبل أن تصمم حوله.
لماذا هذا مهم: يجب أن يبدو العارض كجزء من منتجك. ما لا ينبغي له فعله هو أن يعد مستخدميك بهدوء بميزات لا تشملها الرخصة التي اشتريتها.
5. اختبار التكامل عبر جميع الصيغ المدعومة
قبل الإطلاق، قم بإجراء فحص سريع لكل نوع ملف تتوقع أن يقوم مستخدموك بعرضه. باستخدام عارض تطبيق Doconut، افتح ملفًا تجريبيًا لكل صيغة وتحقق من أن العرض، والتنقل، وأي أدوات متخصصة تعمل كما هو موصوف.
| الصيغة | سيناريو الاختبار | النتيجة المتوقعة |
|---|---|---|
| تقرير كبير متعدد الصفحات مع صور مدمجة | تمرير سلس، تكبير، وعرض ألوان دقيقة | |
| DOCX | مستند Word يحتوي على جداول وهوامش | جميع النصوص والجداول والهوامش مرئية؛ لا يوجد تغيير في التخطيط |
| XLSX | جدول بيانات يحتوي على مخططات | المخططات تُعرض كرسومات متجهة؛ التكبير يحافظ على الوضوح |
| PPTX | مجموعة شرائح مع بنى متحركة | كل بنية على الشريحة تُعرض مكدسة في إطار واحد — هذا متوقع، ليس عيبًا |
| DWG | رسم تقني يحتوي على طبقات وإشارات خارجية | يمكن تشغيل وإيقاف الطبقات، وتعمل قياسات المسافة والمساحة؛ الإشارات الخارجية وخطوط SHX غير موجودة لأنها لم تكن في الملف أصلاً |
| PSD | ملف Photoshop متعدد الطبقات | يتم عرض التركيبة المحفوظة، مع بقاء الطبقات المخفية مخفية؛ الألوان تبقى واضحة عند التكبير |
| SVG | رسمة متجهة مع تدرجات | التدرجات تُعرض بسلاسة؛ التكبير يبقى حادًا |
| TIFF | مسح عالي الدقة | الصورة تُحمَّل بسرعة؛ التكبير يكشف التفاصيل |
اختبر باستخدام ملفات المستخدمين الحقيقية، وليس باستخدام عينات نظيفة. الصيغ التي تفاجئ الناس هي تلك التي تكمن غرابتها في الصيغة نفسها — DWG يربط بأربعة رسومات أخرى، جدول بيانات لم تُعاد حساب القيم المخزنة فيه، مجموعة شرائح لم تُضمّن الخطوط فيها. العارض المجاني على Doconut.app يستخدم نفس المحرك، لذا فهو طريقة سريعة لمعرفة كيف سيظهر ملف غير مألوف قبل كتابة أي كود.
الخاتمة
تضمين عارض مستندات خالٍ من الإضافات يتلخص في أربعة أمور: تثبيت SDK، تأمين مسار التحميل الخاص بك، العرض داخل حاوية في صفحتك، وتكوين ما توثقه النسخة المثبتة فقط. مساهمة العارض في الأمان ضيقة وحقيقية — فهو يعمل على خوادمك ولا يرسل شيئًا إلى الخارج. كل ما تبقى في تلك القائمة يخص تطبيقك، ولا يمكن لأي SDK أن يتولى ذلك نيابةً عنك.
هل أنت مستعد لتقييمه؟ ابدأ بـ صفحة التحميل والوثائق الرسمية لـ Doconut، ثم اختبر SDK ضمن نفس مراجعة الأمان المطبقة على بقية تطبيقك القائم على Windows وASP.NET.