Уявіть: .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







