
Como Configurar Doconut para Implantações de Servidor Distribuído
Usar Doconut na Configuração de Servidor Distribuído
Quando você precisa servir PDFs, arquivos do Office, desenhos CAD ou imagens a partir de um cluster de nós ASP.NET Core, o modo distribuído do Doconut permite que cada nó leia os mesmos artefatos de página de um local compartilhado. O resultado é um visualizador horizontalmente escalável e seguro que funciona atrás de um balanceador de carga sem sessões persistentes.
Por que o Modo Distribuído Importa
- Escalabilidade – Cada nó pode publicar páginas em um compartilhamento UNC ou na nuvem; qualquer outro nó pode servi‑las instantaneamente.
- Segurança – Os artefatos são armazenados criptografados na pasta compartilhada; o visualizador valida cada solicitação contra o token de sessão
ASP.NET. - Zero dependência do Office – O plugin Converter roda no servidor, convertendo Word, Excel, PowerPoint, CAD e imagens para PDF ou imagens sem instalar o Microsoft Office.
Essas características permitem que DMS corporativos, CRM ou portais de e‑learning mantenham o processamento de documentos dentro do back‑end .NET enquanto escalam para dezenas de contêineres.
Armazenamento Compartilhado para o Modo Distribuído
No modo distribuído, o Doconut espera que os artefatos de página (páginas PDF, blocos de imagem, etc.) sejam gravados em um local de armazenamento acessível por todos os nós da fazenda – um compartilhamento de rede, contêiner Azure Blob, bucket S3 ou qualquer outro armazenamento compartilhado suportado pelo recurso Progressive Cloud Publishing. O visualizador procura automaticamente a pasta de artefatos que corresponde ao token de segurança por documento, portanto nenhum código adicional é necessário além de garantir que todos os nós tenham o mesmo acesso de leitura‑escrita ao armazenamento escolhido.
Dica: Use o mesmo caminho UNC (por exemplo,
\\fileserver\doconut) ou URL da nuvem em todas as configurações de instância e mantenha as permissões da pasta consistentes. O comportamentoUsePerTokenSubfoldersestá habilitado por padrão e isola as páginas de cada documento.
Registrando Doconut e Middleware de Sessão
Doconut depende do estado de sessão do ASP.NET Core para a segurança por documento. Um cache distribuído é necessário apenas quando você usa um projeto minimal‑API; MVC ou Razor Pages já adicionam um.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // a sessão precisa de um cache
builder.Services.AddSession(); // Doconut valida contra a sessão
app.UseSession(); // Deve ser executado antes de UseDoconut()
app.UseDoconutResources(); // Registra recursos estáticos do visualizador
app.Map("/doconut", branch => branch.UseDoconut());
Caminhos Personalizados (opcional)
Se outra rota conflitar com /doconut, altere os caminhos uma única vez e mantenha o cliente BasePath sincronizado:
builder.Services.AddDoconut(options =>
{
options.MiddlewarePath = "/docs-engine";
options.ResourcesPath = "/docs-assets";
});
app.UseDoconutResources();
app.Map("/docs-engine", branch => branch.UseDoconut());
Nunca anteceda MiddlewarePath ou ResourcesPath com uma barra inicial; o visualizador adiciona a barra automaticamente.
Juntando Tudo: Exemplo Minimal‑API
Abaixo está uma configuração compacta e pronta para produção que combina o requisito de armazenamento compartilhado, o tratamento de sessão e o registro do Doconut.
var builder = WebApplication.CreateBuilder(args);
// 1️⃣ Registro central do Doconut
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(
AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
options.MiddlewarePath = "/doconut";
options.ResourcesPath = "/doconut-res";
});
// 2️⃣ Sessão e cache (necessário para segurança)
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession();
var app = builder.Build();
app.UseRouting();
app.UseSession();
app.UseDoconutResources(); // pacote estático do visualizador
app.Map("/doconut", branch => branch.UseDoconut());
app.Run();
Implante este binário em quantos contêineres Docker ou serviços Windows desejar, atrás de um balanceador de carga. Desde que cada instância possa alcançar o local de armazenamento compartilhado configurado para os artefatos de página, o visualizador buscará as páginas de qualquer nó, e uploads/conversões sobreviverão a saltos entre nós.
Implantando Atrás de um Balanceador de Carga
- Exponha a mesma URL base (por exemplo, ` em cada nó.
- Desative sessões persistentes – O modo distribuído do Doconut elimina a necessidade de afinidade de sessão.
- Garanta o monitoramento de saúde verificando um endpoint básico da sua aplicação (por exemplo,
/health) para que o balanceador direcione o tráfego apenas para nós ativos. - Monitore a pasta compartilhada quanto ao crescimento; o TTL padrão de 30 minutes mantém o armazenamento limitado, mas você pode ajustá‑lo conforme as necessidades de conformidade.
Com estas etapas, sua aplicação .NET intensiva em documentos pode atender a milhares de visualizadores simultâneos, manter cada página criptografada em repouso e evitar a sobrecarga de instalar o Office em cada servidor.
Pronto para experimentar? Obtenha um teste gratuito do Doconut, inicie alguns contêineres, aponte‑os para um caminho UNC compartilhado e veja o visualizador escalar sem nenhum cookie de sessão persistente.