Razor Pages, MVC ve minimal API'ler
Görüntüleyici bir barındırma stiline bağlı değildir. Razor görünümünden veya statik bir sayfadan mount div'ini render edin ve belgeyi bir kontrolör eylemi, sayfa işleyicisi veya eşlenmiş bir uç noktadan açın.
Doconut, ASP.NET Core'da diğer her şeyin kaydedildiği şekilde kaydedilir: konteynerde bir hizmet ve boru hattında ara katman. Kimlik doğrulamanızı, kaydınızı, DI grafiğinizi ve dağıtım senaryonuzu devralır, çünkü yanlarında değil içinde çalışır.
Sorun
Çoğu belge görüntüleyici ayrı bir hizmet olarak gelir. Bu, ikinci bir dağıtım birimi, ikinci bir kimlik bilgisi seti, belgelerinizin şimdi geçtiği bir ağ atlaması ve sabaha karşı birine bildirecek ikinci bir şey demektir.
Doconut bir kütüphanedir. AddDoconut() onu hizmet koleksiyonunuza ekler; UseDoconut() onu boru hattınıza ekler. İşlem kimliğiniz altında çalışır, yapılandırmanızı görür, kaydedicinize yazar ve uygulamanızı zaten dağıtan şey tarafından dağıtılır.
Pratik sonuç, yetkilendirmenin ait olduğu yerde kalmasıdır. Kendi izin kontrolünüzden sonra OpenDocumentAsync() çağırırsınız ve görüntüleyici yalnızca size verdiğiniz şeyi render edebilir.
Yetenekler
Görüntüleyici bir barındırma stiline bağlı değildir. Razor görünümünden veya statik bir sayfadan mount div'ini render edin ve belgeyi bir kontrolör eylemi, sayfa işleyicisi veya eşlenmiş bir uç noktadan açın.
Uç noktalar boru hattınızda yaşadığı için, [Authorize] her zaman olduğu gibi çalışır. Federasyon yapılacak ikinci bir kimlik sistemi yoktur.
Belge güvenliği ASP.NET oturum durumuna dayanır, bu yüzden UseSession() UseDoconut()'dan önce kaydedilmelidir. Bu, görüntüleyicinin sizin kim olduğunuz algısının uygulukanınkisiyle aynı olduğu anlamına gelir.
Yük dengeleyicinin arkasındaki birden fazla düğüm render önbelleğini paylaşır, böylece bir düğümde açılan oturum, sonraki istek başka bir yerde gerçekleştiğinde de çalışmaya devam eder.
IIS, Kestrel veya kendinizin oluşturduğu bir konteyner görüntüsü. Entegrasyonla ilgili tek değişiklik, lisans dosyasının nerede bağlandığıdır.
Converter eklentisiyle, DocumentConverter.ConvertAsync() aynı süreçte çalışır — ikinci bir hizmet, geçici yükleme veya dönüş yok.
Entegrasyon
UserMayRead ve ResolvePath sizin kodunuzdur. İşte bu nokta: Doconut hiçbir zaman hangi belgelerin var olduğunu ya da kimlerin görebileceğini öğrenmez.
Desteklenen platformlar
// 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();Detaylar
Evet. Her ikisi de desteklenir ve aynı DI-artı-ara katman mimarisini kullanır. Versiyon‑spesifik detaylara ihtiyacınız varsa her biri için ayrı sayfalar vardır.
Hayır, bu kasıtlıdır. Entegrasyon her zaman ara katman ve JavaScript widget'ı olur, bu da Razor Pages, MVC, Web Forms ve Blazor arasında aynı entegrasyonun geçerli kalmasını sağlar, dört parçaya bölünmek yerine.
Web çiftliği ve dağıtık dağıtım, paylaşılan render önbelleği aracılığıyla desteklenir. Bir düğümde açılan belge, sonraki istekler başka bir düğüme geldiğinde de okunabilir kalır.
Hayır. Renderleme yerel olarak yapılır — Office interop'u, başsız Word yoktur ve bakıma ihtiyaç duyan COM otomasyonu yoktur.
Blazor
Widget'ın Blazor interop yaşam döngüsüne sorunsuz bir şekilde monte edildiği sunucu tarafı renderleme — Server ve WebAssembly her ikisi de desteklenir.
BlazorWord
Office kurulumu, COM interop ve sunucu tarafı otomasyon olmadan yerel DOC/DOCX/RTF/ODT işleme.
WordGeçici bir lisansın talep edilmesi birkaç dakika sürer ve tamamen kendi bilgisayarınızda çalışır. Önemli dosyalar, mevcut görüntüleyicinizi zaten bozmakta olan dosyalardır.