چگونه یک نمایشگر سند بدون افزونه را در ASP.NET جاسازی کنیم
۱۴۰۵/۴/۱۹

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

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

می‌توانید یک نمایشگر سند بدون افزونه را در یک برنامه ASP.NET Core، MVC یا WebForms جاسازی کنید بدون اینکه از هیچ کاربری بخواهید چیزی نصب کند.
شرکت‌هایی که قراردادها، نقشه‌ها یا دارایی‌های طراحی را سرویس می‌دهند به یک نمایشگر نیاز دارند که به سیاست‌های امنیتی شرکت احترام بگذارد و هرگز کاربران را مجبور به نصب افزونه‌های قدیمی مرورگر نکند. داکونوت یک SDK نمایشگر سند .NET برای گردش‌کارهای PDF، Office، CAD، ایمیل و تصویر مبتنی بر مرورگر فراهم می‌کند. این یک سرویس میزبانی‌شده نیست که فراخوانی کنید: شما آن را در برنامه خود نصب می‌کنید و در آنجا رندر می‌شود. این پست تصمیمات یکپارچه‌سازی را بدون تکیه بر کد نمونه مخصوص نسخه خاص توضیح می‌دهد.

یک توضیح اولیه، زیرا دو محصول به راحتی می‌توانند با هم اشتباه شوند. داکونوت.app نمایشگر وب رایگان است — یک فایل، در یک برگه مرورگر باز می‌شود و پس از آن حذف می‌شود. این چیزی نیست که شما جاسازی کنید. آنچه شما جاسازی می‌کنید Doconut Viewer است، SDK، و تمام مطالب زیر دربارهٔ آن است.

نمایشگر سند جاسازی‌شده متصل به یک بک‌اند ASP.NET کنترل‌شده
نمایشگر سند جاسازی‌شده متصل به یک بک‌اند ASP.NET کنترل‌شده

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

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

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

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

2. آماده‌سازی پروژه .NET

از بسته، مستندات و مثال‌هایی استفاده کنید که با نسخهٔ Doconut انتخاب‌شده برای پروژه مطابقت دارند. صفحهٔ رسمی صفحه دانلود داكونوت نقطهٔ شروع قابل اعتماد است.

قبل از یکپارچه‌سازی، زمان‌اجرای هدف .NET را تأیید کنید، نسخهٔ بسته را ثبت کنید، پیکربندی لایسنس را خارج از کنترل نسخه نگه دارید و با اسناد نماینده شروع کنید. ASP.NET Core، MVC و WebForms چرخه‌های حیات برنامه متفاوتی دارند، بنابراین تنظیمات آن‌ها نباید به‌عنوان یکسان در نظر گرفته شوند.

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

SDK می‌تواند سندی را از مسیر فیزیکی، یک استریم، آرایه بایت، پایگاه داده، URL، مکان اینترانت یا ارائه‌دهندهٔ ابری مانند S3، Azure Storage، Google Cloud یا Dropbox بخواند. آنچه هرگز نباید بخواند مسیر انتخاب‌شده توسط مرورگر است. یک بررسی مجوز بین درخواست و سند قرار دهید، صرف‌نظر از منبع. در زیر یک شکل رایج برای آن نقطهٔ انتهایی در 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ی ایجاد کنید که برای چند دقیقه معتبر باشد (مثلاً ۵ دقیقه). این URL باید HTTPS باشد و شامل توکن رمزنگاری‌شده‌ای باشد که Doconut بتواند اعتبارسنجی کند. اکثر ارائه‌دهندگان ذخیره‌سازی ابری ویژگی «URL پیش‌امضا» دارند که این نیاز را برآورده می‌کند.
  4. بازگرداندن URL امضاشده به کلاینت – یک پاسخ JSON شامل URL ارسال کنید. کلاینت این URL را به نمایشگر Doconut می‌دهد.
  5. زمان‌بندی حذف خودکار – پس از انقضای URL امضاشده، یک کار پس‌زمینه (Hangfire، Azure Functions و غیره) بلاک رمزنگاری‌شده را حذف می‌کند تا اطمینان حاصل شود فایل روی سرور باقی نمی‌ماند.

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

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

تنها تفاوت در سینتکس مسیردهی است؛ گردش کار امنیتی به همان شکل باقی می‌ماند.


4. رندر سند از طریق SDK نصب‌شده

دسترسی به سند را روی سرور نگه دارید و قبل از پردازش فایل یا جریان، احراز هویت را اعمال کنید. توالی دقیق رندر و مقداردهی اولیهٔ UI بسته به نسخه متفاوت است؛ به جای کپی کردن یک API جاوااسکریپت سراسری غیرمطمئن، مستندات رسمی همراه با نسخهٔ نصب‌شده را دنبال کنید.

چرا این برای تمام نسخه‌های .NET کار می‌کند

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

رندر بر روی سرور شما انجام می‌شود و این همان هدف است: مرورگر صفحات رندرشده را دریافت می‌کند نه سند اصلی، به همین دلیل یک فایل DWG یا PSD بر روی ماشینی که نه AutoCAD دارد نه Photoshop باز می‌شود. سرور را متناسب با حجم کار تنظیم کنید — یک PDF اسکن‌شدهٔ ۳۰۰ صفحه کار واقعی است و اکنون لایهٔ شما این کار را انجام می‌دهد.


5. سفارشی‌سازی نمایشگر برای مطابقت با پورتال شما

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

نام گزینه‌ها را از مستندات همراه با نسخهٔ خود بگیرید، نه از یک پست وبلاگی. سطوح پیکربندی نمایشگر دقیقاً همان چیزهایی هستند که بین نسخه‌ها نامشان تغییر می‌کند و یک اسنیپت کپی‌شده از مقاله‌ای که دو نسخه قدیمی‌تر است، به شکلی که شبیه مشکل لایسنس به نظر می‌رسد، شکست می‌خورد.

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


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

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

نگرانیچه کاری باید انجام داد
تاخیر صفحهٔ اولبارگذاری خودکار صفحه به خواننده اجازه می‌دهد صفحهٔ اول را ببیند در حالی که بقیه هنوز در حال آماده‌سازی هستند. فشرده‌سازی فایل‌های استاتیک را فعال کنید (app.UseResponseCompression()) و دارایی‌های کلاینت را کش کنید.
نمایش‌های مکرر یک فایلیک سند که به‌طور مکرر باز می‌شود می‌تواند یک‌بار رندر شود و خروجی کش‌شده ارائه شود به‌جای رندر مجدد برای هر درخواست. بخش پرسش‌های متداول گزینهٔ .DCN را برای همین مورد پوشش می‌دهد.
هزینه رندررندر کاری سرور است. کاهش وضوح تصویر در مواردی که دقت بحرانی نیست بزرگ‌ترین اهرم است و این یک تغییر پیکربندی است نه تغییر کد.
همزمانیتنظیمات زمان‌انتظار و AutoClose را تحت بار بررسی کنید و قبل از فرض اینکه یک گره کافی است، مثال‌های وب‌فارم را بخوانید. نرخ‑محدود کردن نقطهٔ انتهایی بارگذاری را اعمال کنید.

با اسناد خودتان اندازه‌گیری کنید. یک PDF متنی ۵ مگابایتی و یک اسکن ۵ مگابایتی از همان گزارش رفتار کاملاً متفاوتی دارند و فقط یکی از آن‌ها در یک بنچمارک مصنوعی ظاهر می‌شود.

نکات کلیدی

  • 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 این کار را در یک برگه مرورگر انجام می‌دهد و پس از آن آن را حذف می‌کند.