IConfiguration vs IOptions NET
Synchronous and Asynchronous in .NET Core
Model Binding and Validation in ASP.NET Core
ControllerBase vs Controller in ASP.NET Core
ConfigureServices and Configure methods
IHostedService interface in .NET Core
ASP.NET Core request processing
| CQRS | Retry Policies | |
🔗 Integration with MassTransit vs MediatR |
// Install-Package MediatR.Extensions.Microsoft.DependencyInjection
// Command
public record CreateOrderCommand(string OrderId, string Customer) : IRequest<bool>;
// Handler
public class CreateOrderHandler : IRequestHandler<CreateOrderCommand, bool>
{
public Task<bool> Handle(CreateOrderCommand request, CancellationToken cancellationToken)
{
Console.WriteLine($"Order Created: {request.OrderId} for {request.Customer}");
return Task.FromResult(true);
}
}
// Usage
await mediator.Send(new CreateOrderCommand("123", "Alice"));
// Install-Package MassTransit
// Message Contract
public record OrderSubmitted(string OrderId, string Customer);
// Consumer
public class OrderSubmittedConsumer : IConsumer<OrderSubmitted>
{
public Task Consume(ConsumeContext<OrderSubmitted> context)
{
Console.WriteLine($"Order Received: {context.Message.OrderId} for {context.Message.Customer}");
return Task.CompletedTask;
}
}
// Configuration
services.AddMassTransit(x =>
{
x.AddConsumer<OrderSubmittedConsumer>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host("localhost", "/", h => { });
cfg.ReceiveEndpoint("order-queue", e =>
{
e.ConfigureConsumer<OrderSubmittedConsumer>(context);
});
});
});
MediatR is best for in-process decoupling and CQRS inside a single service. MassTransit is best for distributed messaging across microservices. In many real-world systems, they are used together: MediatR for internal commands/queries, and MassTransit for inter-service communication and orchestration.
| CQRS | Retry Policies | |