Jak nakonfigurovat Doconut pro distribuované nasazení serverů
← Back to Blog••4 min read

Jak nakonfigurovat Doconut pro distribuované nasazení serverů

Použít Doconut v distribuované konfiguraci serveru

Když potřebujete poskytovat PDF, soubory Office, CAD výkresy nebo obrázky z clusteru uzlů ASP.NET Core, distribuovaný režim Doconut umožňuje každému uzlu číst stejné artefakty stránek ze sdíleného umístění. Výsledkem je horizontálně škálovatelný, zabezpečený prohlížeč, který funguje za vyvažovačem zátěže bez sticky sessions.

Proč je distribuovaný režim důležitý

  • Škálovatelnost – Každý uzel může publikovat stránky do UNC nebo cloudového sdílení; jakýkoli jiný uzel je může okamžitě obsloužit.
  • Zabezpečení – Artefakty jsou uloženy šifrovaně ve sdílené složce; prohlížeč ověřuje každý požadavek proti ASP.NET tokenu relace.
  • Žádná závislost na Office – Plugin Converter běží na serveru a převádí Word, Excel, PowerPoint, CAD a obrázky do PDF nebo obrázků bez instalace Microsoft Office.

Tyto vlastnosti umožňují podnikovým DMS, CRM nebo e‑learning portálům provádět zpracování dokumentů uvnitř .NET backendu a současně škálovat na desítky kontejnerů.

Sdílené úložiště pro distribuovaný režim

V distribuovaném režimu Doconut očekává, že artefakty stránek (PDF stránky, dlaždice obrázků atd.) budou zapisovány do úložiště, které je přístupné všem uzlům farmy – síťové sdílení, Azure Blob kontejner, S3 bucket nebo jakékoli jiné sdílené úložiště podporované funkcí Progressive Cloud Publishing. Prohlížeč automaticky vyhledá složku s artefakty, která odpovídá tokenu zabezpečení dokumentu, takže není potřeba žádný další kód, jen zajistit, aby všechny uzly měly stejný přístup ke čtení‑zápisu k vybranému úložišti.

Tip: Použijte stejnou UNC cestu (např. \\fileserver\doconut) nebo cloudové URL v konfiguraci každé instance a udržujte oprávnění složky konzistentní. Chování UsePerTokenSubfolders je ve výchozím nastavení povoleno a izoluje stránky každého dokumentu.

Registrace Doconut a middleware relace

Doconut se spoléhá na stav relace ASP.NET Core pro zabezpečení na úrovni dokumentu. Distribuovaná cache je vyžadována pouze při použití projektu minimal‑API; MVC nebo Razor Pages ji již přidávají.

builder.Services.AddDoconut(options =>
{
    options.LicensePath = "Doconut.Viewer.lic";
});

builder.Services.AddDistributedMemoryCache(); // session potřebuje cache
builder.Services.AddSession();                 // Doconut ověřuje proti session

app.UseSession();               // Musí běžet před UseDoconut()
app.UseDoconutResources();      // Registruje statické viewer assety
app.Map("/doconut", branch => branch.UseDoconut());

Vlastní cesty (volitelné)

Pokud jiná trasa koliduje s /doconut, změňte cesty jednou a synchronizujte klienta BasePath:

builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});
app.UseDoconutResources();
app.Map("/docs-engine", branch => branch.UseDoconut());

Nikdy nepřidávejte úvodní lomítko k MiddlewarePath nebo ResourcesPath; prohlížeč přidá lomítko automaticky.

Kompletní ukázka: Minimal‑API příklad

Níže je kompaktní, produkčně připravené nastavení, které kombinuje požadavek na sdílené úložiště, zpracování relace a registraci Doconut.

var builder = WebApplication.CreateBuilder(args);

// 1️⃣ Core Doconut registrace
builder.Services.AddDoconut(options =>
{
    options.LicensePath = Path.Combine(
        AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
    options.MiddlewarePath = "/doconut";
    options.ResourcesPath  = "/doconut-res";
});

// 2️⃣ Session a cache (vyžadováno pro zabezpečení)
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession();

var app = builder.Build();

app.UseRouting();
app.UseSession();
app.UseDoconutResources();                     // statický viewer balíček
app.Map("/doconut", branch => branch.UseDoconut());

app.Run();

Nasazujte tento binární soubor do libovolného počtu Docker kontejnerů nebo Windows služeb za vyvažovačem zátěže. Dokud každá instance může dosáhnout na sdílené úložiště, které jste nakonfigurovali pro artefakty stránek, prohlížeč načte stránky z libovolného uzlu a nahrávání/převody přežijí přechody mezi uzly.

Nasazení za vyvažovačem zátěže

  1. Zveřejněte stejnou základní URL (např. ` na každém uzlu.
  2. Zakázat sticky sessions – Distribuovaný režim Doconut odstraňuje potřebu afinity relace.
  3. Zajistěte monitorování zdraví kontrolou základního koncového bodu vaší aplikace (např. /health), aby vyvažovač směroval provoz jen na živé uzly.
  4. Monitorujte sdílenou složku pro růst; výchozí TTL 30 minut omezuje velikost úložiště, ale můžete jej upravit podle požadavků na shodu.

S těmito kroky může vaše .NET aplikace zaměřená na dokumenty obsloužit tisíce souběžných uživatelů, udržet každou stránku šifrovanou v klidu a vyhnout se zátěži instalace Office na každém serveru.

Jste připraveni to vyzkoušet? Získejte bezplatnou zkušební verzi Doconut, spusťte pár kontejnerů, nasměrujte je na sdílenou UNC cestu a sledujte, jak se prohlížeč škáluje bez jediného sticky‑session cookie.

#dotnet#distributed#web‑farm#document‑viewer#scaling#distribuované#web‑farma#prohlížeč dokumentů#škálování