איך להגדיר את Doconut לפריסות שרת מבוזרות
← Back to Blog••3 min read

איך להגדיר את Doconut לפריסות שרת מבוזרות

שימוש ב‑Doconut בתצורת שרת מבוזרת

כאשר יש צורך לשרת קבצי PDF, קבצי Office, שרטוטי CAD או תמונות ממחסנית של צמתים ב‑ASP.NET Core, מצב מבוזר של Doconut מאפשר לכל צומת לקרוא את אותם artefacts של דפים ממיקום משותף. התוצאה היא מציג אופקי‑ניתן‑הרחבה, מאובטח, הפועל מאחורי מאזן עומסים ללא הפעלות דביקות.

למה מצב מבוזר חשוב

  • קנה‑מידה – כל צומת יכול לפרסם דפים ל‑UNC או לשיתוף ענן; כל צומת אחר יכול לשרת אותם מיידית.
  • אבטחה – artefacts מאוחסנים מוצפנים בתיקייה המשותפת; המציג מאמת כל בקשה מול אסימון הסשן של ASP.NET.
  • ללא תלות ב‑Office – תוסף ה‑Converter פועל בצד השרת, ממיר Word, Excel, PowerPoint, CAD ותמונות ל‑PDF או לתמונות ללא צורך בהתקנת Microsoft Office.

תכונות אלו מאפשרות למערכות DMS, CRM או פורטלי למידה אלקטרונית ארגוניים לשמור על עיבוד מסמכים בגבול ה‑.NET תוך קנה‑מידה של עשרות קונטיינרים.

אחסון משותף למצב מבוזר

במצב מבוזר Doconut מצפה ש‑artefacts של הדפים (דפי PDF, אריחי תמונות וכו׳) ייכתבו למיקום אחסון שנגיש לכל צומת בחווה – שיתוף רשת, מכולת Azure Blob, דלי S3, או כל אחסון משותף אחר הנתמך על‑ידי תכונת פרסום ענן מתקדמת. המציג מחפש אוטומטית את תיקיית ה‑artifact שתואמת לאסימון האבטחה של כל מסמך, ולכן אין צורך בקוד נוסף מעבר להבטחת גישה קריאה‑כתיבה זהה לכל הצמתים למיקום שנבחר.

טיפ: השתמש באותו נתיב UNC (לדוגמה, \\fileserver\doconut) או ב‑URL של הענן בכל תצורת מופע ושמור על הרשאות התיקייה עקביות. ההתנהגות של UsePerTokenSubfolders מופעלת כברירת מחדל ומבודדת את הדפים של כל מסמך.

רישום Doconut ובינאריות Session Middleware

Doconut מסתמך על מצב סשן של ASP.NET Core לאבטחת מסמכים ברמת‑מסמך. מטמון מבוזר נדרש רק כאשר משתמשים בפרויקט minimal‑API; MVC או Razor Pages כבר מוסיפים אחד.

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

builder.Services.AddDistributedMemoryCache(); // session צריך cache
builder.Services.AddSession();                 // Doconut מאמת נגד session

app.UseSession();               // חייב לרוץ לפני UseDoconut()
app.UseDoconutResources();      // רושמת static viewer assets
app.Map("/doconut", branch => branch.UseDoconut());

נתיבים מותאמים (אופציונלי)

אם נתיב אחר מתנגש עם /doconut, שנה את הנתיבים פעם אחת ושמור על סנכרון עם ה‑client BasePath:

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

לעולם אל תוסיף קו נטוי מוביל לפני MiddlewarePath או ResourcesPath; המציג מוסיף את הקו באופן אוטומטי.

איחוד הכל יחד: דוגמת Minimal‑API

להלן הגדרה קומפקטית, מוכנה לייצור, המשלבת את דרישת האחסון המשותף, טיפול בסשן ורישום Doconut.

var builder = WebApplication.CreateBuilder(args);

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

// 2️⃣ Session ו‑cache (נדרש לאבטחה)
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession();

var app = builder.Build();

app.UseRouting();
app.UseSession();
app.UseDoconutResources();                     // static viewer חבילה
app.Map("/doconut", branch => branch.UseDoconut());

app.Run();

פרוס בינארי זה לכל מספר קונטיינרים של Docker או שירותי Windows מאחורי מאזן עומסים. כל עוד כל מופע יכול להגיע למיקום האחסון המשותף שהגדרת עבור artefacts של הדפים, המציג ימשוך דפים מכל צומת, והעלאות/המרות ישרדו קפיצות צמתים.

פריסה מאחורי מאזן עומסים

  1. חשוף את אותה כתובת בסיס (לדוגמה, http://yourdomain.com על כל צומת).
  2. השבת הפעלות דביקות – מצב מבוזר של Doconut מבטל את הצורך בקשריות סשן.
  3. ודא ניטור בריאות שבודק נקודת קצה בסיסית של היישום שלך (לדוגמה, /health) כך שהמאזן ינתב תנועה רק לצמתים פעילים.
  4. נטר את התיקייה המשותפת לצמיחה; TTL ברירת המחדל של 30 דקות מגביל את האחסון, אך ניתן להתאמה לפי דרישות ציות.

עם הצעדים הללו, יישום .NET אינטנסיבי‑מסמכים שלך יכול לשרת אלפי צופים במקביל, לשמור כל דף מוצפן במנוחה, ולהימנע מהעומס של התקנת Office על כל שרת.

מוכן לנסות? קבל גרסת ניסיון חינמית של Doconut, הפעל כמה קונטיינרים, הפנה אותם לנתיב UNC משותף, וצפה במציג מתרחב ללא קוביית סשן דביקה אחת.

#dotnet#distributed#web‑farm#document‑viewer#scaling#מבוזר#חוות‑אתרים#מציג‑מסמכים#קנה‑מידה