Razor Pages, MVC та мінімальні API
Переглядач не прив’язаний до стилю хостингу. Відобразіть елемент mount у Razor‑виді або статичній сторінці та відкрийте документ з дії контролера, обробника сторінки або мапованого кінцевого пункту.
Doconut реєструється так само, як і все інше в ASP.NET Core: сервіс у контейнері та проміжне ПЗ у конвеєрі. Він успадковує вашу автентифікацію, ваш логування, ваш граф DI та вашу історію розгортання, тому що працює всередині них, а не поруч.
Проблема
Більшість переглядачів документів постачаються як окремий сервіс. Це означає другий блок розгортання, другий набір облікових даних, мережевий перехід, через який ваші документи тепер проходять, і ще одну справу, про яку доводиться повідомляти когось о 2 ранку.
Doconut — це бібліотека. AddDoconut() додає її у вашу колекцію сервісів; UseDoconut() додає її у ваш конвеєр. Вона працює під ідентичністю вашого процесу, бачить вашу конфігурацію, записує у ваш логер і розгортається тим, хто вже розгортає ваш застосунок.
Практичний наслідок — авторизація залишається там, де має бути. Ви викликаєте OpenDocumentAsync() після власної перевірки дозволу, і переглядач може рендерити лише те, що ви йому передали.
Можливості
Переглядач не прив’язаний до стилю хостингу. Відобразіть елемент mount у 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, без headless Word і без автоматизації COM, яку треба доглядати.
Blazor
Рендеринг на боці сервера з віджетом, який чисто монтується у життєвий цикл інтеропу Blazor — підтримуються і Server, і WebAssembly.
BlazorWord
Нативне рендеринг DOC/DOCX/RTF/ODT без встановлення Office, без COM‑interop та без автоматизації на боці сервера.
WordТимчасова ліцензія займає кілька хвилин для запиту і працює повністю на вашому комп'ютері. Важливі файли — це ті, які вже порушують роботу вашого поточного переглядача.