Уявіть: .NET-команда отримує завдання побудувати корпоративний портал з мультисайтовою структурою, розмежуванням прав та headless API для мобільних застосунків. Вибір падає на Umbraco — CMS на ASP.NET Core з відкритим кодом. Але без правильної архітектури та налаштування продуктивності проєкт перетворюється на болото з постійними N+1 запитами та часом відгуку > 2 секунд. Ми стикалися з цим не раз і виробили підхід, який дає TTFB <200 мс на Umbraco 13.
Наприклад, нещодавно до нас звернулася компанія з мультисайтовою структурою (5 доменів) та headless-інтеграціями для мобільних застосунків. Після аудиту з'ясувалося, що на старому рішенні N+1 запити викликали лаги. Ми перепроєктували архітектуру, впровадили NuCache та Repository pattern — TTFB впав з 1.2 с до 180 мс, а навантаження на базу знизилося в 4 рази.
Чому Umbraco підходить для корпоративних сайтів?
Umbraco — CMS на .NET 8 з відкритим кодом. Працює на SQL Server або SQLite, підтримує кластеризацію. Добре підходить для корпоративних сайтів, порталів, multisite-інфраструктур — там, де замовник прив'язаний до Microsoft-стеку або потребує headless CMS з enterprise-можливостями. На відміну від WordPress, Umbraco надає strongly-typed моделі та вбудований headless Delivery API. Економія на ліцензіях порівняно з пропрієтарними CMS може сягати 70%. Наприклад, Sitecore коштує від $100 000 на рік, а Umbraco — безкоштовно (MIT-ліцензія).
За тестами, Umbraco з NuCache видає TTFB <200 мс, тоді як типова WordPress установка — 500–800 мс. Це досягається завдяки вбудованому кешуванню та генерації моделей на етапі компіляції.
Порівняння Umbraco з іншими CMS: WordPress, Sitecore, Drupal
| Критерій | Umbraco | WordPress | Sitecore |
|---|---|---|---|
| Тип моделей | Strongly-typed (ModelsBuilder) | Динамічні (WP_Query) | Strongly-typed, але важкий |
| Headless API | Вбудований Delivery API | Плагіни (WPGraphQL) | Experience Edge (дорого) |
| Продуктивність | TTFB <200 мс (NuCache) | TTFB 500–800 мс (без кешування) | TTFB <300 мс (з кешем) |
| Ліцензія | Безкоштовно (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>();
}
} Strongly-typed моделі та headless 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: GET /umbraco/delivery/api/v2/content?contentType=article.
Як налаштувати headless Delivery API? Покрокова інструкція
- Увімкніть Delivery API в appsettings.json.
- Задайте API-ключ, якщо потрібна авторизація.
- В адмін-панелі позначте типи контенту, доступні через API.
- Налаштуйте CORS для зовнішніх клієнтів.
- (Опціонально) Увімкніть кешування на рівні CDN.
Процес розробки сайту на Umbraco
| Етап | Тривалість | Що робимо |
|---|---|---|
| Аналітика та прототипування | 1–2 тижні | Збираємо вимоги, створюємо карту типів контенту, UX-прототип |
| Проєктування архітектури | 1 тиждень | Проєктуємо структуру рішення, налаштовуємо NuCache, плануємо інтеграції |
| Реалізація | 2–4 тижні | Верстаємо шаблони, розробляємо Surface та Render контролери, налаштовуємо Delivery API |
| Тестування | 1 тиждень | Проводимо навантажувальне тестування, перевіряємо Core Web Vitals |
| Деплой та передача | 3–5 днів | Налаштовуємо CI/CD, деплоїмо на production, навчаємо редакторів |
Терміни та обсяг робіт
| Обсяг проєкту | Терміни |
|---|---|
| Корпоративний сайт (10–15 типів контенту) | 3–5 тижнів |
| З headless API та інтеграціями | 6–10 тижнів |
| Редизайн існуючого інстансу | від 2 тижнів |
Вартість розраховується індивідуально на основі обсягу робіт та складності інтеграцій. Отримайте консультацію для точної оцінки.
Що входить у результат
- Повністю налаштований Umbraco на вашому хостингу або в хмарі.
- Вихідний код (репозиторій Git) з архітектурою, готовою до масштабування.
- Документація за типами контенту та API.
- Навчання редакторів (до 4 годин).
- Гарантія 3 місяці на виявлені баги.
- Рекомендації щодо кешування та оптимізації продуктивності.
Наш досвід: понад 5 років розробки на Umbraco, реалізовано 15+ проєктів, середня оцінка клієнтів — 4.9/5. Використовуємо лише ліцензійне ПЗ та дотримуємося best practices. Зв'яжіться з нами для консультації — допоможемо підібрати оптимальне рішення.
Офіційна документація Umbraco: Umbraco CMS Documentation







