يمكنك تضمين عارض مستندات بدون مكوّن إضافي في تطبيق ASP.NET Core أو MVC أو WebForms دون طلب من أي مستخدم تثبيت أي شيء.
تحتاج المؤسسات التي تقدم العقود أو الرسومات أو أصول التصميم إلى عارض يحترم سياسات الأمان المؤسسية ولا يجبر المستخدمين على تثبيت مكوّنات إضافية قديمة للمتصفح. يقدم Doconut مجموعة تطوير برامج (SDK) لعارض مستندات .NET للعمليات القائمة على المتصفح مثل PDF وOffice وCAD والبريد الإلكتروني والصور. ليس خدمة مستضافة تستدعيها: تقوم بتثبيتها في تطبيقك الخاص، وتقوم بعرض المستند هناك. يوضح هذا المقال قرارات التكامل دون الاعتماد على شفرة عينة محددة للإصدار.
توضيح أولاً، لأن المنتجين سهل الخلط بينهما. Doconut.app هو عارض الويب المجاني — ملف واحد يُفتح في علامة تبويب المتصفح، ثم يُحذف. ليس شيئًا يمكنك تضمينه. ما تقوم بتضمينه هو Doconut Viewer، مجموعة التطوير (SDK)، وكل ما يلي يتعلق بذلك.

1. لماذا الأمان والعرض بدون مكوّن إضافي مهم لتطبيقات الويب .NET
تتعامل المؤسسات الحديثة مع كل مستند كأنه احتمال لتسرب البيانات. عندما تقوم بتضمين عارض يعتمد على ActiveX أو Flash أو عميل أصلي، فإنك تتعرض لثلاث مخاطر:
| المخاطرة | الأثر على تطبيق .NET الخاص بك | كيف يزيل Doconut App هذه المشكلة |
|---|---|---|
| اعتماد المكوّن الإضافي | يجب على المستخدمين تثبيت أو تمكين مكوّن إضافي للمتصفح، مما يؤدي إلى تذاكر دعم ومشكلات امتثال. | يعمل Doconut بالكامل في HTML5/Canvas، ولا يتطلب أي مكوّن إضافي. |
| نقل غير مشفر | تنتقل الملفات عبر HTTP أو تُخزن كنص عادي، مما ينتهك GDPR أو HIPAA أو السياسات الداخلية. | يعمل SDK داخل تطبيقك، لذا يبقى النقل والتخزين تحت سياسة TLS والتشفير التي تفرضها بالفعل. لا يضيف Doconut أي خطوة إضافية. |
| دورة حياة غير مُتحكم فيها | قد تبقى الملفات على الخادم، مما يزيد من مساحة الاختراق. | التحكم في الاحتفاظ بالملفات يعود لك، لأن المستندات لا تغادر بيئتك. يتم كتابة مخرجات العرض المؤقتة في المكان الذي تُحدده، ويتم حذفها وفق جدولك. |
الحقيقة المعمارية المهمة هي أن SDK يتم تثبيته في بيئتك الخاصة ولا يجري أي استدعاءات إلى خوادم Doconut. لا يتم تحميل أي شيء إلينا، لذا لا يوجد معالج طرف ثالث لإضافته إلى خريطة البيانات ولا سياسة احتفاظ بائع لتتوافق مع سياساتك.
2. إعداد مشروع .NET
استخدم الحزمة والوثائق والأمثلة التي تتطابق مع نسخة Doconut المختارة للمشروع. صفحة Doconut الرسمية للتحميل هي نقطة الانطلاق الموثوقة.
قبل التكامل، تأكد من بيئة تشغيل .NET المستهدفة، سجّل نسخة الحزمة، احتفظ بإعدادات الترخيص خارج نظام التحكم في المصدر، وابدأ بمستندات تمثيلية. لدى ASP.NET Core وMVC وWebForms دورات حياة تطبيق مختلفة، لذا لا ينبغي اعتبار إعداداتهم متطابقة.
3. بناء نقطة تحميل آمنة – AES‑256، SSL، والحذف التلقائي
يمكن لـ SDK قراءة مستند من مسار مادي، أو تدفق، أو مصفوفة بايت، أو قاعدة بيانات، أو عنوان URL، أو موقع داخل الشبكة الداخلية، أو مزود سحابي مثل S3 أو Azure Storage أو Google Cloud أو Dropbox. ما لا ينبغي له قراءته أبداً هو مسار يختاره المتصفح. ضع فحص تفويض بين الطلب والمستند، بغض النظر عن المصدر. أدناه مثال شائع لتلك النقطة النهاية في ASP.NET Core؛ تنطبق الأفكار نفسها على MVC وWebForms.
[HttpPost("upload")]
public async Task<IActionResult> Upload(IFormFile file)
{
// تحقق من صلاحية المستخدم
if (!User.HasPermission("UploadDocument"))
return Forbid();
// احفظ الملف مؤقتًا على الخادم
var tempPath = Path.GetTempFileName();
using (var stream = System.IO.File.Create(tempPath))
{
await file.CopyToAsync(stream);
}
// مرّر الملف إلى SDK الخاص بـ Doconut للعرض أو التحويل
var renderResult = await DoconutRenderer.RenderAsync(tempPath);
// احذف الملف المؤقت بعد الانتهاء
System.IO.File.Delete(tempPath);
// أعد النتيجة للعميل
return File(renderResult.Content, renderResult.ContentType);
}
هذا النهج يضمن أن الملفات تُنقل عبر قناة TLS، تُخزن مؤقتًا فقط في بيئة الخادم التي تتحكم فيها، وتُحذف تلقائيًا بعد الانتهاء، مما يلبي متطلبات الأمان والامتثال.
سير عمل جانب الخادم
- قبول الملف المرفوع – استخدم
IFormFileالقياسي (أوHttpPostedFileفي WebForms) لاستلام المستند من العميل. - تشفير الملف باستخدام AES‑256 – قبل حفظ الدفق، قم بتشفيره باستخدام مكتبة موثوقة مثل
System.Security.Cryptography.Aes. احفظ الكتلة المشفرة في موقع آمن (مثلاً Azure Blob Storage مع تمكين التشفير على مستوى الخادم، أو دلو S3 مع SSE‑AES256). - إنشاء عنوان URL موقع قصير‑الأجل – أنشئ عنوان URL صالح لبضع دقائق (مثلاً 5 دقائق). يجب أن يكون العنوان HTTPS ويحتوي على رمز تشفيري يمكن لـ Doconut التحقق منه. معظم مزودي التخزين السحابي يقدمون ميزة “pre‑signed URL” التي تلبي هذا الاحتياج.
- إرجاع عنوان URL الموقع إلى العميل – أرسل استجابة JSON تحتوي على العنوان. سيقوم العميل بتمرير هذا العنوان إلى عارض Doconut.
- جدولة الحذف التلقائي – بعد انتهاء صلاحية عنوان URL الموقع، يقوم وظيفة خلفية (Hangfire، Azure Functions، إلخ) بإزالة الكتلة المشفرة، مما يضمن عدم بقاء الملف على الخادم.
نظائر MVC / WebForms
- MVC – ضع نفس المنطق داخل إجراء متحكم عادي وأرجع
JsonResult. - WebForms – نفّذ معالج
.ashxأو طريقة صفحة تتبع الخطوات نفسها: استلامRequest.Files[0]، تشفير، إنشاء عنوان URL موقع، وكتابة استجابة JSON.
الفرق الوحيد هو صيغة التوجيه؛ يبقى سير العمل الأمني هو نفسه.
4. عرض المستند عبر SDK المثبت
احتفظ بالوصول إلى المستند على الخادم وفرض التفويض قبل معالجة ملف أو دفق. تسلسل التهيئة والعرض الدقيق يعتمد على الإصدار؛ اتبع الوثائق الرسمية المرفقة مع البناء المثبت بدلاً من نسخ واجهة برمجة تطبيقات JavaScript عالمية غير موثوقة.
لماذا يعمل هذا مع جميع إصدارات .NET
- ASP.NET Core Razor – التهيئة موجودة في نفس العرض الذي يستضيف نموذج الرفع، لذا هناك صفحة واحدة للتعامل معها.
- MVC – استخدم
@section Scriptsلحقن المقتطف نفسه؛ المتحكم يُرجع JSON يمكن لـ$.ajaxفي MVC استهلاكه. - WebForms – سجّل السكريبت باستخدام
ClientScript.RegisterStartupScriptبعد إكمال الرفع، ثم استدعِlaunchViewerبنفس الطريقة.
يتم العرض على الخادم، وهذا هو الهدف منه: المتصفح يتلقى صفحات معروضة بدلاً من المستند الأصلي، وهو السبب في أن ملف DWG أو PSD يفتح على جهاز لا يملك AutoCAD أو Photoshop. احرص على ضبط سعة الخادم وفقًا لذلك — ملف PDF ممسوح ضوئيًا من 300 صفحة يتطلب جهدًا حقيقيًا، وهو الآن ما يتولى خدمتك.
5. تخصيص العارض ليتناسب مع بوابتك
عادةً ما تحتاج المؤسسات إلى أن يبدو العارض كجزء من المنتج الذي يندمج فيه، وليس كنافذة إلى شيء آخر. مظهر العارض ومجموعة التحكم التي يتيحها قابلة للتكوين، وتعتمد الخيارات المتاحة على الإصدار الذي قمت بتثبيته.
خذ أسماء الخيارات من الوثائق المرفقة مع إصدارك بدلاً من مشاركة مدونة. واجهات تكوين العارض هي بالضبط النوع من الأشياء التي تُعاد تسميتها بين الإصدارات، ومقتطف من مقال قديم قد يفشل بطريقة توحي بمشكلة ترخيص.
القرار الذي يجب اتخاذه قبل فتح تلك الوثائق هو أي التحكمات يجب أن يراها كل دور. سواء كان المستخدم يستطيع الطباعة، أو التنزيل، أو مجرد تصفح المستند هو سؤال أذونات يعرف تطبيقك إجابته بالفعل. قم بتكوين العارض بناءً على تلك الإجابة، بدلاً من إظهار كل التحكمات على أمل ألا ينقر أحد.
6. الأداء وقابلية التوسع – الحفاظ على تجربة سريعة
إدماج عارض في بوابة ذات حركة مرور عالية يثير مشكلتين عمليتين: وقت التحميل والعرض المتزامن. يتعامل Doconut App مع كلا الأمرين مباشرة، لكن يمكنك تعزيز نطاق الأداء ببعض الحيل الخاصة بـ .NET.
| القلق | ما الذي يجب فعله |
|---|---|
| زمن استجابة الصفحة الأولى | التحميل التلقائي للصفحة يتيح للقارئ رؤية الصفحة الأولى بينما لا يزال باقي المحتوى يُجهّز. فعّل ضغط الملفات الثابتة (app.UseResponseCompression()) وخزن أصول العميل في الذاكرة المؤقتة. |
| عرض متكرر لنفس الملف | يمكن أن يُعرض المستند المفتوح كثيرًا مرة واحدة وتُخدم النتيجة من الذاكرة المؤقتة بدلاً من إعادة العرض لكل طلب. تغطي الأسئلة المتكررة خيار .DCN لهذا الغرض. |
| تكلفة العرض | العرض هو عمل خادم. خفض دقة الصورة حيث لا تكون الدقة حرجة هو أكبر رافعة واحدة، وهو تعديل في الإعدادات وليس في الشيفرة. |
| التزامن | راجع إعدادات المهلة وAutoClose تحت الحمل، واقرأ أمثلة farms الويب قبل افتراض أن عقدة واحدة كافية. حدّ من معدل طلبات الرفع. |
قِس الأداء باستخدام مستنداتك الخاصة. ملف PDF نصي بحجم 5 ميغابايت وملف مسح ضوئي بحجم 5 ميغابايت لنفس التقرير يتصرفان بشكل مختلف تمامًا، ولا يظهر أحدهما إلا في اختبار صناعي.
النقاط الرئيسية
- Doconut Viewer هو SDK .NET خالٍ من الإضافات يعمل مع ASP.NET Core و MVC و WebForms. لا يحتاج مستخدموك إلى تثبيت أي شيء.
- يتم تثبيته في بيئتك الخاصة ولا يجري أي اتصال بخوادم Doconut، لذا تبقى المستندات داخل الحدود التي تتحكم فيها بالفعل.
- أمان النقل، التشفير أثناء التخزين والاحتفاظ هي إعدادات لك، لأن الملف لا يغادر بنيتك التحتية أبداً. لا يصبح Doconut معالجاً في خريطة بياناتك.
- كتالوج SDK يحتوي على 75 امتداد ملف عبر 18 عائلة — PDF، Office، CAD، Visio، Project، البريد الإلكتروني، eBook والصور، مع DICOM عبر إضافته الخاصة.
- يتم العرض على الخادم. هذا ما يسمح للمتصفح بفتح ملف DWG، وهو أيضاً العنصر الذي يجب أخذ حجمه في الاعتبار.
- التحكمات التي يراها المستخدم — الطباعة، التنزيل، أو التصفح فقط — يجب أن تتبع الأذونات التي يمتلكها تطبيقك بالفعل.
- احصل على أسماء خيارات التكوين من الوثائق الخاصة بالإصدار المثبت لديك، ولا تعتمد أبداً على مقال.
الأسئلة الشائعة
س1: هل أقوم بتثبيت شيء على الخادم؟
نعم. Doconut Viewer هو SDK .NET تقوم بتثبيته في تطبيقك — ابدأ من صفحة صفحة التحميل واستخدم الحزمة والوثائق للإصدار الذي اخترته. لا يوجد نقطة نهاية مستضافة للاتصال، ولا شيء يُقدم من CDN الخاص بـ Doconut.
س2: من يحذف الملف بعد العرض؟
أنت. لأن المستند وأي مخرجات عرض مؤقتة تعيش في بيئتك، فإن الاحتفاظ هو إعداد في تطبيقك وليس وعداً من البائع. قرر أين تُكتب الملفات المؤقتة، وما الذي يزيلها، قبل الانتقال إلى الإنتاج.
س3: هل يمكن للمستخدمين طباعة المستند؟
الطباعة هي قدرة في العارض، ويمكن منحها أو سحبها حسب المستخدم. لاحظ أن الطباعة المتحكم فيها هي جزء من العارض نفسه — ليست واحدة من الإضافات الأربعة المرخصة، وهي Annotation و Converter و DICOM و Search.
س4: هل يمكنه تحويل مستند إلى صيغة أخرى؟
هذا هو إضافة Converter، مرخصة بشكل منفصل. العرض والتحويل منتجات مختلفة هنا، ومن المفيد توضيح أيهما يحتاجه سير العمل فعلياً.
هل أنت مستعد لتضمين عارض مستندات بدون إضافات في تطبيق .NET الخاص بك؟ ابدأ من صفحة صفحة تحميل Doconut — الترخيص التجريبي مجاني. وإذا كان ما تحتاجه فعلاً هو فتح ملف واحد اليوم، فإن Doconut.app يقوم بذلك في علامة تبويب المتصفح، ويحذف الملف بعد ذلك.