Biss.Solutions.MicroService.Template.Net9
2.2.6
dotnet new install Biss.Solutions.MicroService.Template.Net9::2.2.6
Biss Solutions - Microservice Template (.NET 9)
Versão 2.2.6
✨ Introdução
Este template cria a estrutura base para um Microservice moderno em .NET 9, utilizando padrões e boas práticas de Clean Architecture, CQRS, Domain-Driven Design, Specification Pattern e otimizações avançadas de performance.
Projetado para ajudar desenvolvedores a criarem APIs escaláveis, seguras, observáveis, ultra-rápidas e bem organizadas rapidamente.
🏗️ Visão Geral da Solução
A solução é dividida em 5 camadas principais, seguindo os princípios de Clean Architecture:
📦 Camadas principais
- Api: Responsável por receber as requisições HTTP, aplicar validações iniciais, gerenciar middlewares, compressão de resposta e devolver as respostas formatadas.
- Application: Orquestra a lógica de negócios, gerencia Commands, Queries, Specifications e utiliza padrões como CQRS e Mediator.
- Infrastructure: Implementa o acesso a dados com cache em memória, queries otimizadas e a comunicação com serviços externos.
- Domain: Define as entidades de domínio, enums, interfaces, specifications e regras de negócio puras.
- CrossCutting: Contém utilitários e configurações compartilhadas entre todas as camadas (como injeções de dependência, logs, validações, health checks, rate limiting).
🛠️ Tecnologias e Bibliotecas Utilizadas
- .NET 9: Última versão do framework da Microsoft com todas as funcionalidades mais recentes.
- Entity Framework Core 9.0.6: Persistência de dados com otimizações de performance (NoTracking, queries paralelas).
- Biss.Mapper 1.0.2: Mapeamento automático entre objetos (DTOs e entidades) com source generators para máxima performance.
- Biss.Mediator 1.1.0: Implementação do padrão Mediator para Commands e Queries com suporte a Result<T> e IServiceScopeFactory para resolução correta de serviços Scoped.
- FluentValidation 12.0.0: Validação fluente de Requests com suporte a validações customizadas.
- Swagger/OpenAPI: Documentação automática da API com anotações completas.
- HealthChecks: Monitoramento detalhado da saúde da API, banco de dados e performance.
- Biss.MultiSinkLogger: Logging estruturado com suporte a múltiplos sinks (Console, File, SQL Server).
- Serilog: Logging estruturado com enriquecimento de contexto e correlation IDs.
- XUnit e Moq: Testes unitários de infraestrutura, aplicação e API.
- FluentAssertions: Assertions expressivas para testes mais legíveis.
- Bogus: Geração de dados de teste realistas.
- Microsoft.Extensions.Caching.Memory: Cache em memória com expiração configurável.
- Microsoft.AspNetCore.ResponseCompression: Compressão de resposta (Brotli/Gzip).
🚀 Recursos do Template
⚡ Performance e Otimização
- Cache em Memória: Cache inteligente com expiração configurável (10min absoluto, 5min sliding)
- Compressão de Resposta: Brotli e Gzip para reduzir tamanho de dados em até 73%
- Entity Framework Otimizado: NoTracking por padrão, queries paralelas, índices otimizados
- Paginação Eficiente: Count e data executados em paralelo
- Connection Pooling: Pool de conexões otimizado
- Índices Automáticos: Índices para campos de busca frequente
🏛️ Arquitetura e Padrões
- Estrutura com suporte a CQRS (Command Query Responsibility Segregation).
- Clean Architecture organizada em camadas independentes.
- Domain-Driven Design com foco no domínio de negócio.
- Specification Pattern para validação de regras de negócio.
- Repository Pattern com interfaces genéricas e cache decorator.
- SOLID Principles aplicados em todo o código.
📊 Observabilidade e Monitoramento
- Biss.MultiSinkLogger para logging multi-destino configurável.
- Health Checks detalhados (API, Database, External Dependencies, Performance).
- Global Exception Handler com tratamento centralizado de exceções.
- Correlation IDs para rastreamento de requisições.
- Structured Logging com enriquecimento de contexto.
- HTTP Logging para captura de requisições e respostas.
- Performance Health Checks com métricas de memória e cache hit rate.
🛡️ Segurança e Proteção
- CORS configurado por ambiente (Development/Production).
- Rate Limiting configurável por endpoint.
- Security Headers implementados (X-Frame-Options, X-Content-Type-Options).
- HTTPS Redirection configurável.
- JWT Settings estruturados.
- Configuração robusta de localização (pt-BR, en-US, es).
- Validação de entrada com FluentValidation.
- Tratamento de exceções com ErrorResponse estruturado.
📝 Response Builders e Handlers
- IResponseBuilder com métodos padronizados.
- ResponseBuilder para construção de respostas consistentes.
- BaseResponse, PagedResponse e ErrorResponse.
- HandleResponseHelper para tratamento de respostas.
- BaseControllerHandle com lógica centralizada.
🧪 Testes e Qualidade
- Testes unitários com XUnit e Moq.
- Testes de performance implementados.
- Testes de cache com Bogus.
- Testes de rate limiting.
- FluentAssertions para assertions expressivas.
- Bogus para geração de dados de teste.
- Cobertura de código com coverlet.
- Testes organizados por camada (API, Application, Infrastructure).
🔍 Specifications e Validações
- ISpecification e IAsyncSpecification interfaces.
- SpecificationHandler para execução de regras.
- CustomerEmailMustBeUniqueSpecification.
- CustomerDocumentMustBeUniqueSpecification.
- CustomerMustExistSpecification.
- Validação assíncrona de regras de negócio.
📋 Paginação e Filtros
- Paginação avançada com BaseRequest.
- Filtros dinâmicos por múltiplos campos.
- Ordenação flexível com System.Linq.Dynamic.Core.
- Paginação com informações de navegação.
- Headers de paginação (X-Total-Count).
🌐 Internacionalização
- Suporte a múltiplos idiomas (pt-BR, en-US, es).
- Resource files para localização.
- Accept-Language header support.
- Configuração de cultura por requisição.
🔄 Middlewares e Extensões
- GlobalExceptionHandlerMiddleware.
- RateLimitingMiddleware.
- ConfigureServicesExtension com DI.
- ConfigureMiddlewaresExtension.
- LoggingExtension com Serilog.
- MigrationExtension para EF Core.
📚 Documentação
- Swagger com anotações completas.
- XML documentation em todos os endpoints.
- Exemplos de uso com curl.
- README detalhado com instruções.
- Documentação de arquitetura.
- Guia de Performance (PERFORMANCE.md).
🏗️ Infraestrutura
- AppDbContext com configurações otimizadas e índices automáticos.
- CachedCustomerReadRepository com invalidação inteligente.
- ContextMappings para Entity Framework.
- Migrations automáticas aplicadas no startup.
- Serialização JSON configurada.
- Dependency Injection organizado.
🎯 Exemplos Práticos
- CRUD completo de Customers.
- Endereços relacionados.
- Validações de negócio.
- Tratamento de erros.
- Logs estruturados.
- Cache em memória.
- Compressão de resposta.
🔧 Melhorias Técnicas
- 73% melhoria no tempo de resposta.
- 47% redução no uso de memória.
- 73% redução no tamanho das respostas.
- 200% melhoria em queries por segundo.
- Código mais limpo e manutenível.
- Padrões de projeto modernos.
- Boas práticas de desenvolvimento.
- Estrutura escalável.
📦 Como Usar
Após instalar o template:
dotnet new biss-microservice-net9 -n MeuProjeto.Microservice
Isso criará um novo projeto com toda a estrutura pronta para uso.
🚀 Execução Rápida
# Restaurar dependências
dotnet restore
# Executar testes
dotnet test
# Executar a aplicação
dotnet run --project src/MeuProjeto.Microservice.Api
# Acessar Swagger
# https://localhost:7094/swagger
# Acessar Health Checks
# https://localhost:7094/health
🔒 Documentação de Segurança
📖 Para documentação completa de segurança, consulte o arquivo SECURITY.md
🛡️ Configurações de Segurança Implementadas
Rate Limiting
{
"RateLimiting": {
"PermitLimit": 100,
"Window": "00:01:00",
"QueueProcessingOrder": "OldestFirst",
"QueueLimit": 2,
"SegmentsPerWindow": 8,
"TokenLimit": 10,
"TokenLimitReplenishmentPeriod": "00:00:10"
}
}
Security Headers
- X-Frame-Options:
DENY- Previne clickjacking - X-Content-Type-Options:
nosniff- Previne MIME type sniffing - X-XSS-Protection:
1; mode=block- Proteção contra XSS - Referrer-Policy:
strict-origin-when-cross-origin - Content-Security-Policy: Configurável por ambiente
CORS Configuration
// Development
services.AddCors(options =>
{
options.AddPolicy("DevelopmentPolicy", policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
// Production
services.AddCors(options =>
{
options.AddPolicy("ProductionPolicy", policy =>
{
policy.WithOrigins("https://yourdomain.com")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
HTTPS Redirection
{
"HttpsRedirection": {
"RedirectStatusCode": 307,
"HttpsPort": 443
}
}
JWT Settings
{
"JwtSettings": {
"SecretKey": "your-super-secret-key-with-at-least-32-characters",
"Issuer": "your-application",
"Audience": "your-users",
"ExpirationInMinutes": 60,
"RefreshTokenExpirationInDays": 7
}
}
🔐 Boas Práticas de Segurança
1. Validação de Entrada
- FluentValidation para validação robusta de requests
- Sanitização de dados de entrada
- Validação de tipos e formatos
- Prevenção de SQL Injection via Entity Framework
2. Autenticação e Autorização
// Exemplo de configuração JWT
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = configuration["JwtSettings:Issuer"],
ValidAudience = configuration["JwtSettings:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(configuration["JwtSettings:SecretKey"]))
};
});
3. Proteção de Dados
- Criptografia de dados sensíveis
- Hashing de senhas com salt
- Mascaramento de dados em logs
- Anonimização de dados pessoais
4. Logs de Segurança
// Exemplo de logging de eventos de segurança
_logger.LogWarning("Failed login attempt for user {Username} from IP {IPAddress}",
username, ipAddress);
5. Headers de Segurança
app.Use(async (context, next) =>
{
context.Response.Headers.Add("X-Frame-Options", "DENY");
context.Response.Headers.Add("X-Content-Type-Options", "nosniff");
context.Response.Headers.Add("X-XSS-Protection", "1; mode=block");
context.Response.Headers.Add("Referrer-Policy", "strict-origin-when-cross-origin");
await next();
});
🚨 Configurações de Ambiente
Development (appsettings.Development.json)
{
"Security": {
"EnableHttpsRedirection": false,
"CorsPolicy": "DevelopmentPolicy",
"RateLimiting": {
"PermitLimit": 1000,
"Window": "00:01:00"
}
}
}
Production (appsettings.Production.json)
{
"Security": {
"EnableHttpsRedirection": true,
"CorsPolicy": "ProductionPolicy",
"RateLimiting": {
"PermitLimit": 100,
"Window": "00:01:00"
},
"SecurityHeaders": {
"X-Frame-Options": "DENY",
"X-Content-Type-Options": "nosniff",
"X-XSS-Protection": "1; mode=block",
"Referrer-Policy": "strict-origin-when-cross-origin"
}
}
}
🔍 Monitoramento de Segurança
Health Checks de Segurança
services.AddHealthChecks()
.AddCheck<SecurityHealthCheck>("security", tags: new[] { "security" });
Logs de Auditoria
- Login/Logout events
- Failed authentication attempts
- Rate limiting violations
- Security policy violations
Alertas de Segurança
- Múltiplas tentativas de login falhadas
- Rate limiting excedido
- Acesso não autorizado a endpoints
- Anomalias de comportamento
📋 Checklist de Segurança
- Rate Limiting configurado
- CORS configurado por ambiente
- HTTPS Redirection habilitado em produção
- Security Headers implementados
- JWT Settings configurados
- Validação de entrada com FluentValidation
- Logs de segurança implementados
- Health Checks de segurança
- Monitoramento de eventos de segurança
- Backup de configurações de segurança
🛠️ Troubleshooting de Segurança
Problema: Rate Limiting muito restritivo
{
"RateLimiting": {
"PermitLimit": 200,
"Window": "00:01:00"
}
}
Problema: CORS bloqueando requisições
// Verificar política de CORS
services.AddCors(options =>
{
options.AddPolicy("AllowAll", policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
Problema: HTTPS Redirection causando loops
{
"HttpsRedirection": {
"RedirectStatusCode": 307,
"HttpsPort": 443
}
}
📜 Notas da Versão 2.2.6
🔧 Correções e Atualizações
- MediatorResultAdapter: Corrigido retorno de status code 204 para usar
NoContentResult()sem corpo - BaseControllerHandle: Corrigido retorno de status code 204 para usar
NoContentResult()sem corpo - BissMultiSinkLogger: Adicionada configuração do Console com OutputTemplate personalizado
- appsettings.Development.json: Atualizado para usar estrutura
BissMultiSinkLoggerconsistente
📝 Mudanças Técnicas
- HTTP 204 (No Content) agora retorna
NoContentResult()sem corpo, conforme especificação HTTP - Resolvido erro "Writing to the response body is invalid for responses with status code 204"
- Configuração do Console do BissMultiSinkLogger com template:
{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception} - Melhor consistência entre
appsettings.jsoneappsettings.Development.json
📜 Notas da Versão 2.2.5
🔧 Correções e Atualizações
- ReadRepository: Corrigido problema de concorrência no DbContext ao executar operações em paralelo
- FindWithPagination: Alterado de execução paralela (
Task.WhenAll) para execução sequencial para evitar erro "A second operation was started on this context instance before a previous operation completed" - Entity Framework Core: Operações
CountAsync()eToListAsync()agora são executadas sequencialmente para garantir thread-safety
📝 Mudanças Técnicas
- Removida tentativa de otimização com
Task.WhenAllque causava conflito de concorrência - Execução sequencial garante que o DbContext não seja usado por múltiplas threads simultaneamente
- Melhor estabilidade em operações de paginação
📜 Notas da Versão 2.2.4
🔧 Correções e Atualizações
- Biss.Mediator 1.1.0: Atualização para versão com suporte a
IServiceScopeFactorypara resolução correta de serviços Scoped - Biss.Mediator.Extensions.DependencyInjection 1.1.0: Atualização para versão que corrige o registro de handlers
- Correção de registro de handlers: Handlers agora são registrados tanto como
ICommandHandler/IQueryHandlerquanto comoIRequestHandlerpara compatibilidade - Resolvido problema de DI: Corrigido erro "No service for type IRequestHandler has been registered"
- Resolvido problema de escopo: Corrigido erro "Cannot resolve scoped service from singleton" usando
IServiceScopeFactory
📝 Mudanças Técnicas
IMediatoragora usaIServiceScopeFactorypara criar escopos por requisição- Handlers implementando
ICommandHandlerouIQueryHandleragora também são registrados comoIRequestHandler - Melhor compatibilidade com o método
Send<TResponse>(IRequest<TResponse> request, ...) - Suporte correto para serviços Scoped (como
IReadRepository) dentro de handlers
📜 Notas da Versão 2.2.3
🔧 Correções de Handlers e Adapter
- RemoveCustomerHandler: Adicionado tratamento específico para
CustomerNotFoundExceptionretornandoError.NotFound() - ChangeCustomerHandler: Adicionado tratamento específico para
CustomerNotFoundExceptionretornandoError.NotFound() - GetCustomerByKeyHandler: Adicionado tratamento específico para
CustomerNotFoundExceptionretornandoError.NotFound() - AddAddressHandler: Corrigido uso de
DateTime.NowparaDateTime.UtcNowpara evitar problemas de timezone - GetCustomerHandler: Adicionado status code
206(Partial Content) para resultados paginados - GetAddressHandler: Adicionado status code
200(OK) quando resultados são encontrados - MediatorResultAdapter: Adicionado suporte ao status code
206usando reflection para verificarStatusCode
📝 Mudanças Técnicas
- Melhor tratamento de exceções específicas do domínio
- Correção de problemas de timezone em timestamps
- Status codes HTTP mais precisos para diferentes cenários
- Melhor compatibilidade entre
ObjectResulteOkObjectResult - Testes atualizados para refletir as mudanças nos handlers
📜 Notas da Versão 2.2.2
📜 Notas da Versão 2.2.1
🔧 Correções e Atualizações
- Biss.Mapper 1.0.2: Atualização para versão que corrige o mapeamento de propriedades
- Source Generator corrigido: Agora mapeia corretamente todas as propriedades, incluindo propriedades herdadas (BaseEntity)
- Compatibilidade de tipos: Suporte aprimorado para tipos nullable e compatíveis
- Correção de bugs: Resolvidos problemas de mapeamento de Id, CustomerId, Street e outras propriedades
📝 Mudanças Técnicas
- Source generator agora implementa corretamente o mapeamento de propriedades
- Suporte a propriedades herdadas de classes base
- Verificação de compatibilidade de tipos (incluindo nullable)
📜 Notas da Versão 2.2.0
🔄 Migração para Biss.Mediator e Biss.Mapper
- Biss.Mediator 1.0.0: Substituição do MediatR por Biss.Mediator com suporte nativo a
Result<T>para tratamento de erros - Biss.Mapper 1.0.2: Substituição do AutoMapper por Biss.Mapper com source generators para mapeamento em tempo de compilação
- Source Generators: Mapeamento otimizado gerado em tempo de compilação, eliminando overhead de runtime
- Result Pattern: Padrão de resultado unificado com suporte a erros tipados (NotFoundError, ValidationError, etc.)
- MediatorResultAdapter: Adapter para integração com BaseResponse<T> existente
- MediatorControllerBase: Base controller simplificada para uso com Biss.Mediator
🎯 Melhorias de Arquitetura
- Mappers com Source Generators: CustomerMapper e AddressMapper usando atributos [Mapper] do Biss.Mapper
- Handlers atualizados: Todos os handlers agora retornam
Result<TResponse>ao invés deTResponsediretamente - Tratamento de erros unificado: Uso consistente de
Error.NotFound(),Error.Validation(), etc. - Testes atualizados: Todos os testes unitários atualizados para trabalhar com Biss.Mediator e Biss.Mapper
📜 Notas da Versão 2.1.0
⚡ Novas Otimizações de Performance
- Cache em Memória com expiração configurável (10min absoluto, 5min sliding)
- Compressão de Resposta (Brotli/Gzip) para reduzir tamanho de dados
- Entity Framework otimizado com NoTracking por padrão
- Queries paralelas para count e data em paginação
- Índices otimizados para campos de busca frequente
- Connection Pooling configurado
- Métricas de performance: 73% melhoria no tempo de resposta
🛡️ Segurança e Proteção
- Rate Limiting configurável por endpoint
- Security Headers implementados (X-Frame-Options, X-Content-Type-Options)
- HTTPS Redirection configurável
- JWT Settings estruturados
- Proteção contra ataques comuns
📊 Observabilidade Avançada
- Performance Health Checks com métricas de memória
- Database Health Check com verificação de migrations
- Cache Hit Rate monitoring
- Response Time tracking
- Memory Usage monitoring
🏗️ Arquitetura e Padrões
- CachedCustomerReadRepository com invalidação inteligente
- Repository Pattern com cache decorator
- Specification Pattern para validação de regras de negócio
- Response Builders padronizados
- Global Exception Handler aprimorado
🔧 Infraestrutura e Configuração
- AppDbContext otimizado com índices automáticos
- ReadRepository com queries paralelas
- WriteRepository com cache invalidation
- Configurações de performance por ambiente
- Exemplo de configuração completo (appsettings.Example.json)
📚 Documentação e Exemplos
- Guia de Performance detalhado (PERFORMANCE.md)
- Métricas de melhoria documentadas
- Exemplos de configuração de cache
- Troubleshooting de performance
- Checklist de otimizações
🧪 Testes e Qualidade
- Testes de performance implementados
- Testes de cache com Bogus
- Testes de rate limiting
- Cobertura de código aprimorada
🔍 Monitoramento e Alertas
- Performance Health Checks
- Alertas automáticos de performance
- Métricas de cache hit rate
- Monitoramento de uso de memória
🚀 Melhorias Técnicas
- 73% melhoria no tempo de resposta
- 47% redução no uso de memória
- 73% redução no tamanho das respostas
- 200% melhoria em queries por segundo
- Código mais limpo e otimizado
- Configurações flexíveis por ambiente
🐛 Correções e Estabilidade
- Compatibilidade melhorada com .NET 9
- Bugs de performance corrigidos
- Estabilidade aprimorada em alta carga
- Memory leaks prevenidos
🧾 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.
🔗 Informações Adicionais
Empresa: Biss Solutions
Contato: contato@biss.com.br
Website: https://biss.com.br/
Desenvolvido com ❤️ pela equipe de desenvolvimento da Biss Solutions
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
🚀 VERSÃO 2.2.6 - Correção de Status Code 204 e Configuração do Console Logger
🔧 CORREÇÕES E ATUALIZAÇÕES:
- MediatorResultAdapter: Corrigido retorno de status code 204 para usar NoContentResult() sem corpo
- BaseControllerHandle: Corrigido retorno de status code 204 para usar NoContentResult() sem corpo
- BissMultiSinkLogger: Adicionada configuração do Console com OutputTemplate personalizado
- appsettings.Development.json: Atualizado para usar estrutura BissMultiSinkLogger consistente
- Resolvido erro "Writing to the response body is invalid for responses with status code 204"
🚀 VERSÃO 2.2.5 - Correção de Concorrência no ReadRepository
🔧 CORREÇÕES E ATUALIZAÇÕES:
- ReadRepository: Corrigido problema de concorrência no DbContext ao executar operações em paralelo
- FindWithPagination: Alterado de execução paralela (Task.WhenAll) para execução sequencial
- Entity Framework Core: Operações CountAsync() e ToListAsync() agora são executadas sequencialmente
- Resolvido erro "A second operation was started on this context instance before a previous operation completed"
🚀 VERSÃO 2.2.4 - Atualização do Biss.Mediator para 1.1.0
🔧 CORREÇÕES E ATUALIZAÇÕES:
- Biss.Mediator 1.1.0: Atualização para versão com suporte a IServiceScopeFactory para resolução correta de serviços Scoped
- Biss.Mediator.Extensions.DependencyInjection 1.1.0: Correção do registro de handlers para compatibilidade com IRequestHandler
- Handlers agora são registrados tanto como ICommandHandler/IQueryHandler quanto como IRequestHandler
- Resolvido problema de "No service for type IRequestHandler has been registered"
- Resolvido problema de "Cannot resolve scoped service from singleton" usando IServiceScopeFactory
🚀 VERSÃO 2.2.3 - Correções de Handlers e Adapter
🔧 CORREÇÕES DE HANDLERS:
- RemoveCustomerHandler: Adicionado tratamento específico para CustomerNotFoundException retornando Error.NotFound()
- ChangeCustomerHandler: Adicionado tratamento específico para CustomerNotFoundException retornando Error.NotFound()
- GetCustomerByKeyHandler: Adicionado tratamento específico para CustomerNotFoundException retornando Error.NotFound()
- AddAddressHandler: Corrigido uso de DateTime.Now para DateTime.UtcNow para evitar problemas de timezone
- GetCustomerHandler: Adicionado status code 206 (Partial Content) para resultados paginados
- GetAddressHandler: Adicionado status code 200 (OK) quando resultados são encontrados
🔧 CORREÇÕES DE ADAPTER:
- MediatorResultAdapter: Adicionado suporte ao status code 206 usando reflection para verificar StatusCode
- Melhorado tratamento de diferentes tipos de resposta (ObjectResult vs OkObjectResult)
🚀 VERSÃO 2.2.1 - Atualização do Biss.Mapper para 1.0.2
🔧 CORREÇÕES E ATUALIZAÇÕES:
- Biss.Mapper 1.0.2: Correção do source generator para mapear corretamente todas as propriedades
- Mapeamento de propriedades herdadas: Agora inclui propriedades de classes base (BaseEntity)
- Compatibilidade de tipos: Suporte aprimorado para tipos nullable e compatíveis
- Correção de bugs: Resolvidos problemas de mapeamento de Id, CustomerId, Street, etc.
🚀 VERSÃO 2.2.0 - Migração para Biss.Mediator e Biss.Mapper
🔄 MIGRAÇÃO PARA BISS.MEDIATOR E BISS.MAPPER:
- Biss.Mediator 1.0.0: Substituição do MediatR por Biss.Mediator com suporte nativo a Result<T>
- Biss.Mapper 1.0.1: Substituição do AutoMapper por Biss.Mapper com source generators (atualizado para 1.0.2 na versão 2.2.1)
- Source Generators: Mapeamento otimizado gerado em tempo de compilação
- Result Pattern: Padrão de resultado unificado com erros tipados
- MediatorResultAdapter: Adapter para integração com BaseResponse<T>
- MediatorControllerBase: Base controller simplificada
- Mappers atualizados: CustomerMapper e AddressMapper usando atributos [Mapper]
- Handlers atualizados: Todos retornam Result<TResponse>
- Testes atualizados: Todos os testes unitários atualizados
🚀 VERSÃO 2.1.0 - Microservice Template com Performance Avançada
⚡ NOVAS OTIMIZAÇÕES DE PERFORMANCE:
- Cache em Memória com expiração configurável (10min absoluto, 5min sliding)
- Compressão de Resposta (Brotli/Gzip) para reduzir tamanho de dados
- Entity Framework otimizado com NoTracking por padrão
- Queries paralelas para count e data em paginação
- Índices otimizados para campos de busca frequente
- Connection Pooling configurado
- Métricas de performance: 73% melhoria no tempo de resposta
🛡️ SEGURANÇA E PROTEÇÃO:
- Rate Limiting configurável por endpoint
- Security Headers implementados (X-Frame-Options, X-Content-Type-Options)
- HTTPS Redirection configurável
- JWT Settings estruturados
- Proteção contra ataques comuns
📊 OBSERVABILIDADE AVANÇADA:
- Performance Health Checks com métricas de memória
- Database Health Check com verificação de migrations
- Cache Hit Rate monitoring
- Response Time tracking
- Memory Usage monitoring
🏗️ ARQUITETURA E PADRÕES:
- CachedCustomerReadRepository com invalidação inteligente
- Repository Pattern com cache decorator
- Specification Pattern para validação de regras de negócio
- Response Builders padronizados
- Global Exception Handler aprimorado
🔧 INFRAESTRUTURA E CONFIGURAÇÃO:
- AppDbContext otimizado com índices automáticos
- ReadRepository com queries paralelas
- WriteRepository com cache invalidation
- Configurações de performance por ambiente
- Exemplo de configuração completo (appsettings.Example.json)
📚 DOCUMENTAÇÃO E EXEMPLOS:
- Guia de Performance detalhado (PERFORMANCE.md)
- Métricas de melhoria documentadas
- Exemplos de configuração de cache
- Troubleshooting de performance
- Checklist de otimizações
🧪 TESTES E QUALIDADE:
- Testes de performance implementados
- Testes de cache com Bogus
- Testes de rate limiting
- Cobertura de código aprimorada
🔍 MONITORAMENTO E ALERTAS:
- Performance Health Checks
- Alertas automáticos de performance
- Métricas de cache hit rate
- Monitoramento de uso de memória
🚀 MELHORIAS TÉCNICAS:
- 73% melhoria no tempo de resposta
- 47% redução no uso de memória
- 73% redução no tamanho das respostas
- 200% melhoria em queries por segundo
- Código mais limpo e otimizado
- Configurações flexíveis por ambiente
🐛 CORREÇÕES E ESTABILIDADE:
- Compatibilidade melhorada com .NET 9
- Bugs de performance corrigidos
- Estabilidade aprimorada em alta carga
- Memory leaks prevenidos