Mvp24Hours.WebAPI
9.1.20
dotnet add package Mvp24Hours.WebAPI --version 9.1.20
NuGet\Install-Package Mvp24Hours.WebAPI -Version 9.1.20
<PackageReference Include="Mvp24Hours.WebAPI" Version="9.1.20" />
<PackageVersion Include="Mvp24Hours.WebAPI" Version="9.1.20" />
<PackageReference Include="Mvp24Hours.WebAPI" />
paket add Mvp24Hours.WebAPI --version 9.1.20
#r "nuget: Mvp24Hours.WebAPI, 9.1.20"
#:package Mvp24Hours.WebAPI@9.1.20
#addin nuget:?package=Mvp24Hours.WebAPI&version=9.1.20
#tool nuget:?package=Mvp24Hours.WebAPI&version=9.1.20
Changelog
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
O formato é baseado em Keep a Changelog, e este projeto adere ao Versionamento Semântico.
[9.1.200] - 2026-01 🚀 Major Release
Migração para .NET 9 - Esta versão introduz mudanças significativas para adotar as APIs nativas do .NET 9. Consulte o guia de migração em
docs/pt-br/modernization/migration-guide.mdoudocs/en-us/modernization/migration-guide.md.
Adicionado
Biblioteca CQRS Completa (Mvp24Hours.Infrastructure.Cqrs)
IMediator,ISender,IPublisher- interfaces principais do MediatorIMediatorCommand<TResponse>,IMediatorCommand- commands CQRSIMediatorQuery<TResponse>- queries CQRSIMediatorNotification- sistema de notificações in-processIMediatorRequestHandler<TRequest, TResponse>- handlers genéricos- Pipeline Behaviors:
LoggingBehavior- log de início, fim e tempoPerformanceBehavior- alerta de requisições lentasUnhandledExceptionBehavior- captura e log de exceçõesValidationBehavior- integração com FluentValidationCachingBehavior- cache com IDistributedCacheTransactionBehavior- integração com IUnitOfWorkAuthorizationBehavior- autorização via policiesRetryBehavior- retry com backoff exponencialTimeoutBehavior- timeout configurável por requestCircuitBreakerBehavior- circuit breaker para commandsIdempotencyBehavior- prevenção de duplicatas
- Domain Events:
IDomainEventeDomainEventBaseIDomainEventHandler<TEvent>eDomainEventDispatcherIHasDomainEventspara entidades/agregadosSaveChangesWithEventsAsyncpara EFCore e MongoDB
- Integration Events:
IIntegrationEventeIntegrationEventBaseIIntegrationEventHandler<TEvent>IIntegrationEventOutboxeInMemoryIntegrationEventOutboxRabbitMqIntegrationEventPublisher
- Event Sourcing:
IEventStoreeEventStreamAggregateRoot<TId>com Apply/RaiseSnapshoteSnapshotStoreEventStoreRepository<T>IProjection,IProjectionHandler<TEvent>,ProjectionManager
- Saga/Process Manager:
ISaga<TData>,SagaBase<TData>ISagaOrchestratoreISagaStateStoreCompensatingCommandpara rollback- Timeout e expiração de sagas
- Observabilidade CQRS:
IRequestContextcom CorrelationId/CausationIdRequestContextBehaviorpara propagação de contextoAuditBehavioreIAuditStore
- Multi-tenancy:
ITenantContext,TenantBehaviorICurrentUser,CurrentUserBehavior- Filtros automáticos por tenant em queries
- Inbox/Outbox:
InboxMessage,IInboxStore,InboxProcessorOutboxProcessorcom retry e DLQ
- Scheduled Commands:
IScheduledCommand,ICommandSchedulerScheduledCommandHostedService
- Decorators e Extensibilidade:
IPreProcessor<TRequest>,IPostProcessor<TRequest, TResponse>IExceptionHandler<TRequest, TException>
- Streaming:
IStreamRequest<T>,IStreamRequestHandler<T>com IAsyncEnumerable
Modernização .NET 9
- HybridCache (Microsoft.Extensions.Caching.Hybrid):
AddMvpHybridCache()para configuraçãoHybridCacheProvidercomoICacheProvider- Tags para invalidação em grupo
InMemoryHybridCacheTagManagereRedisHybridCacheTagManager
- TimeProvider:
TimeProviderAdapter(ponte TimeProvider → IClock)ClockAdapter(ponte IClock → TimeProvider)AddTimeProvider(),AddClock(),ReplaceTimeProvider()FakeTimeProviderHelperpara testes
- PeriodicTimer:
PeriodicTimerHelpercom padrões comuns- Migração de todos os background services
- System.Threading.RateLimiting:
IRateLimiterProvider,NativeRateLimiterProviderRateLimitingPipelineMiddlewarepara PipelineRateLimitingConsumeFilter,RateLimitingPublishFilterpara RabbitMQ
- System.Threading.Channels:
IChannel<T>,MvpChannel<T>ChannelFactory,ProducerConsumer<T>ChannelPipeline<TInput, TOutput>ChannelBatchProcessor<T>
- Microsoft.Extensions.Http.Resilience:
AddHttpClientWithStandardResilience()NativeResilienceOptionscom presetsNativeResilienceBuilderpara configuração customizada
- Microsoft.Extensions.Resilience:
INativeResiliencePipeline,NativeResiliencePipelineNativeDbResilienceExtensionspara EFCoreNativeMongoDbResilienceExtensionspara MongoDBNativePipelineResilienceMiddlewarepara PipeNativeResilienceBehaviorpara CQRS
- ProblemDetails (RFC 7807):
AddNativeProblemDetails(),AddNativeProblemDetailsAll()UseNativeProblemDetailsHandling()- Helpers:
NotFoundProblem(),ValidationProblem(),ConflictProblem(), etc.
- TypedResults (.NET 9):
ToNativeTypedResult()paraIBusinessResult<T>MapNativeCommand<T>(),MapNativeQuery<T>()para CQRS- Filtros: NativeValidation, ExceptionHandling, Logging, CorrelationId, Idempotency, Timeout
- Source Generators:
Mvp24HoursJsonSerializerContextpara serialização AOT[LoggerMessage]em todos os módulos (CoreLoggerMessages, PipelineLoggerMessages, etc.)
- OpenAPI Nativo:
AddMvp24HoursNativeOpenApi(),MapMvp24HoursNativeOpenApi()SecuritySchemeTransformer,OpenApiDocumentTransformers
- Keyed Services:
ServiceKeys.cscom constantesKeyedServiceExtensions.cs
- Output Caching:
AddMvp24HoursOutputCache(),AddMvp24HoursOutputCacheWithRedis()IOutputCacheInvalidator- Políticas: Short, Medium, Long, VeryLong, NoCache, Authenticated, Api
- .NET Aspire 9:
AddMvp24HoursAspireDefaults()AddMvp24HoursRedisFromAspire(),AddMvp24HoursRabbitMQFromAspire()AddMvp24HoursSqlServerFromAspire(),AddMvp24HoursMongoDbFromAspire()
- IOptions<T> Validation:
IOptionsValidator<T>,OptionsValidatorBase<T>AddOptionsWithValidation<T>(),AddOptionsWithValidation<T, TValidator>()AddOptionsValidatorsFromAssembly()
Observabilidade (ILogger + OpenTelemetry)
- OpenTelemetry Tracing:
ActivitySourcespara todos os módulos (Core, Pipeline, Repository, Mediator, RabbitMQ, CronJob, HttpClient)ActivityHelpercom convenções semânticasIActivityEnricherpara enriquecimento customizávelTracePropagationcom W3C Trace Context
- OpenTelemetry Metrics:
MetricSourcescom Meters por móduloPipelineMetrics,RepositoryMetrics,MessagingMetrics,CqrsMetrics,CacheMetrics,HttpMetrics,CronJobMetricsMetricNames.cscom convenções semânticas
- OpenTelemetry Logs:
- Integração
ILogger↔ OpenTelemetry Logs - Correlação automática logs ↔ traces (TraceId, SpanId)
- Log sampling para ambientes de alta carga
- Integração
- Contexto e Correlação:
ICorrelationIdAccessor,CorrelationIdAccessorCorrelationIdMiddleware,RequestContextMiddlewareBaggagePropagationpara TenantId, UserIdILogEnricher(UserContextLogEnricher, TenantContextLogEnricher)
- Configuração:
AddMvp24HoursLogging(),AddMvp24HoursTracing(),AddMvp24HoursMetrics()AddMvp24HoursObservability()- all-in-oneAddMvp24HoursOpenTelemetry()com OTLP, Console, Prometheus exportersObservabilityOptionscentralizado
- Testabilidade:
FakeLogger<T>,InMemoryLoggerProviderFakeActivityListener,FakeMeterListenerLogAssertions,ActivityAssertions,MetricAssertionsObservabilityTestFixture
EFCore Avançado
- Interceptors:
AuditSaveChangesInterceptorSoftDeleteInterceptorConcurrencyInterceptorCommandLoggingInterceptorSlowQueryInterceptorTenantSaveChangesInterceptorStructuredLoggingInterceptor
- Multi-tenancy:
ITenantProvider, query filters automáticosTenantModelBuilderExtensionsRowLevelSecurityHelper
- Performance:
AsNoTracking()configurável,AsNoTrackingWithIdentityResolution()- Compiled queries, Split queries
IAsyncEnumerable<T>streaming- Query tags (
TagWith()) ProjectTo<TDto>com AutoMapper
- Bulk Operations:
BulkInsertAsync(),BulkUpdateAsync(),BulkDeleteAsync()- Progress callback
ExecuteUpdate,ExecuteDelete(.NET 7+)
- Specification Pattern:
GetBySpecificationAsync(),CountBySpecificationAsync(),AnyBySpecificationAsync()IReadOnlyRepository<T>,IReadOnlyRepositoryAsync<T>- Cursor-based pagination (keyset)
- Resiliência:
EnableRetryOnFailure(), retry policies por exceção- Timeout por query
- DbContext pooling
- Health Checks:
SqlServerHealthCheck,PostgreSqlHealthCheck,MySqlHealthCheck
- Read/Write Splitting:
ConnectionResolver,ReplicaSelector- DbContext separado para leitura
- Testabilidade:
UseInMemoryDatabasehelpersIDataSeeder<T>,DbContextFactoryIRepositoryFake<T>
MongoDB Avançado
- Interceptors:
AuditInterceptor,SoftDeleteInterceptor,AuditTrailInterceptor - Multi-tenancy: Query filters,
ITenantProvider, Row-level security - Field-level encryption (CSFLE)
- Bulk operations:
BulkInsertAsync(),BulkUpdateAsync(),BulkDeleteAsync() - Change Streams para eventos real-time
- GridFS para arquivos grandes
- Time Series Collections
- Geospatial queries
- Text search indexes
- Resiliência: Connection resiliency, Circuit breaker, Retry policies
- Health checks: Conectividade, Replica set status, Índices
- Read preference configurável
- Testabilidade: In-memory provider,
IRepositoryFake<T>, Testcontainers helpers
RabbitMQ Enterprise
- Consumers tipados:
IMessageConsumer<TMessage>,ConsumeContext<TMessage>IMessage<TPayload>,IMessageSerializerConsumerDefinition<TConsumer>IFaultConsumer<TMessage>
- Request/Response:
IRequestClient<TRequest, TResponse>Response<T>wrapperIRequestHandler<TRequest, TResponse>RequestTimeoutException
- Message Scheduling:
IMessageSchedulerScheduleMessage<T>()por DateTime ou TimeSpanCancelScheduledMessage()- Recurring messages
- Pipeline/Middleware:
IConsumeFilter<TMessage>,IPublishFilter<TMessage>,ISendFilter- Filtros: Logging, ExceptionHandling, Correlation, Telemetry, Validation
- Topologia:
IEndpointNameFormatter,IMessageTopology<TMessage>- Topic Exchange, Fanout Exchange
- Auto-binding, Exchange-to-exchange bindings
- Batch Consumers:
IBatchConsumer<TMessage>,BatchConsumeContext<TMessage>- Batch size, timeout, parallel processing
- Transactional Messaging:
ITransactionalBus- Integração com
IUnitOfWork InMemoryOutbox
- Sagas:
ISagaConsumer<TData, TMessage>SagaStateMachine<TInstance>- Saga persistence (Redis, SQL, MongoDB)
- Multi-tenancy:
- Virtual hosts por tenant
ITenantConsumeFilter- Connection pool por tenant
- API Fluente:
AddMvpRabbitMQ(cfg => { cfg.Host(); cfg.AddConsumer<T>(); }) - Observabilidade: ActivitySource, Métricas Prometheus
- Testing:
InMemoryBus,TestHarness,TestConsumeContext<T>
Pipeline Avançado
- Tipagem:
IPipeline<TInput, TOutput>,ITypedOperation<TInput, TOutput>- API fluente
.Pipe<TIn, TOut>().Then<TNext>().Finally() IOperationResult<T>,OperationChain<T>
- Contexto:
IPipelineContext(CorrelationId, CausationId, Metadata, User)- State Snapshots
- Activity spans
- Fluxo Avançado:
- Fork/Join pattern
- Dependency Graph
- OperationPriority
- Saga Pattern com compensação
- Checkpoint/Resume
- Observabilidade:
- Métricas por operação (duration, memory, success rate)
- Logging estruturado
- Pipeline Visualization (diagrama de fluxo)
- Health Check agregado
- Eventos: OnOperationStart, OnOperationEnd, OnPipelineComplete
- Integração: FluentValidation, IAsyncEnumerable, IDistributedCache, OpenTelemetry
WebAPI
- Exception Handling:
- ProblemDetails (RFC 7807)
ExceptionToProblemDetailsMapper- Mapeamento de exceções de domínio para HTTP status codes
- Rate Limiting:
- Políticas por IP, User, API Key
- Fixed/Sliding Window, Token Bucket
- Headers X-RateLimit-*
- Redis para distribuído
- Idempotência:
IdempotencyKeyMiddleware- Integração com
IIdempotentCommand - Retry-after headers
- Segurança:
- Security headers (HSTS, CSP, X-Frame-Options)
- API Key authentication
- IP filtering
- Input sanitization
- Observabilidade:
- Request/Response logging com masking
- OpenTelemetry tracing
- Métricas de endpoints
- Correlation ID propagation
- API Versioning: URL, Header, Query String
- Health Checks:
/health,/health/ready,/health/live - Minimal APIs:
MapCommand<T>(),MapQuery<T>()- Endpoint filters
TypedResultshelpers
Application Layer
- Services:
IApplicationService<TEntity, TDto>,ApplicationServiceBase<T>IApplicationService<TEntity, TDto, TCreateDto, TUpdateDto>QueryService,CommandService(CQRS light)IReadOnlyApplicationService<T>
- AutoMapper integrado
- Validation pipeline com
IValidationService<T> - Transaction scope com
[Transactional] - Specification Pattern:
GetBySpecificationAsync<TSpec>() - Exception handling:
ExceptionToResultMapper, Result status codes - Observabilidade: Logging, Audit trail, OpenTelemetry, Correlation ID
- Cache:
[Cacheable], invalidação automática - Pagination:
PagedResult<T>, cursor-based - Soft delete automático
Infrastructure Base
- HTTP Client:
ITypedHttpClient<TApi>,HttpClientBuilder- Delegating handlers: Logging, Auth, Correlation, Telemetry, Retry, CircuitBreaker, Timeout, Compression
- Polly resilience
- Distributed Locking:
IDistributedLock,IDistributedLockFactory- Providers: Redis (RedLock), SQL Server, PostgreSQL, InMemory
- File Storage:
IFileStorage- Providers: Local, Azure Blob, AWS S3, InMemory
- Presigned URLs, versioning, soft delete
- Email Service:
IEmailService,EmailMessage- Providers: SMTP, SendGrid, Azure Communication, InMemory
- Template engine (Razor, Scriban)
- SMS Service:
ISmsService,SmsMessage- Providers: Twilio, Azure Communication, InMemory
- Background Jobs:
IJobScheduler,IBackgroundJob- Providers: Hangfire, Quartz, InMemory
- Fire-and-forget, Delayed, Recurring, Continuations, Batches
- Secret Providers:
ISecretProvider- Azure KeyVault, AWS Secrets Manager, Environment Variables
- Health Checks para todos os subsistemas
Caching Avançado
ICacheProvider: Memory, Distributed, HybridCache- Patterns: Cache-Aside, Read-Through, Write-Through, Write-Behind, Refresh-Ahead
- Multi-level cache (L1 + L2)
- Invalidação: Tags, Pub/sub, Dependency tracking
- Resiliência: Circuit breaker, Fallback, Graceful degradation
- Performance: Compression, Batch operations, Prefetching, Warming
- Observabilidade: Metrics, Tracing, Health checks
CronJob Melhorado
- Correções: Memory leak, IAsyncDisposable, PeriodicTimer
- Resiliência: Retry policy, Circuit breaker, Overlapping control, Graceful shutdown
- Observabilidade: Health checks, Métricas, OpenTelemetry spans, Logging estruturado
- Funcionalidades:
ICronJobContext(JobId, StartTime, Attempt)- CRON de 6 campos (segundos)
- Job dependencies
- Distributed locking
ICronJobStateStore- Pausar/resumir em runtime
- Hooks: OnJobStarting, OnJobCompleted, OnJobFailed
- Configuração:
CronJobOptions<T>,CronJobGlobalOptions, appsettings.json, validação no startup
Core Fundamentals
- Guard clauses:
Guard.Against.Null,NullOrEmpty,OutOfRange,NegativeOrZero,InvalidEmail,InvalidCpf,InvalidCnpj,Default,InvalidFormat - ValueObjects: Email, Cpf, Cnpj, Money, Address, DateRange, Percentage, PhoneNumber (com TryParse e implicit operators)
- Strongly-typed IDs:
EntityId<T>com conversores EF Core e JSON - Functional patterns:
Maybe<T>,Either<TLeft, TRight>com Map, Bind, Match - Smart Enums:
Enumeration<T>com FromValue, FromName, GetAll - Entity interfaces:
IEntity<TId>,IAuditableEntity,ISoftDeletable,ITenantEntity,IVersionedEntity IClock,SystemClock,TestClockIGuidGenerator,SequentialGuidGenerator- Nullable reference types
Exceções
NotFoundException,ConflictException,UnauthorizedException,ForbiddenException,DomainException- ErrorCode padronizado
BusinessResult Melhorado
BusinessResult.Success<T>(),BusinessResult.Failure<T>(),BusinessResult.From<T>()Match<TResult>(),Bind<TNew>()- Implicit operators
BusinessResultFunctionalExtensions: Map, Tap, EnsureIStructuredMessageResultcom código de erro estruturado
Descontinuado (Deprecated)
⚠️ APIs marcadas para remoção na próxima major version
Telemetria Legada:
TelemetryHelper→ UseILogger<T>TelemetryLevels→ UseLogLevelITelemetryService→ UseILogger<T>AddMvp24HoursTelemetry()→ UseAddMvp24HoursObservability()- Guia de Migração:
docs/*/observability/migration.md
Resiliência HTTP Legada:
HttpClientExtensions→ UseAddStandardResilienceHandler()HttpPolicyHelper→ UseMicrosoft.Extensions.Http.ResilienceHttpClientResilienceExtensions→ Use APIs nativas- Guia de Migração:
docs/*/modernization/http-resilience.md
Resiliência Genérica Legada:
MvpExecutionStrategy→ UseResiliencePipelineMongoDbResiliencyPolicy→ UseResiliencePipelineRetryPipelineMiddleware→ UseNativePipelineResilienceMiddlewareCircuitBreakerPipelineMiddleware→ UseNativePipelineResilienceMiddlewareRetryPolicy<T>,CircuitBreaker<T>→ UseResiliencePipeline- Guia de Migração:
docs/*/modernization/generic-resilience.md
Cache Legado:
MultiLevelCache→ UseHybridCache- Guia de Migração:
docs/*/modernization/hybrid-cache.md
Documentação
Nova Estrutura
docs/pt-br/cqrs/- Documentação CQRS completa (20+ documentos)docs/en-us/cqrs/- CQRS documentation (20+ documents)docs/pt-br/core/- Documentação Core (10 documentos)docs/en-us/core/- Core documentation (10 documents)docs/pt-br/observability/- Observabilidade (6 documentos)docs/en-us/observability/- Observability (6 documents)docs/pt-br/modernization/- Modernização .NET 9 (15+ documentos)docs/en-us/modernization/- .NET 9 Modernization (15+ documents)
Documentos CQRS
- home.md, getting-started.md, mediator.md, commands.md, queries.md
- notifications.md, behaviors.md, validation-behavior.md
- domain-events.md, integration-events.md
- integration-unitofwork.md, integration-repository.md, integration-rabbitmq.md, integration-caching.md
- concepts-comparison.md, migration-mediatr.md, best-practices.md, api-reference.md
- event-sourcing/, saga/, resilience/, observability/
- multi-tenancy.md, scheduled-commands.md, specifications.md
Documentos Core
- home.md, guard-clauses.md, value-objects.md, strongly-typed-ids.md
- functional-patterns.md, smart-enums.md, infrastructure-abstractions.md, entity-interfaces.md
Documentos Observability
- home.md, logging.md, tracing.md, metrics.md, migration.md, exporters.md
Documentos Modernization
- dotnet9-features.md, migration-guide.md
- http-resilience.md, generic-resilience.md, rate-limiting.md
- time-provider.md, periodic-timer.md, options-configuration.md, channels.md
- hybrid-cache.md, output-caching.md, keyed-services.md
- problem-details.md, minimal-apis.md, source-generators.md
- native-openapi.md, aspire.md
Testes
- 1099+ tarefas concluídas (86.6% do plano)
- 1000+ testes unitários
- Testes de integração com Testcontainers (SQL Server, MongoDB)
- Benchmarks de performance vs MediatR
- Helpers de teste para observabilidade
Melhorado
- Performance geral com .NET 9 e source generators
- Tipagem com nullable reference types
- Documentação XML em todas as APIs públicas
- IntelliSense com exemplos práticos
Corrigido
- Memory leak em CronJob
ResetServiceProvider - Diversos warnings de nullability
[8.3.261] - 2024
Adicionado
- CronJob: Implementação de suporte a tarefas agendadas
- Configuração fluente de schedules
- Suporte a expressões cron
- Injeção de dependência para jobs
- Hosted service integrado
Detalhes
Esta versão introduz o módulo Mvp24Hours.Infrastructure.CronJob permitindo agendar tarefas recorrentes de forma simples e integrada ao ASP.NET Core.
Exemplo de uso:
services.AddMvp24HoursCronJob(config =>
{
config.AddJob<MyScheduledJob>("0 */5 * * * *"); // A cada 5 minutos
});
[8.2.102] - 2024
Adicionado
- Minimal API: Manipuladores de rotas para conversão e vinculação de parâmetros
- Binders customizados para tipos complexos
- Conversores para tipos primitivos
- Suporte a validação automática
- Integração com BusinessResult pattern
Melhorado
- Suporte aprimorado para Minimal APIs do .NET 6+
- Binding automático de DTOs em rotas mínimas
- Validação integrada em endpoints Minimal API
Detalhes
Facilita o uso do padrão Minimal API mantendo a robustez dos binders e validações da biblioteca.
[8.2.101] - 2024
Mudado
- Migração para .NET 8: Refatoração completa para .NET 8
- Atualização de todas as dependências para .NET 8
- Uso de recursos modernos do C# 12
- Otimizações de performance do .NET 8
- Primary constructors onde apropriado
- Collection expressions
Removido
- Suporte a versões anteriores ao .NET 8
- Pacotes obsoletos e substituídos
Detalhes
Grande marco de migração para .NET 8, trazendo melhorias de performance e recursos modernos da linguagem.
Histórico .NET Core / .NET 6
[4.1.191] - 2023
Mudado
- Mapeamento Assíncrono: Refatoração para mapeamento de resultados assíncronos
- Novos métodos de extensão para
Task<T> - Suporte a
ValueTask<T> - Mapeamento automático de
IBusinessResult<T>assíncrono
- Novos métodos de extensão para
Melhorado
- Performance em operações assíncronas
- Redução de alocações de memória
[4.1.181] - 2023
Removido
- Anti-patterns: Remoção de padrões problemáticos identificados
- Eliminação de acoplamentos desnecessários
- Remoção de dependências circulares
- Simplificação de abstrações excessivas
Mudado
- Entidades de Log: Separação de contextos de entidade de log
- Uso apenas de contratos para melhor abstração
- Interfaces
IEntityLog<T>eIEntityDateLogseparadas - Implementações base opcionaliz
EntityBaseseparadas deEntityBaseLog
Adicionado
- Documentação arquitetural detalhada
- Testes para contexto de banco de dados com log
Corrigido
- Injeção de dependência no client do RabbitMQ
- Injeção de dependência no Pipeline
- Consumers isolados para client do RabbitMQ
Documentação
- Atualização e detalhamento de recursos arquiteturais
- Exemplos de uso de entidades com auditoria
[3.12.262] - 2022
Mudado
- Refatoração completa de extensões
- Organização por namespace
- Remoção de duplicações
- Padronização de nomenclatura
[3.12.261] - 2022
Adicionado
- Testes para middlewares customizados
- Cobertura de testes para WebAPI
[3.12.221] - 2022
Adicionado
Resiliência: Implementação de Polly para tolerância a falhas
- Retry policies configuráveis
- Circuit breaker pattern
- Timeout policies
- Fallback strategies
Delegation Handlers: Propagação de chaves no Header
- Correlation ID automático
- Propagação de Authorization header
- Headers customizados configuráveis
- Logging de requisições HTTP
Corrigido
- Carregamento automático de classes de mapeamento com
IMapFrom - Bug de reflexão em assemblies dinâmicos
Detalhes
Esta versão trouxe grande melhoria em resiliência e observabilidade de aplicações distribuídas.
[3.12.151] - 2022
Mudado
- IMapFrom: Remoção de tipagem genérica redundante
- Simplificação da interface
- Detecção automática de tipos
- Configuração mais limpa
Adicionado
- Testcontainers: Suporte para testes com containers Docker
- RabbitMQ testcontainer
- Redis testcontainer
- MongoDB testcontainer
- Configuração automática de testes de integração
Detalhes
Testcontainers revolucionaram os testes de integração, permitindo testes reais contra serviços em containers Docker.
[3.2.241] - 2021
Mudado
Configuração Fluente: Migração de configurações JSON para extensões fluentes
- API fluente para DbContext
- Configuração fluente para RabbitMQ
- Configuração fluente para Redis
- Configuração fluente para Pipeline
Padrão de Notificação: Substituição do sistema de notificações
- Novo
BusinessResult<T>com mensagens integradas - Remoção de notification context separado
- Mensagens tipadas (Info, Error, Warning, Success)
- Novo
Adicionado
HealthCheck: Suporte completo a health checks
- Health checks para SQL Server, PostgreSQL, MySQL
- Health checks para MongoDB
- Health checks para Redis
- Health checks para RabbitMQ
- WebStatus project com HealthCheckUI
Telemetria: Sistema de telemetria customizável
- Trace/Verbose em todas as bibliotecas
- Níveis de log configuráveis
- Filtros por operação
- Integração com providers de logging
RabbitMQ Avançado: Recursos avançados de mensageria
- Dead Letter Queue configurável
- Conexão persistente com Polly
- Consumer assíncrono
- Retry automático
Melhorado
Transaction Isolation: Configuração de nível de isolamento para EF
- Transaction scope configurável
- Read committed por padrão
- Otimização para leituras
Pipeline: Melhorias no sistema de pipeline
- Adição de mensagens ao pacote durante execução
- Suporte a operações de rollback
- Context compartilhado entre operações
Validação: Sistema de validação aprimorado
- FluentValidation com mensagens estruturadas
- DataAnnotations com mensagens estruturadas
- Retorno consistente de erros
Documentação
- Documentação completa de WebAPI
- Guias de configuração atualizados
- Exemplos de uso de todos os recursos
Detalhes
Versão marco com grandes refatorações e novos recursos fundamentais. Introdução do padrão BusinessResult e telemetria.
[3.1.x e anteriores] - 2020-2021
Funcionalidades Base Implementadas
✅ Banco de Dados Relacional
- SQL Server com Entity Framework Core
- PostgreSQL com Npgsql
- MySQL com Pomelo
- Repository pattern
- Unit of Work pattern
- Soft delete automático
- Auditoria automática
✅ Banco de Dados NoSQL
- MongoDB com driver oficial
- Redis com StackExchange.Redis
- Repository pattern para NoSQL
- Cache distribuído
✅ Message Broker
- RabbitMQ com cliente oficial
- Publisher/Subscriber pattern
- Work Queue pattern
- Request/Reply pattern
✅ Pipeline
- Pipe and Filters pattern
- Operações sequenciais
- Rollback automático
- Injeção de dependência
✅ Documentação
- Swagger/OpenAPI integration
- XML comments support
- Customização de UI
✅ Mapeamento
- AutoMapper integration
- Profiles automáticos
- IMapFrom interface
✅ Logging
- Integração com ILogger
- Structured logging
- Múltiplos providers
✅ Validação
- FluentValidation support
- Data Annotations support
- Validações customizadas
✅ Specification Pattern
- Expressões LINQ reutilizáveis
- Composição de specifications
- AND, OR, NOT operators
Tipos de Mudanças
Adicionadopara novos recursosMudadopara mudanças em recursos existentesDescontinuadopara recursos que serão removidosRemovidopara recursos removidosCorrigidopara correções de bugsSegurançapara vulnerabilidades
Convenções de Versionamento
Este projeto segue o Versionamento Semântico:
- MAJOR: Mudanças incompatíveis na API
- MINOR: Funcionalidades adicionadas de forma retrocompatível
- PATCH: Correções de bugs retrocompatíveis
Formato: MAJOR.MINOR.PATCH (ex: 8.3.261)
Links
Contribuindo
Veja CONTRIBUTING.md para detalhes sobre como contribuir com o projeto.
Agradecimentos
Desenvolvido com ❤️ por Kallebe Lins.
Quer contribuir? Veja CONTRIBUTING.md para começar!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- FluentValidation (>= 12.1.1)
- Microsoft.AspNetCore.Hosting (>= 2.2.7)
- Microsoft.AspNetCore.Hosting.Abstractions (>= 2.2.0)
- Microsoft.AspNetCore.Http (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.2.5)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 8.0.11)
- Microsoft.AspNetCore.Mvc.Versioning (>= 5.1.0)
- Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer (>= 5.1.0)
- Microsoft.AspNetCore.OpenApi (>= 9.0.0)
- Microsoft.AspNetCore.OutputCaching.StackExchangeRedis (>= 9.0.4)
- Microsoft.AspNetCore.ResponseCaching (>= 2.3.0)
- Microsoft.AspNetCore.ResponseCompression (>= 2.3.0)
- Microsoft.Extensions.Configuration (>= 10.0.1)
- Mvp24Hours.Core (>= 9.1.20)
- Mvp24Hours.Infrastructure (>= 9.1.20)
- Mvp24Hours.Infrastructure.Cqrs (>= 9.1.20)
- Swashbuckle.AspNetCore (>= 6.5.0)
- Swashbuckle.AspNetCore.Filters (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 9.1.20 | 0 | 1/2/2026 |
| 8.25.5061 | 337 | 5/6/2025 |
| 8.7.151 | 466 | 7/15/2024 |
| 8.5.610 | 178 | 5/6/2025 |
| 8.3.261 | 195 | 3/26/2024 |
| 8.2.102 | 240 | 2/9/2024 |
| 8.2.101 | 180 | 2/7/2024 |
| 5.4.281 | 202 | 4/28/2025 |
| 4.1.191 | 271 | 1/19/2024 |
| 4.1.181 | 154 | 1/19/2024 |
| 3.12.262 | 231 | 12/26/2023 |
| 3.12.261 | 143 | 12/26/2023 |
| 3.12.221 | 213 | 12/22/2023 |
| 3.12.151 | 218 | 12/17/2023 |
| 3.6.221 | 6,751 | 6/22/2022 |
| 3.4.111 | 973 | 4/11/2022 |
| 3.2.241 | 694 | 2/24/2022 |
| 3.2.171 | 638 | 2/17/2022 |
| 3.2.151 | 597 | 2/15/2022 |
| 3.2.142 | 571 | 2/14/2022 |
| 3.2.141 | 577 | 2/14/2022 |
| 3.2.21 | 597 | 2/2/2022 |
| 3.1.243 | 596 | 1/25/2022 |
| 3.1.242 | 626 | 1/24/2022 |
| 3.1.241 | 598 | 1/24/2022 |
| 3.1.221 | 596 | 1/22/2022 |
| 3.1.201 | 600 | 1/20/2022 |
| 3.1.101 | 595 | 1/10/2022 |
| 2.12.291 | 485 | 12/29/2021 |
| 2.12.102 | 568 | 12/10/2021 |
| 2.12.101 | 500 | 12/10/2021 |
| 2.12.71 | 507 | 12/7/2021 |
| 2.11.241 | 4,486 | 11/24/2021 |
| 1.9.81 | 645 | 9/8/2021 |
| 1.7.61 | 677 | 7/6/2021 |
| 1.6.251 | 593 | 6/25/2021 |
| 1.6.101 | 604 | 6/10/2021 |
| 1.5.311 | 925 | 5/31/2021 |
| 1.5.281 | 713 | 5/28/2021 |
| 1.5.171 | 1,078 | 5/17/2021 |
| 1.5.141 | 599 | 5/14/2021 |
| 1.5.132 | 624 | 5/13/2021 |
| 1.5.131 | 541 | 5/13/2021 |
| 1.4.301 | 545 | 4/30/2021 |
| 1.4.221 | 541 | 4/22/2021 |
| 1.4.220 | 516 | 4/22/2021 |
| 1.4.120 | 526 | 4/12/2021 |
| 1.4.82 | 549 | 4/9/2021 |
| 1.4.81 | 518 | 4/8/2021 |
| 1.4.21 | 538 | 4/2/2021 |
| 1.4.20 | 502 | 4/2/2021 |
| 1.0.20 | 528 | 4/2/2021 |
| 1.0.19 | 535 | 4/1/2021 |
| 1.0.18 | 569 | 3/16/2021 |
| 1.0.17 | 529 | 3/15/2021 |
| 1.0.16 | 549 | 3/15/2021 |
| 1.0.15 | 567 | 3/8/2021 |
| 1.0.12 | 515 | 3/2/2021 |
| 1.0.11 | 518 | 3/1/2021 |
| 1.0.10 | 532 | 2/12/2021 |
| 1.0.9 | 494 | 2/11/2021 |
| 1.0.8 | 510 | 2/11/2021 |
| 1.0.7 | 510 | 2/11/2021 |
| 1.0.6 | 508 | 2/11/2021 |
| 1.0.5 | 519 | 2/11/2021 |
| 1.0.4 | 533 | 2/11/2021 |
| 1.0.3 | 534 | 2/9/2021 |
| 1.0.2 | 515 | 2/3/2021 |
| 1.0.1 | 605 | 2/1/2021 |
| 1.0.0 | 594 | 1/29/2021 |