چ
7/10/2026

چگونه یک نمایشگر سند بدون افزونه را در ASP.NET جاسازی کنیم

راهنمای گام به گام برای مهندسان .NET که نیاز به جاسازی نمایشگر سند امن و بدون افزونه Doconut App در پروژه‌های ASP.NET Core، MVC یا WebForms دارند.

بله—می‌توانید یک نمایشگر فایل آنلاین امن و بدون افزونه را در هر برنامه ASP.NET Core، MVC یا WebForms تنها در چند دقیقه جاسازی کنید و Doconut App تمام کارهای سنگین را انجام می‌دهد.
شرکت‌هایی که قراردادها، نقشه‌ها یا دارایی‌های طراحی را سرو می‌کنند به نمایشگری نیاز دارند که به سیاست‌های امنیتی سازمانی احترام بگذارد، در تمام مرورگرها کار کند و هرگز کاربران را مجبور به نصب افزونه‌های شخص ثالث نکند. Doconut App دقیقاً این را ارائه می‌دهد: یک نمایشگر مبتنی بر مرورگر که از PDF، Office، CAD و بیش از ۵۰ فرمت دیگر پشتیبانی می‌کند، با رمزنگاری AES‑256، بارگذاری فقط از طریق SSL و رابط کاربری کاملاً قابل تنظیم. این مقاله شما را گام به گام از ایمن‌سازی بارگذاری فایل تا رندرینگ نمایشگر راهنمایی می‌کند تا بتوانید بدون نوشتن موتور رندرینگ از صفر، یک راه‌حل براق و سطح سازمانی ارائه دهید.


1. چرا امنیت و رندرینگ بدون افزونه برای برنامه‌های وب .NET مهم است

شرکت‌های مدرن هر سند را به‌عنوان یک نشت احتمالی داده در نظر می‌گیرند. وقتی یک نمایشگر را که به ActiveX، Flash یا یک کلاینت بومی وابسته است جاسازی می‌کنید، سه خطر به‌دست می‌آورید:

خطرتأثیر بر برنامه .NET شماچگونه Doconut App آن را حذف می‌کند
وابستگی به افزونهکاربران باید یک افزونه مرورگر نصب یا فعال کنند که منجر به بلیط‌های پشتیبانی و مشکلات انطباق می‌شود.Doconut به‌صورت کامل در HTML5/Canvas اجرا می‌شود و بدون هیچ افزونه‌ای نیاز دارد.
انتقال بدون رمزنگاریفایل‌ها از طریق HTTP منتقل می‌شوند یا به‌صورت متن ساده ذخیره می‌شوند که مغایر با GDPR، HIPAA یا سیاست‌های داخلی است.تمام بارگذاری‌ها از طریق SSL انجام می‌شود و با رمزنگاری AES‑256 ذخیره می‌شوند.
دوره حیات غیرقابل کنترلفایل‌ها ممکن است در سرور باقی بمانند و سطح خطر نفوذ را افزایش دهند.Doconut به‌صورت خودکار فایل‌ها را پس از مشاهده حذف می‌کند و یک بازه نگهداری کوتاه را تضمین می‌کند.

چون نمایشگر به‌عنوان یک مؤلفه جاوااسکریپتی که با سرویس رندرینگ امن Doconut ارتباط برقرار می‌کند تحویل داده می‌شود، استک .NET شما تمیز می‌ماند—بدون کتابخانه‌های بومی اضافی، بدون باینری‌های شخص ثالث و بدون ممیزی‌های انطباق اضافی.

2. آماده‌سازی پروژه .NET شما – تنظیمات حداقل برای ASP.NET Core، MVC و WebForms

صرف‌نظر از اینکه از ASP.NET Core، MVC 5 یا WebForms استفاده می‌کنید، مراحل آماده‌سازی یکسان هستند:

  1. افزودن بسته اسکریپت Doconut
    Doconut اسکریپت نمایشگر سبک‌وزنی را بر روی CDN خود میزبانی می‌کند. خط زیر را به صفحه قالب خود (مثلاً _Layout.cshtml یا Site.Master) اضافه کنید:

    <script src="https://doconut.app/viewer.min.js"></script>
    
  2. ایجاد عنصر جای‌دار
    نمایشگر یک canvas را داخل هر <div> که مشخص می‌کنید تزریق می‌کند. مثال برای Razor:

    <div id="docViewer" style="width:100%; height:800px;"></div>
    

    برای WebForms، یک <asp:Panel> با runat="server" قرار دهید و ID="docViewer" بدهید.

  3. ارجاع به CSS Doconut (اختیاری)
    اگر می‌خواهید نوار ابزار و تم پیش‌فرض را داشته باشید، فایل CSS را شامل کنید:

    <link rel="stylesheet" href="https://doconut.app/viewer.min.css" />
    

این تمام دارایی‌های استاتیکی است که نیاز دارید. بقیه کارها در کد سمت سرور (بارگذاری، رمزنگاری، تولید توکن) و یک اسکریپت کوچک سمت کلاینت انجام می‌شود.

3. ساخت نقطه انتهایی بارگذاری امن – AES‑256، SSL و حذف خودکار

نمایشگر هرگز به‌صورت مستقیم به فایل‌های موجود در سیستم شما دسترسی ندارد. در عوض، سند را به یک محل ذخیره‌سازی موقت و رمزنگاری‌شده بارگذاری می‌کنید که Doconut به‌صورت درخواست‑به‑درخواست می‌خواند. در ادامه توصیف سطح بالا برای ASP.NET Core آمده است؛ همان ایده‌ها برای MVC و WebForms نیز اعمال می‌شود.

جریان کار سمت سرور

  1. دریافت فایل بارگذاری‌شده – از IFormFile (یا HttpPostedFile در WebForms) برای دریافت سند از کلاینت استفاده کنید.
  2. رمزنگاری فایل با AES‑256 – پیش از ذخیره‌سازی، جریان را با کتابخانه‌ای معتبر مثل System.Security.Cryptography.Aes رمزنگاری کنید. بلوک رمزنگاری‌شده را در مکانی امن (مثلاً Azure Blob Storage با رمزنگاری سمت سرور فعال، یا یک سطل S3 با SSE‑AES256) ذخیره کنید.
  3. تولید URL امضاشده کوتاه‌مدت – URLی ایجاد کنید که تنها چند دقیقه (مثلاً 5 دقیقه) معتبر باشد. این URL باید HTTPS باشد و شامل توکنی رمزنگاری‌شده باشد که Doconut بتواند اعتبارسنجی کند. اکثر ارائه‌دهندگان ذخیره‌سازی ابری قابلیت «URL پیش‌امضا» دارند که این نیاز را برآورده می‌کند.
  4. بازگرداندن URL امضاشده به کلاینت – پاسخ JSON شامل URL را بفرستید. کلاینت این URL را به نمایشگر Doconut می‌دهد.
  5. زمان‌بندی حذف خودکار – پس از انقضای URL امضاشده، یک کار پس‌زمینه (Hangfire، Azure Functions و غیره) بلوک رمزنگاری‌شده را حذف می‌کند تا اطمینان حاصل شود فایل در سرور باقی نمی‌ماند.

معادل‌های MVC / WebForms

  • MVC – همان منطق را داخل یک اکشن کنترلر معمولی قرار دهید و JsonResult برگردانید.
  • WebForms – یک handler .ashx یا متد صفحه‌ای پیاده‌سازی کنید که مراحل مشابه را انجام دهد: دریافت Request.Files[0]، رمزنگاری، تولید URL پیش‌امضا و نوشتن پاسخ JSON.

تنها تفاوت در سینتکس مسیردهی است؛ جریان کار امنیتی یکسان می‌ماند.

4. رندرینگ نمایشگر Doconut – از URL تا بوم داخل مرورگر

پس از دریافت URL امضاشده، نمایشگر می‌تواند با یک فراخوانی ساده جاوااسکریپت راه‌اندازی شود. SDK Doconut به‌صورت خودکار استریم، رندر و تعاملات UI را مدیریت می‌کند.

<script>
    // فرض کنید `response.viewerUrl` شامل URL امضاشده‌ای است که از نقطه انتهایی بارگذاری دریافت شده
    function launchViewer(viewerUrl) {
        // مقداردهی اولیه نمایشگر Doconut. شیء سراسری که اسکریپت فراهم می‌کند `DoconutViewer` است.
        DoconutViewer.init({
            containerId: "docViewer",   // <div> که قبلاً قرار دادیم
            fileUrl: viewerUrl,          // URL HTTPS امضاشده به فایل رمزنگاری‌شده
            toolbar: true,               // نمایش نوار ابزار پیش‌ساخته
            theme: "light"              // تم بصری اختیاری
        });
    }

    // مثال: پس از بارگذاری موفق
    fetch("/api/document/upload", {
        method: "POST",
        body: myFormData,
        credentials: "include"
    })
    .then(r => r.json())
    .then(data => launchViewer(data.viewerUrl));
</script>

چرا این روش برای هر نوع .NET کار می‌کند

  • ASP.NET Core Razor – اسکریپت در همان نمایی که فرم بارگذاری را میزبانی می‌کند قرار می‌گیرد، بنابراین جریان یکپارچه است.
  • MVC – از @section Scripts برای تزریق همان قطعه کد استفاده کنید؛ کنترلر JSON برمی‌گرداند که $.ajax در MVC می‌تواند مصرف کند.
  • WebForms – اسکریپت را با ClientScript.RegisterStartupScript پس از اتمام بارگذاری ثبت کنید و سپس همان‌طور launchViewer را فراخوانی کنید.

چون Doconut مستقیماً از URL امضاشده استریم می‌کند، سرور پس از مرحله بارگذاری دیگر به فایل دسترسی ندارد. نمایشگر PDF، Word، CAD و تمام فرمت‌های دیگر ذکر شده در مشخصات محصول را بدون نیاز به تبدیل سمت سرور رندر می‌کند.

5. سفارشی‌سازی نمایشگر برای مطابقت با برند شما – تنظیم دقیق نمایشگر فایل آنلاین

سازمان‌ها اغلب نیاز دارند نمایشگر شبیه بخشی بومی از پورتال خود به نظر برسد. UI کاملاً قابل تنظیم Doconut App به شما اجازه می‌دهد:

سفارشی‌سازیچگونه در .NET اعمال می‌شود
چیدمان نوار ابزارمقدار toolbar: false را بدهید و دکمه‌های خودتان را بسازید که به API جاوااسکریپت نمایشگر (مثلاً zoomIn(), print()) فراخوانی می‌کنند.
طرح رنگیtheme: "dark" را تنظیم کنید یا یک فایل CSS سفارشی که کلاس‌های پیش‌فرض را بازنویسی می‌کند، اضافه کنید.
زبان و دسترس‌پذیریDoconut به ویژگی lang روی کانتینر احترام می‌گذارد؛ همچنین می‌توانید برچسب‌های ARIA را از طریق گزینه accessibility تزریق کنید.
هوک‌های رویدادCallbackهایی مانند onPageChange, onError و onDownload به شما امکان می‌دهند استفاده را در خط لوله تله‌متری موجود خود لاگ کنید.

تمام این هوک‌ها در همان شیء جاوااسکریپتی که در بخش قبلی نشان دادیم پیکربندی می‌شوند. چون نمایشگر کاملاً در سمت کلاینت اجرا می‌شود، بار سرور اضافه‌ای ندارید—پشت‌صحنه .NET شما همچنان بر احراز هویت، رمزنگاری و منطق کسب‌وکار متمرکز می‌شود.

6. عملکرد و مقیاس‌پذیری – حفظ تجربه سریع

جاسازی یک نمایشگر در یک پورتال پر ترافیک دو نگرانی عملی را ایجاد می‌کند: زمان بارگذاری و رندرینگ همزمان. Doconut App هر دو را به‌صورت پیش‌فرض برطرف می‌کند، اما می‌توانید با چند نکته مخصوص .NET عملکرد را تقویت کنید.

نگرانیمزیت داخلی Doconutنکته اضافی برای .NET
دانلود اولیهاسکریپت نمایشگر تنها حدود 150 KB، فشرده شده است.فشرده‌سازی فایل‌های استاتیک را فعال کنید (app.UseResponseCompression()) و کش (Cache‑Control: public, max‑age=31536000) تنظیم کنید.
استریم فایلDoconut فقط صفحات مورد نیاز را با درخواست‌های رنج HTTP استریم می‌کند.بلوک‌های رمزنگاری‌شده را در یک CDN منطقه‌ای (Azure Front Door، Amazon CloudFront) قرار دهید تا تاخیر کاهش یابد.
کاربران همزمانرندرینگ در کلاینت انجام می‌شود؛ سرور فقط یک بار فایل رمزنگاری‌شده را برای هر مشاهده سرو می‌کند.نقطه انتهایی بارگذاری را با IApplicationRateLimiter محدود کنید تا از پیک‌های ناگهانی محافظت شود.
حجم حافظهنیازی به کتابخانه‌های تبدیل PDF سمت سرور نیست، بنابراین فرآیند ASP.NET حافظه کمی مصرف می‌کند.اگر پیش‌از‌این یک صف کارهای پس‌زمینه سنگین دارید، سرویس بارگذاری را به یک میکروسرویس جداگانه منتقل کنید.

با پیروی از این راهنمایی‌ها می‌توانید هزاران کاربر همزمان را بدون نیاز به مقیاس‌پذیری اضافی لایه .NET پشتیبانی کنید.

نکات کلیدی

  • Doconut App یک نمایشگر بدون افزونه و 100 % امن فراهم می‌کند که با ASP.NET Core، MVC و WebForms کار می‌کند.
  • بارگذاری‌ها فقط از طریق SSL انجام می‌شوند، با رمزنگاری AES‑256 ذخیره می‌شوند و پس از انقضای URL امضاشده به‌صورت خودکار حذف می‌شوند.
  • یکپارچه‌سازی فقط به یک اسکریپت CDN، یک <div> جای‌دار و یک نقطه انتهایی سرور که URL امضاشده می‌دهد نیاز دارد.
  • نمایشگر از PDF، Office، CAD و بیش از ۵۰ فرمت تصویر پشتیبانی می‌کند—بدون نیاز به تبدیل سمت سرور.
  • UI می‌تواند کاملاً سفارشی شود تا با برند شرکت هماهنگ شود و ابزارهای بزرگ‌نمایی، اندازه‌گیری و لایه برای فایل‌های CAD در دسترس است.
  • عملکرد بر روی کلاینت انجام می‌شود؛ توسعه‌دهندگان .NET فقط باید فشرده‌سازی فایل‌های استاتیک و کش CDN را تنظیم کنند.
  • کل جریان کار—from بارگذاری امن تا رندرینگ در مرورگر—به‌راحتی در خط لوله احراز هویت و مجوزدهی موجود شما جا می‌گیرد.

سوالات متداول

س1: آیا برای استفاده از Doconut نیاز به نصب بسته NuGet دارم؟
پ: خیر. نمایشگر به‌صورت یک بسته جاوااسکریپتی از CDN Doconut تحویل داده می‌شود. سرور شما فقط به میدل‌ورهای معمولی ASP.NET Core برای بارگذاری فایل و رمزنگاری نیاز دارد که احتمالاً قبلاً در پروژه وجود دارند.

س2: Doconut چگونه تضمین می‌کند که فایل پس از مشاهده حذف می‌شود؟
پ: Doconut یک URL امضاشده کوتاه‌مدت تولید می‌کند که پس از چند دقیقه منقضی می‌شود. پس از انقضا، شما (یا یک کار پس‌زمینه) بلوک رمزنگاری‌شده را حذف می‌کنید. این روش اطمینان می‌دهد سند برای مدت طولانی در سرور باقی نماند و با سیاست‌های سخت‌گیرانه نگهداری داده سازگار است.

س3: آیا می‌توانم از نمایشگر برای چاپ یا استخراج سند استفاده کنم؟
پ: بله. نوار ابزار پیش‌ساخته Doconut شامل گزینه‌های چاپ و استخراج است که کیفیت و چیدمان اصلی فایل منبع را حفظ می‌کند.