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







