آموزش گام به گام: توسعه‌دهندگان برای جاسازی یک نمایشگر سند امن و بدون افزونه در برنامه‌های ASP.NET Core، MVC یا WebForms
۱۴۰۵/۵/۲

آموزش گام به گام: توسعه‌دهندگان برای جاسازی یک نمایشگر سند امن و بدون افزونه در برنامه‌های ASP.NET Core، MVC یا WebForms

نحوه جاسازی SDK نمایشگر Doconut در ASP.NET Core، MVC یا WebForms: ۷۵ فرمت فایل، تبدیل DOC به PDF، و اینکه امنیت از کجا واقعاً می‌آید.

بسیاری از توسعه‌دهندگان وقتی نیاز به نمایش اسناد در یک برنامه وب دارند، به دنبال کتابخانه‌های مؤلفه UI می‌گردند. نمایشگر Doconut یک SDK .NET برای افزودن نمایش مرورگر بدون افزونه به پروژه‌های ASP.NET Core، MVC یا WebForms کلاسیک است. امنیت همچنان به معماری کامل برنامه وابسته است: احراز هویت، مجوزدهی، انتقال، ذخیره‌سازی، اعتبارسنجی، پاک‌سازی، به‌روزرسانی و نظارت.

نمایشگر سند امن ASP.NET که توسط کنترل‌های لایه‌ای برنامه محافظت می‌شود
نمایشگر سند امن ASP.NET که توسط کنترل‌های لایه‌ای برنامه محافظت می‌شود

1. نصب SDK 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 می‌دهید و SDK صفحات را به شما برمی‌گرداند.

2.3 محافظت از نقطه انتهایی

از آنجا که نقطه انتهایی بارگذاری با داده‌های حساس سروکار دارد، آن را با احراز هویت و مجوزدهی مبتنی بر نقش (برای مثال، فقط کاربران دارای نقش DocumentViewer می‌توانند بارگذاری کنند) محافظت کنید. پسوند و اندازه را هم در سمت سرور و هم در مرورگر اعتبارسنجی کنید و بایت‌های بارگذاری‌شده را به‌عنوان ورودی نامطمئن در نظر بگیرید.

از این مرحله صرف‌نظر نکنید به این فرض که SDK آن را پوشش می‌دهد. رمزنگاری در حالت استراحت، مدیریت کلید و پاک‌سازی فایل‌های یتیم کار برنامه شماست. اگر به اسنادی که روی دیسک رمزنگاری شده نیاز دارید، از امکانات پلتفرمی که قبلاً به آن اعتماد دارید استفاده کنید — نمایشگر جایی برای این کار نیست.

3. جاسازی مؤلفه Viewer در ASP.NET Core، MVC یا WebForms

با آماده بودن بک‌اند، نمایشگر را با استفاده از دارایی‌ها و API مستند شده برای نسخه نصب شده Doconut مقداردهی اولیه کنید.

3.1 افزودن باندل JavaScript

در قالب مشترک خود، فقط منابع نمایشگر را که در مستندات مربوط به SDK نصب شده توصیف شده‌اند، گنجانید. فرض نکنید که نام‌ها یا مسیرهای باندل ثابت در تمام نسخه‌ها هستند.

3.2 ایجاد یک Razor view برای Core/MVC

یک view اضافه کنید (مثلاً Views/Document/View.cshtml) که شامل یک ورودی فایل، یک عنصر کانتینر برای نمایشگر، و یک اسکریپت کوچک باشد که فایل انتخاب‌شده را بارگذاری می‌کند، توکن امن را دریافت می‌کند و ویجت Doconut Viewer را مقداردهی اولیه می‌کند.

اسکریپت باید:

  1. فایل انتخاب‌شده را از عنصر <input type="file"> دریافت کنید.
  2. فایل را به نقطه انتهایی آپلود با استفاده از fetch یا XMLHttpRequest ارسال کنید.
  3. هنگامی که پاسخ مجاز دریافت شد، نمایشگر را با استفاده از API پشتیبانی‌شده برای نسخه نصب شده مقداردهی اولیه کنید.

3.3 معادل WebForms

در یک صفحه WebForms (مثلاً DocumentViewer.aspx)، یک کنترل asp:FileUpload، یک دکمه برای شروع آپلود، و یک <div> که میزبان نمایشگر خواهد شد قرار دهید. در کد‑پشت، سرویس Doconut را برای ذخیره فایل آپلود شده فراخوانی کنید، توکن را دریافت کنید، و یک اسکریپت استارتاپ ثبت کنید که تابع JavaScript (initViewer(token)) را صدا می‌زند تا نمونه نمایشگر ایجاد شود.

دلیل انجام این کار به این شکل: یک مسیر رندرینگ که سه مدل UI .NET را سرو می‌کند، بدون اینکه چیزی روی ماشین کاربر نصب باشد.


4. سفارشی‌سازی Viewer برای مدیریت اسناد

Viewer داخل یک کانتینر در صفحه شما رندر می‌شود، بنابراین برنامه اطراف قبلاً متعلق به شماست. علاوه بر این، نام گزینه‌ها و مقادیر پیش‌فرض را از مستندات نسخه‌ای که نصب کرده‌اید، نه از هیچ آموزش (از جمله این)، بگیرید — سطح پیکربندی بین نسخه‌ها تغییر می‌کند و یک نام گزینه سخت‌کد شده بیشترین احتمال را دارد که در هنگام ارتقا خراب شود.

مواردی که در ابتدا باید تصمیم‌گیری شوند:

4.1 کدام کنترل‌ها برای کاربر فراهم می‌شود

تصمیم بگیرید که آیا کاربران شما باید بتوانند فایل اصلی را دانلود کنند یا فقط صفحات رندر شده را بخوانند. چاپ کنترل‌شده بخشی از Viewer است نه یک خرید جداگانه، بنابراین قوانین چاپ یک سؤال پیکربندی است، نه یک سؤال مجوز.

4.2 کدام افزونه‌ها واقعاً نیاز دارید

چهار افزونه به‌صورت جداگانه مجوز دارند و لیست آن به اندازه‌ای کوتاه است که به یاد سپردن ارزش دارد: Annotation، Converter، DICOM و Search. تبدیل — DOC به PDF و بقیه — افزونه Converter است. جستجوی متن افزونه Search است. اگر به هیچ‌یک نیازی ندارید، هیچ‌یک را خریداری نمی‌کنید.

4.3 بومی‌سازی

اگر برنامه شما چندزبانه است، قبل از طراحی، بررسی کنید نسخه نصب شده چه رشته‌های UI برای Viewer ارائه می‌دهد.

چرا این مهم است: Viewer باید شبیه بخشی از محصول شما به نظر برسد. آنچه نباید انجام دهد این است که به‌صورت ساکت به کاربران شما قابلیت‌هایی را وعده دهد که مجوز خریداری‌شده شامل آن‌ها نیست.


5. آزمون یکپارچه‌سازی در تمام فرمت‌های پشتیبانی‌شده

قبل از راه‌اندازی، یک بررسی سریع صحت برای هر نوع فایلی که انتظار دارید کاربران شما مشاهده کنند انجام دهید. با استفاده از Viewer برنامه Doconut، یک فایل نمونه از هر فرمت را باز کنید و تأیید کنید که رندر، ناوبری و هر ابزار تخصصی مطابق توضیحات کار می‌کند.

فرمتسناریوی آزموننتیجه مورد انتظار
PDFگزارش بزرگ چندصفحه‌ای با تصاویر جاسازی‌شدهاسکرول روان، زوم، و رندر دقیق رنگ‌ها
DOCXسند Word با جدول‌ها و پانوشت‌هاتمام متن، جدول‌ها و پانوشت‌ها قابل مشاهده؛ بدون تغییر چیدمان
XLSXجدول‌محور با نمودارهانمودارها به صورت گرافیک‌های برداری رندر می‌شوند؛ زوم وضوح را حفظ می‌کند
PPTXپاورپوینت با ساخت‌های انیمیشنیهر ساخت در یک اسلاید به صورت لایه‌ای در یک فریم رندر می‌شود — این مورد انتظار است، نه خطا
DWGنقشه فنی با لایه‌ها و مراجع خارجیقابلیت روشن/خاموش کردن لایه‌ها، اندازه‌گیری فاصله و مساحت کار می‌کند؛ مراجع خارجی (xrefs) و فونت‌های SHX وجود ندارند چون هرگز در فایل نبودند
PSDفایل Photoshop لایه‌دارترکیب ذخیره‌شده رندر می‌شود، لایه‌های مخفی مخفی می‌مانند؛ رنگ‌ها در زوم حفظ می‌شوند
SVGگرافیک برداری با گرادیان‌هاگرادیان‌ها به‌صورت روان رندر می‌شوند؛ زوم واضح می‌ماند
TIFFاسکن با وضوح بالاتصویر به‌سرعت بارگذاری می‌شود؛ زوم جزئیات را نشان می‌دهد

با فایل‌های واقعی کاربران خود تست کنید، نه با نمونه‌های تمیز. فرمت‌هایی که مردم را شگفت‌زده می‌کند، آن‌هایی هستند که ناهنجاری‌هایشان در خود فرمت نهفته است — یک DWG که به چهار نقشه دیگر ارجاع می‌دهد، یک جدول‌محور که مقادیر ذخیره‌شده‌اش هرگز محاسبه مجدد نشده‌اند، یک مجموعه اسلاید که فونت‌هایش جاسازی نشده‌اند. Viewer رایگان در Doconut.app از همان موتور استفاده می‌کند، بنابراین راهی سریع برای مشاهده نحوه خروج یک فایل خاص عجیب قبل از نوشتن هر کدی است.

نتیجه‌گیری

ادغام یک نمایشگر سند بدون افزونه به چهار مورد خلاصه می‌شود: نصب SDK، ایمن‌سازی مسیر بارگذاری خود، رندر کردن در یک کانتینر در صفحه‌تان، و پیکربندی تنها آنچه نسخه نصب‌شده مستند می‌کند. مشارکت نمایشگر در امنیت محدود و واقعی است — بر روی سرورهای شما اجرا می‌شود و هیچ چیزی ارسال نمی‌کند. بقیه موارد در آن فهرست متعلق به برنامه شماست و هیچ SDKی نمی‌تواند آن را برای شما به عهده بگیرد.

آیا آماده‌اید آن را ارزیابی کنید؟ ابتدا با صفحهٔ دانلود و مستندات رسمی Doconut شروع کنید، سپس SDK را در همان بازبینی امنیتی که برای بقیه برنامهٔ ASP.NET مبتنی بر ویندوز شما اعمال می‌شود، تست کنید.