Microsserviços em C#: por onde começar para iniciantes em 2025
\n\nAntigamente, parecia que microsserviços eram coisa de gigantes como Netflix ou Amazon. Mas os tempos mudaram. Hoje, a arquitetura de microsserviços em C# está acessível a todo desenvolvedor que deseja construir sistemas flexíveis, escaláveis e sustentáveis. Se você sente que o monolito está "sufocando" seu projeto, ou simplesmente quer aprender uma habilidade valorizada, está no lugar certo.
\n\nNeste artigo, vamos abordar: por onde começar, quais tecnologias escolher e criar dois microsserviços reais em C# do zero. Sem enrolação, apenas prática.
\n\nPor que C# é uma excelente escolha para microsserviços
\n\nC# e o ecossistema .NET não são apenas uma linguagem, mas um framework completo para construir sistemas distribuídos. Veja por que muitos escolhem microsserviços em C#:
\n\n- \n
- ASP.NET Core — leve, multiplataforma e performático. Funciona em Windows, Linux, macOS. \n
- Suporte nativo a Docker — o Visual Studio permite adicionar suporte a Docker ao projeto com dois cliques. \n
- gRPC e SignalR — soluções prontas para comunicação entre serviços e comunicação em tempo real. \n
- Entity Framework Core — ORM conveniente que se configura facilmente para um banco de dados de microsserviço. \n
- Grande comunidade — milhares de soluções prontas no Stack Overflow e GitHub. \n
A propósito, se você está começando a mergulhar em C#, recomendo dar uma olhada na seção de artigos básicos no PythonLib — há muito conteúdo útil para começar.
\n\nPor onde começar: estrutura do projeto
\n\nO erro do iniciante é sair escrevendo código sem pensar na arquitetura. Vamos fazer do jeito certo. Primeiro, criaremos dois microsserviços:
\n\n- \n
- UserService — responsável pelos usuários (registro, perfil). \n
- OrderService — responsável pelos pedidos. \n
Cada serviço terá seu próprio banco de dados (SQLite para simplificar) e se comunicará via REST API. Para começar, isso é suficiente.
\n\nPasso 1. Criando o projeto UserService
\n\nAbra o terminal ou o Visual Studio e execute:
\n\ndotnet new webapi -n UserService\ncd UserService\ndotnet add package Microsoft.EntityFrameworkCore.Sqlite\ndotnet add package Microsoft.EntityFrameworkCore.Design\n\nA estrutura do projeto será assim:
\n\nUserService/\n├── Controllers/\n│ └── UsersController.cs\n├── Models/\n│ └── User.cs\n├── Data/\n│ └── AppDbContext.cs\n├── Program.cs\n└── appsettings.json\n\nPasso 2. Modelo e contexto de dados
\n\nCriando o modelo de usuário:
\n\n// Models/User.cs\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; } = string.Empty;\n public string Email { get; set; } = string.Empty;\n public DateTime CreatedAt { get; set; } = DateTime.UtcNow;\n}\n\nE o contexto do banco de dados:
\n\n// Data/AppDbContext.cs\nusing Microsoft.EntityFrameworkCore;\n\npublic class AppDbContext : DbContext\n{\n public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }\n public DbSet<User> Users { get; set; }\n}\n\nConfigurando a conexão no appsettings.json:
{\n "ConnectionStrings": {\n "DefaultConnection": "Data Source=users.db"\n },\n "Logging": {\n "LogLevel": { "Default": "Information" }\n }\n}\n\nRegistrando os serviços no Program.cs:
var builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddDbContext<AppDbContext>(options =>\n options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));\n\nbuilder.Services.AddControllers();\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\n// Auto