Представьте: .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







