Хостинг .NET — размещение веб-приложений, написанных на C#, F# или VB.NET с использованием фреймворка ASP.NET Core. В отличие от PHP-хостинга, .NET-приложения запускаются как постоянные процессы, а не перезапускаются при каждом запросе. Это обеспечивает высокую производительность — ASP.NET Core стабильно входит в топ-5 самых быстрых веб-фреймворков в тестах TechEmpower.
Как работает
ASP.NET Core приложение запускается через встроенный веб-сервер Kestrel. Kestrel принимает HTTP-запросы напрямую или через reverse proxy (Nginx или IIS). На Linux Nginx выступает как reverse proxy: принимает внешние запросы и передаёт их Kestrel на локальном порту (обычно 5000 или 5001).
На Windows сервере приложение запускается под управлением Microsoft IIS через модуль ASP.NET Core Module (ANCM), который управляет процессом и перезапускает его при сбоях. На Linux приложение запускается как systemd-сервис.
Деплой выполняется через публикацию (dotnet publish), которая компилирует приложение в исполняемый файл с зависимостями. Runtime-зависимый деплой требует установленного .NET Runtime на сервере; self-contained деплой включает рантайм в артефакт сборки (размер ~60–100 МБ).
История
.NET Framework выпущен Microsoft в 2002 году. В 2016 году Microsoft анонсировала кроссплатформенный .NET Core, работающий на Linux и macOS. В 2020 году .NET Core и .NET Framework объединились в .NET 5. На 2024 год актуальны .NET 8 (LTS) и .NET 9.
На что обращать внимание
Убедитесь, что на сервере установлена нужная версия .NET Runtime: dotnet --list-runtimes. ASP.NET Core 8.0 работает на Ubuntu 20.04+, Debian 11+, CentOS Stream 9. Для Windows-специфичных компонентов (Windows Authentication, COM-объекты) нужен Windows Server. Производительность .NET на Linux сопоставима с Windows при идентичном железе.
Деплой на IIS (Windows Server)
На VPS Windows деплой через WebDeploy или копирование файлов. Модуль ASP.NET Core (ANCM) управляет процессом и перезапускает при сбоях. IIS Application Pool — режим No Managed Code.
Мониторинг .NET приложений
Prometheus с dotnet-runtime-metrics и Grafana — стандарт для self-hosted. Sentry обрабатывает исключения. Health check: app.MapHealthChecks("/health"). Мониторинг сервера — через Netdata.
Типичные проблемы
Установить .NET Runtime вместо ASP.NET Core Runtime — распространённая ошибка. Проверять: dotnet --list-runtimes. Права на папку приложения для systemd-сервиса — чтение и запись для лог-файлов.
Windows vs Linux для .NET Core
.NET Core 3.1+ / .NET 5+: одинаковая производительность на Linux и Windows. Linux дешевле (нет лицензии) и потребляет меньше RAM. Linux VPS за $5/мес vs Windows VPS за $15–25/мес. Для нового .NET Core проекта предпочтителен Linux.
Мониторинг .NET приложений на Linux
dotnet-counters monitor -n myapp --counters System.Runtime — встроенный мониторинг runtime. Prometheus + prometheus-net: метрики GC, threads, requests. .NET EventPipe для low-overhead профилировки. Sentry.NET SDK для сбора необработанных исключений.