بله—میتوانید یک نمایشگر فایل آنلاین امن و بدون افزونه را در هر برنامه 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 استفاده میکنید، مراحل آمادهسازی یکسان هستند:
-
افزودن بسته اسکریپت Doconut
Doconut اسکریپت نمایشگر سبکوزنی را بر روی CDN خود میزبانی میکند. خط زیر را به صفحه قالب خود (مثلاً_Layout.cshtmlیاSite.Master) اضافه کنید:<script src="https://doconut.app/viewer.min.js"></script> -
ایجاد عنصر جایدار
نمایشگر یک canvas را داخل هر<div>که مشخص میکنید تزریق میکند. مثال برای Razor:<div id="docViewer" style="width:100%; height:800px;"></div>برای WebForms، یک
<asp:Panel>باrunat="server"قرار دهید وID="docViewer"بدهید. -
ارجاع به CSS Doconut (اختیاری)
اگر میخواهید نوار ابزار و تم پیشفرض را داشته باشید، فایل CSS را شامل کنید:<link rel="stylesheet" href="https://doconut.app/viewer.min.css" />
این تمام داراییهای استاتیکی است که نیاز دارید. بقیه کارها در کد سمت سرور (بارگذاری، رمزنگاری، تولید توکن) و یک اسکریپت کوچک سمت کلاینت انجام میشود.
3. ساخت نقطه انتهایی بارگذاری امن – AES‑256، SSL و حذف خودکار
نمایشگر هرگز بهصورت مستقیم به فایلهای موجود در سیستم شما دسترسی ندارد. در عوض، سند را به یک محل ذخیرهسازی موقت و رمزنگاریشده بارگذاری میکنید که Doconut بهصورت درخواست‑به‑درخواست میخواند. در ادامه توصیف سطح بالا برای ASP.NET Core آمده است؛ همان ایدهها برای MVC و WebForms نیز اعمال میشود.
جریان کار سمت سرور
- دریافت فایل بارگذاریشده – از
IFormFile(یاHttpPostedFileدر WebForms) برای دریافت سند از کلاینت استفاده کنید. - رمزنگاری فایل با AES‑256 – پیش از ذخیرهسازی، جریان را با کتابخانهای معتبر مثل
System.Security.Cryptography.Aesرمزنگاری کنید. بلوک رمزنگاریشده را در مکانی امن (مثلاً Azure Blob Storage با رمزنگاری سمت سرور فعال، یا یک سطل S3 با SSE‑AES256) ذخیره کنید. - تولید URL امضاشده کوتاهمدت – URLی ایجاد کنید که تنها چند دقیقه (مثلاً 5 دقیقه) معتبر باشد. این URL باید HTTPS باشد و شامل توکنی رمزنگاریشده باشد که Doconut بتواند اعتبارسنجی کند. اکثر ارائهدهندگان ذخیرهسازی ابری قابلیت «URL پیشامضا» دارند که این نیاز را برآورده میکند.
- بازگرداندن URL امضاشده به کلاینت – پاسخ JSON شامل URL را بفرستید. کلاینت این URL را به نمایشگر Doconut میدهد.
- زمانبندی حذف خودکار – پس از انقضای 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 شامل گزینههای چاپ و استخراج است که کیفیت و چیدمان اصلی فایل منبع را حفظ میکند.