Razor Pages, MVC i minimalne API
Przeglądarka nie jest powiązana z konkretnym stylem hostingu. Renderuj element montujący z widoku Razor lub statycznej strony i otwórz dokument z akcji kontrolera, obsługi strony lub mapowanego punktu końcowego.
Doconut jest rejestrowany tak jak wszystko inne w ASP.NET Core: jako usługa w kontenerze i middleware w potoku. Dziedziczy twoją autoryzację, logowanie, graf DI oraz historię wdrożenia, ponieważ działa wewnątrz nich, a nie obok nich.
Problem
Większość przeglądarek dokumentów pojawia się jako osobna usługa. Oznacza to drugą jednostkę wdrożeniową, drugi zestaw poświadczeń, przeskok sieciowy, przez który teraz podróżują twoje dokumenty, oraz drugą rzecz, o której trzeba informować kogoś o 2 nad ranem.
Doconut jest biblioteką. AddDoconut() umieszcza ją w kolekcji usług; UseDoconut() umieszcza ją w potoku. Działa pod tożsamością twojego procesu, widzi twoją konfigurację, zapisuje do twojego loggera i jest wdrażana przez to, co już wdraża twoją aplikację.
Praktycznym konsekwencją jest to, że autoryzacja pozostaje tam, gdzie powinna być. Wywołujesz OpenDocumentAsync() po własnym sprawdzeniu uprawnień, a przeglądarka może renderować wyłącznie to, co postanowiłeś jej przekazać.
Możliwości
Przeglądarka nie jest powiązana z konkretnym stylem hostingu. Renderuj element montujący z widoku Razor lub statycznej strony i otwórz dokument z akcji kontrolera, obsługi strony lub mapowanego punktu końcowego.
Ponieważ punkty końcowe znajdują się w twoim potoku, [Authorize] działa tak, jak zawsze. Nie ma drugiego systemu tożsamości, z którym trzeba się federować.
Bezpieczeństwo dokumentów opiera się na stanie sesji ASP.NET, dlatego UseSession() musi być zarejestrowane przed UseDoconut(). Oznacza to, że pojęcie przeglądarki o tym, kim jesteś, jest takie samo jak aplikacji.
Wiele węzłów za load balancerem współdzieli pamięć podręczną renderowania, więc sesja otwarta na jednym węźle działa dalej, gdy kolejny request trafi w inne miejsce.
IIS, Kestrel lub obraz kontenera, który budujesz samodzielnie. Nic w integracji nie zmienia się między nimi, poza miejscem montowania pliku licencji.
Z wtyczką Converter, DocumentConverter.ConvertAsync() działa w tym samym procesie — bez drugiej usługi, bez tymczasowego uploadu, bez dodatkowej podróży.
Integracja
UserMayRead i ResolvePath to twój własny kod. To jest sedno: Doconut nigdy nie dowiaduje się, które dokumenty istnieją ani kto ma do nich dostęp.
Obsługiwane platformy
// 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();Szczegóły
Tak. Oba są wspierane i używają tej samej architektury DI-plus-middleware. Istnieją dedykowane strony dla każdego, jeśli potrzebujesz szczegółów specyficznych dla wersji.
Nie, i jest to zamierzone. Integracja zawsze polega na middleware plus widżet JavaScript, co utrzymuje tę samą integrację ważną we wszystkich Razor Pages, MVC, Web Forms i Blazor, zamiast fragmentować na cztery.
Farma webowa i rozproszone wdrożenie są wspierane dzięki współdzielonej pamięci podręcznej renderowania. Dokument otwarty na jednym węźle pozostaje czytelny, gdy kolejne żądania trafią do innego.
Nie. Renderowanie jest natywne — nie ma interfejsu Office, nie ma headless Word ani automatyzacji COM do obsługi.
Blazor
Renderowanie po stronie serwera z widżetem, który czysto montuje się w cyklu życia interop Blazor — obsługiwane zarówno Server, jak i WebAssembly.
BlazorWord
Natywne renderowanie DOC/DOCX/RTF/ODT bez instalacji Office, bez interopu COM i bez automatyzacji po stronie serwera.
WordTymczasowa licencja wymaga kilku minut na zamówienie i działa w pełni na Twoim komputerze. Najważniejsze pliki to te, które już psują Twój obecny podgląd.