ASP.NET Core

Üç ara katman çağrısı, yeniden yazma değil

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.

3
entegrasyon için ara katman çağrıları
75
kutudan çıkan dosya uzantıları
2
dağıtım hedefleri: Windows, Docker

Sorun

Kimsenin bütçelemediği entegrasyon vergisi

Ç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

Ara katmanın size sundukları

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.

Kimlik doğrulamanız, değişmeden

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.

Oturuma dayalı belge güvenliği

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.

Web çiftliği hazır

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.

Windows ya da Docker

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.

Aynı boru hattında dönüşüm

Converter eklentisiyle, DocumentConverter.ConvertAsync() aynı süreçte çalışır — ikinci bir hizmet, geçici yükleme veya dönüş yok.

Entegrasyon

Kayıt ve açık bir uç nokta

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

Razor PagesMVCMinimal APIs.NET 8.NET 6WindowsDocker
csharp
// 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

Kayıt sırası ve dikkat edilmesi gerekenler

  • UseSession() UseDoconut()'dan önce gelmelidir. Belge güvenliği ona bağlıdır.
  • UseDoconutResources() UseDoconut()'dan önce gelmelidir ve uygulamanın geri kalanıyla aynı kimlik doğrulamasının arkasında olmalıdır.
  • Razor görünümü Doconut.Viewer'ı enjekte eder ve ReferenceCss / ReferenceScripts'i yayar; jQuery, görüntüleyici scriptlerinden önce yüklenmelidir.
  • options.LicensePath'i yapılandırmadan ayarlayın, böylece lisans dosyası görüntüye gömülmek yerine bir gizli olarak bağlanabilir.

Sıkça sorulan sorular

.NET 6 ile .NET 8'de de çalışıyor mu?

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.

Bir Razor bileşeni ya da etiket yardımcısı var mı?

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.

Yük dengeleyicinin arkasında nasıl davranır?

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.

Sunucuda Office yüklü olması gerekiyor mu?

Hayır. Renderleme yerel olarak yapılır — Office interop'u, başsız Word yoktur ve bakıma ihtiyaç duyan COM otomasyonu yoktur.

Kendi belgelerinizde deneyin

Geç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.