C# e .NET 8: Desenvolvimento Moderno Multiplataforma com a Microsoft

A Revolução do .NET
Se você ainda associa o .NET apenas ao Windows e aplicações empresariais lentas, prepare-se para uma surpresa. Desde o lançamento do .NET Core em 2016, a Microsoft reescreveu completamente a plataforma — código aberto, rodando em Linux, macOS e Windows, com performance que supera Node.js e Go em diversos benchmarks. O .NET 8, lançado em novembro de 2023, é a versão mais rápida e completa até hoje.
Empresas como Stack Overflow, JetBlue, Adobe e Intel utilizam .NET em produção para aplicações que processam bilhões de requisições por dia.
Primeiros Passos com C#
C# (C-Sharp) é a linguagem principal do ecossistema .NET. É uma linguagem moderna, tipada, com suporte a programação funcional, orientada a objetos e assíncrona nativa:
// Instalação do .NET SDK
# Linux (Ubuntu/Debian)
wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel 8.0
# macOS
brew install dotnet-sdk
# Verificar instalação
dotnet --version # 8.0.x
# Criar um novo projeto
dotnet new console -n MeuApp
cd MeuApp
dotnet runVamos escrever nosso primeiro programa em C# moderno:
using System.Text.Json;
// Top-level statements (C# 9+)
var nome = "Mundo";
Console.WriteLine($"Olá, {nome}!");
// Record: tipo imutável com value equality
public record Pessoa(string Nome, int Idade);
var pessoa = new Pessoa("Leonardo", 28);
var json = JsonSerializer.Serialize(pessoa);
Console.WriteLine(json);
// Saída: {"Nome":"Leonardo","Idade":28}
// Pattern matching moderno (switch expression)
var classificacao = pessoa.Idade switch
{
< 12 => "Criança",
< 18 => "Adolescente",
< 60 => "Adulto",
_ => "Idoso"
};ASP.NET Core: APIs Poderosas
O ASP.NET Core é um dos frameworks web mais rápidos do mundo, superando Express.js e FastAPI em benchmarks de throughput:
// Minimal APIs — novo estilo conciso (C# 12)
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Endpoints tipados com resultados automáticos
app.MapGet("/api/usuarios", async (AppDbContext db) =>
await db.Usuarios.ToListAsync()
);
app.MapPost("/api/usuarios", async (Usuario user, AppDbContext db) =>
{
db.Usuarios.Add(user);
await db.SaveChangesAsync();
return Results.Created($"/api/usuarios/{user.Id}", user);
});
app.Run();
// Ou com Controller tradicional
[ApiController]
[Route("api/[controller]")]
public class ProdutosController : ControllerBase
{
[HttpGet]
public async Task<ActionResult<List<Produto>>> GetAll()
=> await _context.Produtos.ToListAsync();
[HttpGet("{id}")]
public async Task<ActionResult<Produto>> GetById(int id)
{
var produto = await _context.Produtos.FindAsync(id);
return produto is null ? NotFound() : Ok(produto);
}
}Entity Framework Core: ORM Moderno
O Entity Framework Core (EF Core) é o ORM oficial do .NET, suportando PostgreSQL, SQL Server, MySQL, SQLite e muitos outros bancos:
// 1. Modelo
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; } = string.Empty;
public decimal Preco { get; set; }
public int CategoriaId { get; set; }
public Categoria Categoria { get; set; } = null!;
}
// 2. DbContext
public class AppDbContext : DbContext
{
public DbSet<Produto> Produtos => Set<Produto>();
public DbSet<Categoria> Categorias => Set<Categoria>();
protected override void OnConfiguring(DbContextOptionsBuilder opt)
=> opt.UseNpgsql("Host=localhost;Database=meudb");
}
// 3. Migrations (CLI)
// dotnet ef migrations add Inicial
// dotnet ef database update
// 4. Queries com LINQ
using var db = new AppDbContext();
var caros = await db.Produtos
.Where(p => p.Preco > 100)
.OrderByDescending(p => p.Preco)
.Include(p => p.Categoria)
.Select(p => new { p.Nome, p.Preco, Cat = p.Categoria.Nome })
.ToListAsync();O LINQ (Language Integrated Query) é um dos diferenciais mais poderosos do C# — consultas fortemente tipadas com Intellisense completo, compilação em tempo de compilação e sintaxe fluente que se assemelha a SQL.
Blazor: Web sem JavaScript
O Blazor permite construir interfaces web interativas usando C# puro, sem JavaScript:
<!-- Componente Blazor (.razor) -->
@page "/contador"
<h3>Contador: @count</h3>
<button @onclick="Incrementar">+1</button>
@code {
private int count = 0;
private void Incrementar()
{
count++;
}
}O Blazor funciona de duas formas: Blazor Server (a UI roda no servidor, atualiza via SignalR) e Blazor WebAssembly (o runtime .NET roda no navegador via WebAssembly).
Performance e Boas Práticas
O .NET 8 trouxe várias otimizações de performance:
- Native AOT: Compilação ahead-of-time para binários nativos sem JIT, com inicialização em milissegundos e menor consumo de memória
- Garbage Collection melhorado: GC com regiões e suporte a dynamic adaptation para reduzir pausas
- System.Text.Json: Serialização JSON nativa 2x mais rápida que Newtonsoft.Json
- gRPC: Suporte nativo a gRPC para microsserviços de alta performance
- Middleware pipeline: Pipeline HTTP altamente otimizado para baixa latência
Ferramentas do Ecossistema
| Ferramenta | Finalidade |
|---|---|
| Visual Studio | IDE completa para Windows |
| VS Code + C# Dev Kit | Editor leve e multiplataforma |
| Rider | IDE cross-platform da JetBrains |
| NuGet | Gerenciador de pacotes oficial |
| xUnit / NUnit | Frameworks de teste unitário |
| Serilog | Logging estruturado moderno |
Conclusão
O ecossistema .NET com C# não é mais o mesmo de 10 anos atrás. Com código aberto, performance de ponta, suporte multiplataforma e uma das melhores experiências de desenvolvimento do mercado (Intellisense, debugar, refatorar), o .NET 8 é uma escolha sólida para qualquer tipo de aplicação — seja uma API REST, um microsserviço, uma aplicação desktop ou um site interativo com Blazor.
Se você já conhece Java, TypeScript ou Python, a curva de aprendizado do C# moderno é surpreendentemente suave. A documentação oficial em learn.microsoft.com/dotnet e a comunidade no dot.net são excelentes pontos de partida.







