Skip to content

.NET

Общее описание

.NET — это бесплатная, кроссплатформенная и высокопроизводительная платформа с открытым исходным кодом для разработки программного обеспечения, созданная Microsoft. Она поддерживает несколько языков программирования, включая C#, F#, VB.NET, а также богатую экосистему библиотек и инструментов.

Основные особенности:

  • Кроссплатформенность (Windows, Linux, macOS)
  • Поддержка современных веб-стандартов
  • Высокая производительность
  • Сильная типизация и безопасность
  • Поддержка ASP.NET Core, Blazor, MAUI, WPF, WinForms и т.д.
  • Интеграция с Visual Studio, VS Code и другими IDE
  • Поддержка контейнеризации и облачных решений (Azure, AWS)

Версии .NET

Версия Год выпуска Тип Примечания
.NET Framework 2002 Только Windows Устаревшая, используется в legacy проектах
.NET Core 2016 Кроссплатформенный Заменён на .NET 5+
.NET 5 2020 Единая платформа Начало унификации
.NET 6 2021 LTS Long-Term Support
.NET 7 2022 STS Standard Term Support
.NET 8 2023 LTS Последняя стабильная версия с поддержкой до 2026

Рекомендуется использовать .NET 8, так как это последняя LTS-версия на момент написания.


Установка .NET

На Windows:

Скачайте установщик с https://dotnet.microsoft.com/download
Установите SDK или Runtime в зависимости от целей.

Проверка:

dotnet --version

На Ubuntu/Debian:

wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

sudo apt update
sudo apt install -y dotnet-sdk-8.0

На CentOS/RHEL:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/$(rpm -E %{rhel})/packages-microsoft-prod.rpm
sudo dnf install -y dotnet-sdk-8.0

На macOS через Homebrew:

brew install --cask dotnet-sdk

Менеджеры версий

1. .NET Multi-platform Installer (dotnet-install scripts)

Позволяет устанавливать и переключать версии .NET без административных привилегий.

Скрипты доступны на GitHub:
https://github.com/dotnet/install-scripts


Основные компоненты .NET

1. CLI (.NET Command Line Interface)

Инструмент командной строки для управления проектами и пакетами.

Основные команды:

dotnet new console -n MyApp    # Создать консольное приложение
dotnet build                     # Сборка проекта
dotnet run                       # Запуск
dotnet test                      # Запуск тестов
dotnet publish                   # Публикация
dotnet nuget push                # Публикация пакета

2. C# (язык программирования)

Основной язык программирования для .NET.

Пример "Hello World":

using System;

class Program {
    static void Main() {
        Console.WriteLine("Hello, World!");
    }
}

3. .NET Runtime

Отвечает за выполнение .NET-приложений. Включает JIT-компилятор, сборку мусора и другие компоненты.

4. Common Language Runtime (CLR)

Виртуальная машина, выполняющая IL-код (Intermediate Language).

5. Base Class Library (BCL)

Стандартная библиотека классов .NET.


Типы проектов в .NET

Тип Описание
Console App Консольные приложения
ASP.NET Core Web App Веб-приложения и API
Blazor App SPA с C# вместо JavaScript
Class Library Библиотеки классов
WPF App Приложения Windows Presentation Foundation
WinForms App Windows Forms приложения
MAUI App Кроссплатформенные мобильные и десктоп-приложения
Xamarin App Для мобильной разработки (устаревший)
Worker Service Фоновые сервисы
Unit Test Project Проекты для тестирования

ASP.NET Core

ASP.NET Core — это модульная, высокопроизводительная фреймворк-система для создания веб-приложений и сервисов.

Основные компоненты:

  • Kestrel — встроенный веб-сервер
  • Middleware pipeline — система обработки запросов
  • Razor Pages / MVC — модели представления
  • Entity Framework Core — ORM для работы с базами данных
  • SignalR — реальное время (чаты, уведомления)
  • Identity — система авторизации и регистрации

Entity Framework Core

ORM для работы с реляционными и нереляционными базами данных.

Пример:

public class Blog {
    public int Id { get; set; }
    public string Name { get; set; }
}

public class BlogContext : DbContext {
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=TestDB;Trusted_Connection=True;");
    }
}

Работа с файлами

using System.IO;

File.WriteAllText("test.txt", "Hello, World!");
string content = File.ReadAllText("test.txt");
Console.WriteLine(content);

Работа с JSON

using System.Text.Json;

var person = new { Name = "Alice", Age = 30 };
string json = JsonSerializer.Serialize(person);
var deserialized = JsonSerializer.Deserialize<dynamic>(json);

Работа с HTTP клиентами

using System.Net.Http;
using System.Threading.Tasks;

var client = new HttpClient();
var response = await client.GetAsync("https://api.example.com/data");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);

Безопасность

Основные рекомендации:

  • Использовать HTTPS
  • Хранить секреты через Secret Manager или Azure Key Vault
  • Использовать Identity для аутентификации
  • Проверять входные данные
  • Использовать Policies и Roles для контроля доступа
  • Отключать отладочные страницы в production

Логирование и диагностика

Использование ILogger:

public class MyService {
    private readonly ILogger<MyService> _logger;

    public MyService(ILogger<MyService> logger) {
        _logger = logger;
    }

    public void DoWork() {
        _logger.LogInformation("Doing work...");
    }
}

Поддерживаемые провайдеры: - Console - Debug - EventSource - Azure Application Insights - Serilog - NLog


Тестирование

Юнит-тестирование:

  • xUnit.net
  • NUnit
  • MSTest

Пример с xUnit:

public class MathTests {
    [Fact]
    public void Add_TwoNumbers_ReturnsSum() {
        var result = 2 + 2;
        Assert.Equal(4, result);
    }
}

Запуск:

dotnet test

CI/CD и автоматизация

.NET активно используется в системах CI/CD: - GitHub Actions - Azure DevOps - GitLab CI - Jenkins - Docker - Kubernetes

Также можно использовать: - MSBuild — система сборки - dotnet CLI — управление проектами - NuGet — менеджер пакетов


Документирование

Swagger/OpenAPI:

Для API-проектов часто используется Swagger UI.

app.UseSwagger();
app.UseSwaggerUI();

XML Documentation:

Генерация XML-документации из комментариев:

<PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

Производительность и оптимизация

Рекомендации:

  • Использовать Span, Memory
  • Минимизировать аллокации памяти
  • Использовать async/await
  • Использовать IHttpClientFactory
  • Использовать Caching
  • Профилировать с помощью VisualVM, dotTrace, dotMemory

Поддержка и сообщество

Официальные источники: