Skip to content

Releases: quangtrungsoft/PureCQRS

v1.0.0

05 Apr 09:35

Choose a tag to compare

Release v1.0.0

Tổng quan

Phiên bản 1.0.0 là bản phát hành đầu tiên của TVE.PureCQRS, một thư viện CQRS/Mediator nhẹ, tối giản và dễ tích hợp cho các ứng dụng .NET.

Thư viện hỗ trợ:

  • Send cho request có và không có response
  • Publish cho notification/event với nhiều handler
  • đăng ký handler tự động từ assembly
  • pipeline behavior cho các tác vụ cross-cutting
  • hoạt động trên .NET 7, .NET 8.NET 9

Tính năng nổi bật

1. Mediator nhẹ và hiệu năng cao

  • Cung cấp IMediator, ISenderIPublisher
  • Tối ưu bằng cache wrapper và xử lý theo runtime type
  • Hỗ trợ cả request generic và request dạng object

2. Hỗ trợ CQRS rõ ràng

  • IRequest<TResponse> cho truy vấn có dữ liệu trả về
  • IRequest cho command không trả về kết quả
  • IRequestHandler<TRequest, TResponse>IRequestHandler<TRequest> cho xử lý request

3. Notification đa handler

  • INotificationINotificationHandler<TNotification>
  • Một notification có thể có nhiều handler
  • Các handler notification được thực thi song song khi phù hợp

4. Pipeline behavior

  • Hỗ trợ IPipelineBehavior<TRequest, TResponse>
  • Dễ dàng thêm logging, validation, caching, authorization
  • Cho phép mở rộng mà không làm thay đổi handler chính

5. Đăng ký DI đơn giản

  • Tự động quét và đăng ký handler từ assembly
  • Hỗ trợ cấu hình custom mediator
  • Hỗ trợ chọn lifetime cho handler

Hành vi và xử lý lỗi

  • Ném HandlerNotFoundException khi request không có handler tương ứng
  • Ném InvalidRequestException khi truyền vào object không phải request hợp lệ
  • Publish sử dụng runtime type để xử lý notification chính xác hơn

Ví dụ sử dụng nhanh

builder.Services.AddPureCQRS(config =>
{
    config.RegisterServicesFromAssemblyContaining<Program>();
});
var user = await mediator.Send(new GetUserByIdQuery(id));
await mediator.Send(new CreateUserCommand("Alice"));
await mediator.Publish(new UserCreatedNotification(id, "Alice"));

Ghi chú

Đây là bản phát hành đầu tiên, đặt nền tảng cho việc xây dựng ứng dụng theo hướng CQRS rõ ràng, gọn nhẹ và dễ mở rộng.