צוות .NET מקבל משימה לבנות פורטל ארגוני עם מבנה רב-אתרי, גישת מבוססת-תפקידים ו-API ללא ממשק (headless) עבור אפליקציות מובייל. הבחירה נופלת על Umbraco — CMS בקוד פתוח על ASP.NET Core. אבל ללא ארכיטקטורה נכונה וכיוונון ביצועים, הפרויקט הופך לביצה עם שאילתות N+1 קבועות וזמני תגובה מעל 2 שניות. נתקלנו בזה פעמים רבות ופיתחנו גישה שמניבה TTFB <200 ms על Umbraco 13.
לדוגמה, חברה עם מבנה רב-אתרי (5 דומיינים) ואינטגרציות headless עבור אפליקציות מובייל פנתה אלינו. לאחר בדיקה, גילינו ששאילתות N+1 בפתרון הישן גרמו לפיגורים. עיצבנו מחדש את הארכיטקטורה, יישמנו NuCache ותבנית Repository — TTFB ירד מ-1.2 שניות ל-180 ms, ועומס מסד הנתונים קטן פי ארבעה.
למה Umbraco לאתרים ארגוניים?
Umbraco הוא CMS על .NET 8 עם רישיון MIT בקוד פתוח. הוא רץ על SQL Server או SQLite ותומך באשכולות (clustering). הוא מתאים היטב לאתרים ארגוניים, פורטלים ותשתיות רב-אתריות — במיוחד כאשר הלקוח קשור לסט של Microsoft או זקוק ל-CMS headless עם יכולות ארגוניות. בניגוד ל-WordPress, Umbraco מספק מודלים עם טיפוסים חזקים ו-Delivery API מובנה ללא ממשק. החיסכון ברישוי בהשוואה ל-CMS קנייני יכול להגיע ל-70%. לדוגמה, Sitecore עולה מ-$100,000 בשנה, בעוד Umbraco חינמי (רישיון MIT).
בבדיקות, Umbraco עם NuCache מספק TTFB <200 ms, בעוד התקנת WordPress טיפוסית מגיעה ל-500–800 ms. זה מושג באמצעות מטמון מובנה ויצירת מודלים בזמן קומפילציה.
השוואת Umbraco עם CMS אחרים: WordPress, Sitecore, Drupal
| קריטריון | Umbraco | WordPress | Sitecore |
|---|---|---|---|
| סוג מודל | טיפוסים חזקים (ModelsBuilder) | דינמי (WP_Query) | טיפוסים חזקים, אך כבד |
| API ללא ממשק | Delivery API מובנה | תוספים (WPGraphQL) | Experience Edge (יקר) |
| ביצועים | TTFB <200 ms (NuCache) | TTFB 500–800 ms (ללא מטמון) | TTFB <300 ms (עם מטמון) |
| רישיון | חינמי (MIT) | חינמי (GPL) | ~$100,000/שנה |
| תמיכה בריבוי אתרים | מובנה | דרך תוסף multisite | מובנה אך מורכב |
Umbraco מהיר פי 2-3 מ-WordPress על אירוח סטנדרטי ואינו דורש דמי רישוי בניגוד ל-Sitecore.
ארכיטקטורה והתקנה
מבנה פתרון טיפוסי:
MyProject/ ├── MyProject.Web/ ├── MyProject.Core/ └── MyProject.Tests/ קובץ התצורה המרכזי הוא Program.cs, שבו מחוברים כל הרכיבים:
// Program.cs
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.CreateUmbracoBuilder()
.AddBackOffice()
.AddWebsite()
.AddDeliveryApi()
.AddComposers()
.Build();
WebApplication app = builder.Build();
await app.BootUmbracoAsync();
app.UseUmbraco()
.WithMiddleware(u =>
{
// ...
})
.WithEndpoints(u =>
{
// ...
});
await app.RunAsync();להוספת שירותים, אנו משתמשים ב-Composers. דוגמה לרישום שירותים ומטפלים:
public class SiteComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.Services.AddScoped<IArticleService, ArticleService>();
builder.Services.AddScoped<ISitemapService, SitemapService>();
builder.AddNotificationHandler<ContentPublishedNotification, SearchIndexHandler>();
}
} מודלים עם טיפוסים חזקים ו-API ללא ממשק
Umbraco יוצר מודלים דרך ModelsBuilder. שימוש בקונטרולר:
public class ArticleController : RenderController
{
[HttpGet]
public IActionResult Index()
{
if (CurrentPage is not ContentModels.Article article)
return NotFound();
var viewModel = new ArticleViewModel
{
Title = article.Title,
Body = article.Body,
};
return CurrentTemplate(viewModel);
}
}ל-headless, אנו משתמשים ב-Delivery API, המופעל ב-appsettings.json:
{ "Umbraco": {
"CMS": {
"DeliveryApi": {
"Enabled": true,
"PublicAccess": true,
"ApiKey": "your-api-key"
}
}
} }קריאות API: MyProject/ ├── MyProject.Web/ ├── MyProject.Core/ └── MyProject.Tests/ .
איך להגדיר Delivery API ללא ממשק? שלב אחר שלב
- הפעל את Delivery API ב-appsettings.json.
- הגדר מפתח API אם נדרשת הרשאה.
- בפאנל הניהול, סמן סוגי תוכן הזמינים דרך ה-API.
- הגדר CORS עבור לקוחות חיצוניים.
- (אופציונלי) הפעל מטמון ברמת CDN.
תהליך הפיתוח של אתר Umbraco
| שלב | משך | מה אנחנו עושים |
|---|---|---|
| ניתוח ואב-טיפוס | 1–2 שבועות | איסוף דרישות, יצירת מפת סוגי תוכן, אב-טיפוס UX |
| עיצוב ארכיטקטורה | שבוע אחד | עיצוב מבנה הפתרון, הגדרת NuCache, תכנון אינטגרציות |
| יישום | 2–4 שבועות | בניית תבניות, פיתוח Surface ו-Render קונטרולרים, הגדרת Delivery API |
| בדיקות | שבוע אחד | ביצוע בדיקות עומס, אימות Core Web Vitals |
| פריסה ומסירה | 3–5 ימים | הגדרת CI/CD, פריסה לייצור, הדרכת עורכים |
לוחות זמנים והיקף
| היקף הפרויקט | לוחות זמנים |
|---|---|
| אתר ארגוני (10–15 סוגי תוכן) | 3–5 שבועות |
| עם API ללא ממשק ואינטגרציות | 6–10 שבועות |
| עיצוב מחדש של מופע קיים | החל משבועיים |
העלות מחושבת באופן אישי לפי היקף ומורכבות האינטגרציות. צרו קשר לייעוץ כדי לקבל הערכה מדויקת.
מה כלול בתוצאה
- Umbraco מוגדר במלואו על האירוח שלכם או בענן.
- קוד מקור (מאגר Git) עם ארכיטקטורה מוכנה להרחבה.
- תיעוד על סוגי תוכן ו-API.
- הדרכת עורכים (עד 4 שעות).
- אחריות ל-3 חודשים על באגים שזוהו.
- המלצות למטמון ואופטימיזציית ביצועים.
הניסיון שלנו: מעל 5 שנות פיתוח Umbraco, יותר מ-15 פרויקטים שהושלמו, דירוג לקוחות ממוצע 4.9/5. אנו משתמשים רק בתוכנה מורשית ועוקבים אחר שיטות עבודה מומלצות. צרו קשר לייעוץ — נעזור לכם למצוא את הפתרון האופטימלי.
תיעוד רשמי של Umbraco: תיעוד Umbraco CMS







