Razor Pages، MVC و APIهای مینیمال
نمایشگر به یک سبک میزبانی وابسته نیست. div سوارشده را از یک نمای Razor یا صفحه ایستا رندر کنید و سند را از یک اکشن کنترلر، یک هندلر صفحه یا یک نقطه انتهایی نقشهبرداری شده باز کنید.
Doconut به همان شیوهای که همه چیزهای دیگر در ASP.NET Core ثبت میشوند ثبت میشود: یک سرویس در کانتینر و میدلور در خط لوله. این سرویس احراز هویت، لاگگیری، گراف DI و داستان استقرار شما را به ارث میبرد، زیرا داخل آنها اجرا میشود نه در کنار آنها.
مشکل
اکثر نمایشگرهای سند بهعنوان سرویس جداگانه میآیند. این به معنای یک واحد استقرار دوم، مجموعهای دوم از اعتبارها، یک پرش شبکهای که اسناد شما اکنون از آن عبور میکنند، و یک مورد دوم برای اطلاعرسانی به کسی در ساعت ۲ بامداد است.
Doconut یک کتابخانه است. AddDoconut() آن را در مجموعه سرویسهای شما قرار میدهد؛ UseDoconut() آن را در خط لوله شما قرار میدهد. تحت هویت فرآیند شما اجرا میشود، پیکربندی شما را میبیند، در لاگر شما مینویسد و توسط هر چیزی که قبلاً برنامه شما را استقرار میدهد، استقرار میشود.
نتیجه عملی این است که احراز هویت در جای خود میماند. شما پس از بررسی مجوز خود، OpenDocumentAsync() را فراخوانی میکنید و نمایشگر فقط میتواند آنچه را که شما به آن واگذار کردهاید، رندر کند.
قابلیتها
نمایشگر به یک سبک میزبانی وابسته نیست. div سوارشده را از یک نمای Razor یا صفحه ایستا رندر کنید و سند را از یک اکشن کنترلر، یک هندلر صفحه یا یک نقطه انتهایی نقشهبرداری شده باز کنید.
بهدلیل اینکه نقطههای انتهایی در خط لوله شما هستند، [Authorize] همانطور که همیشه کار میکرد عمل میکند. هیچ سیستم هویت دوم برای ادغام وجود ندارد.
امنیت سند بر روی وضعیت جلسه ASP.NET استوار است، به همین دلیل UseSession() باید قبل از UseDoconut() ثبت شود. این به این معنی است که مفهوم نمایشگر از هویت شما همانند برنامه است.
چندین گره پشت یک لود بالانسر کش رندر را به اشتراک میگذارند، بنابراین یک جلسه که در یک گره باز شده است، هنگام دریافت درخواست بعدی در گره دیگری نیز کار میکند.
IIS، Kestrel یا یک تصویر کانتینری که خودتان میسازید. هیچ چیز درباره ادغام بین آنها تغییر نمیکند به جز جایی که فایل لایسنس سوار میشود.
با افزونه Converter، DocumentConverter.ConvertAsync() در همان فرآیند اجرا میشود — بدون سرویس دوم، بدون بارگذاری موقت، بدون رفت و برگشت.
ادغام
UserMayRead و ResolvePath کدهای خود شما هستند. این همان نکته است: Doconut هرگز نمیداند کدام اسناد وجود دارند یا چه کسی مجاز به دیدن آنهاست.
پلتفرمهای پشتیبانیشده
// Program.cs
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddSession(); // document security rides on session state
var app = builder.Build();
app.UseSession(); // call UseSession() before UseDoconut()
app.UseDoconutResources(); // must be registered before UseDoconut()
app.UseDoconut();
// Open the document server-side, behind your own authorization
app.MapPost("/api/open", async (Viewer viewer, HttpContext ctx, string documentId) =>
{
if (!await ctx.UserMayRead(documentId))
return Results.Forbid();
// The token is opaque — hand it to the widget, never log or persist it.
string token = await viewer.OpenDocumentAsync(ResolvePath(documentId));
return Results.Ok(new { token });
}).RequireAuthorization();جزئیات
بله. هر دو پشتیبانی میشوند و از همان معماری DI‑بهاضافه‑میدلور استفاده میکنند. اگر به جزئیات نسخه‑خاص نیاز دارید، صفحات اختصاصی برای هر کدام وجود دارد.
خیر، و این عمدی است. ادغام همیشه میدلور بهاضافه ویجت JavaScript است، که یکپارچگی یکسان را در Razor Pages، MVC، Web Forms و Blazor حفظ میکند بهجای تقسیم به چهار بخش.
فارم وب و استقرار توزیعشده از طریق کش رندر مشترک پشتیبانی میشوند. سندی که در یک گره باز شده است، هنگام دریافت درخواستهای بعدی در گره دیگری نیز قابل خواندن میماند.
خیر. رندر بهصورت بومی است — هیچ تعامل Office، Word بدون سر، و هیچ خودکارسازی COM برای مراقبت وجود ندارد.
Blazor
رندر سمت سرور با ویجتی که بهطور تمیز در چرخه حیات interop Blazor سوار میشود — هر دو Server و WebAssembly پشتیبانی میشوند.
Blazorورد
رندر بومی DOC/DOCX/RTF/ODT بدون نصب Office، بدون interop COM و بدون خودکارسازی سمت سرور.
وردیک مجوز موقت چند دقیقه زمان میبرد تا درخواست شود و بهصورت کامل بر روی دستگاه شما اجرا میشود. فایلهایی که مهم هستند، همان فایلهایی هستند که در حال حاضر نمایشگر فعلی شما را خراب میکنند.