Cara Mengonfigurasi Doconut untuk Penyebaran Server Terdistribusi
← Back to Blog••4 min read

Cara Mengonfigurasi Doconut untuk Penyebaran Server Terdistribusi

Gunakan Doconut dalam Konfigurasi Server Terdistribusi

Ketika Anda perlu menyajikan PDF, file Office, gambar CAD, atau gambar dari sekumpulan node ASP.NET Core, mode terdistribusi Doconut memungkinkan setiap node membaca artefak halaman yang sama dari lokasi bersama. Hasilnya adalah penampil yang dapat diskalakan secara horizontal, aman, dan berfungsi di belakang load balancer tanpa sesi lengket.

Mengapa Mode Terdistribusi Penting

  • Skalabilitas – Setiap node dapat mempublikasikan halaman ke UNC atau berbagi cloud; node lain dapat menyajikannya secara instan.
  • Keamanan – Artefak disimpan terenkripsi di folder bersama; penampil memvalidasi setiap permintaan terhadap token sesi ASP.NET.
  • Tanpa ketergantungan Office – Plugin Converter berjalan di sisi server, mengonversi Word, Excel, PowerPoint, CAD, dan gambar ke PDF atau gambar tanpa menginstal Microsoft Office.

Karakteristik ini memungkinkan DMS perusahaan, CRM, atau portal e‑learning menjaga pemrosesan dokumen di dalam back‑end .NET sambil diskalakan ke puluhan kontainer.

Penyimpanan Bersama untuk Mode Terdistribusi

Dalam mode terdistribusi Doconut mengharapkan artefak halaman (halaman PDF, ubin gambar, dll.) ditulis ke lokasi penyimpanan yang dapat dijangkau oleh setiap node di farm – berbagi jaringan, kontainer Azure Blob, bucket S3, atau penyimpanan bersama lain yang didukung oleh fitur Progressive Cloud Publishing. Penampil secara otomatis mencari folder artefak yang cocok dengan token keamanan per‑dokumen, sehingga tidak diperlukan kode tambahan selain memastikan semua node memiliki akses baca‑tulis yang sama ke penyimpanan yang dipilih.

Tip: Gunakan jalur UNC yang sama (mis., \\fileserver\doconut) atau URL cloud di setiap konfigurasi instance dan pertahankan izin folder secara konsisten. Perilaku UsePerTokenSubfolders diaktifkan secara default dan mengisolasi halaman setiap dokumen.

Mendaftarkan Doconut dan Middleware Sesi

Doconut bergantung pada status sesi ASP.NET Core untuk keamanan per‑dokumen. Cache terdistribusi hanya diperlukan ketika Anda menggunakan proyek minimal‑API; MVC atau Razor Pages sudah menambahkannya.

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

builder.Services.AddDistributedMemoryCache(); // sesi membutuhkan cache
builder.Services.AddSession();                 // Doconut memvalidasi terhadap sesi

app.UseSession();               // Harus dijalankan sebelum UseDoconut()
app.UseDoconutResources();      // Mendaftarkan aset penampil statis
app.Map("/doconut", branch => branch.UseDoconut());

Jalur Kustom (opsional)

Jika rute lain bentrok dengan /doconut, ubah jalur sekali dan sinkronkan klien BasePath:

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

Jangan pernah menambahkan garis miring di depan MiddlewarePath atau ResourcesPath; penampil menambahkan garis miring secara otomatis.

Menyusun Semua: Contoh Minimal‑API

Berikut adalah pengaturan ringkas yang siap produksi yang menggabungkan kebutuhan penyimpanan bersama, penanganan sesi, dan pendaftaran Doconut.

var builder = WebApplication.CreateBuilder(args);

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

// 2️⃣ Sesi dan cache (diperlukan untuk keamanan)
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession();

var app = builder.Build();

app.UseRouting();
app.UseSession();
app.UseDoconutResources();                     // paket penampil statis
app.Map("/doconut", branch => branch.UseDoconut());

app.Run();

Sebarkan binary ini ke sejumlah kontainer Docker atau layanan Windows di belakang load balancer. Selama setiap instance dapat menjangkau lokasi penyimpanan bersama yang Anda konfigurasikan untuk artefak halaman, penampil akan mengambil halaman dari node mana pun, dan unggahan/konversi akan bertahan melintasi hop node.

Menyebarkan di Belakang Load Balancer

  1. Paparkan URL dasar yang sama (mis., ` pada setiap node.
  2. Nonaktifkan sesi lengket – Mode terdistribusi Doconut menghilangkan kebutuhan akan afinitas sesi.
  3. Pastikan pemantauan kesehatan memeriksa endpoint dasar aplikasi Anda (mis., /health) sehingga balancer hanya mengarahkan lalu lintas ke node yang aktif.
  4. Pantau folder bersama untuk pertumbuhan; TTL default 30 menit menjaga penyimpanan terbatas, tetapi Anda dapat menyesuaikannya sesuai kebutuhan kepatuhan.

Dengan langkah-langkah ini, aplikasi .NET yang intensif dokumen Anda dapat melayani ribuan penampil bersamaan, menjaga setiap halaman terenkripsi saat istirahat, dan menghindari beban tambahan menginstal Office pada setiap server.

Siap mencobanya? Dapatkan percobaan gratis Doconut, jalankan beberapa kontainer, arahkan ke jalur UNC bersama, dan saksikan penampil berkembang tanpa satu pun cookie sesi‑lengket.

#dotnet#distributed#web‑farm#document‑viewer#scaling#terdistribusi#ladang-web#penampil-dokumen#skalabilitas