REslava.Result: Giải pháp quan sát pipeline C# ba lớp với Source Generators
REslava.Result mang đến cách tiếp cận mới để quan sát và debug các pipeline trong C# nhờ vào Source Generators. Công cụ này cung cấp khả năng tạo biểu đồ thời gian biên dịch, theo dõi thời gian thực và tích hợp sâu với VS Code để gỡ lỗi từng bước một cách tự động.

Biểu đồ pipeline được tạo ra tại thời gian biên dịch (compile time) rất tuyệt vời để hiểu cấu trúc mã nguồn. Tuy nhiên, cấu trúc chỉ cho bạn biết điều gì có thể xảy ra chứ không phải là điều gì đã xảy ra. Đó chính là lúc khả năng quan sát thời gian chạy (runtime observation) trở nên quan trọng.
REslava.Result cung cấp một câu chuyện gồm ba lớp để giải quyết vấn đề này một cách toàn diện cho các nhà phát triển .NET.
✏️ Viết (Write)
Bạn chỉ cần thêm thuộc tính [ResultFlow] vào bất kỳ phương thức Result trôi chảy (fluent Result method) nào. Trình tạo mã nguồn (source generator) sẽ phát ra một hằng số biểu đồ Mermaid tại thời gian biên dịch. Bạn có thể dán mã này vào GitHub, Notion, VS Code hoặc mermaid.live để xem hình dạng toàn bộ pipeline trước khi chạy ứng dụng.
▶️ Chạy (Run)
Hãy biến lớp của bạn thành partial. Cùng một generator đó giờ đây sẽ phát ra một FlowProxy đi kèm với biểu đồ. Thay vì gọi svc.Process(...), bạn gọi svc.Flow.Process(...) và mọi nút trong pipeline sẽ được theo dõi (trace) tự động: giá trị đầu ra, loại lỗi và thời gian trôi qua (elapsed milliseconds). RingBufferObserver sẽ giữ N lần theo dõi gần nhất trong bộ nhớ với mức phân bổ bộ nhớ bằng không (zero allocation).
🐛 Gỡ lỗi (Debug)
Gọi svc.Flow.Debug.Process(...) để thực hiện một lần chạy debug theo dõi đơn lẻ. Generator sẽ tự động ghi file reslava-debug-{Method}.json vào thư mục bin/ của bạn. Phần mở rộng VS Code sẽ theo dõi các file */reslava-*.json — Bảng Debug (Debug Panel) sẽ tự động mở ra, không cần kích hoạt thủ công, không cần cấu hình cổng và không cần máy chủ HTTP.
VSCode REslava.Result Extension diagrams & runtime debug
Bên trong Bảng Debug, bạn sẽ thấy:
- Biểu đồ pipeline được hiển thị trực tiếp (live).
- Mỗi lần theo dõi được liệt kê: biểu tượng pass/fail, tên phương thức, số lượng nút, tổng thời gian ms.
- Chuyển từng bước qua các nút — bước hiện tại sẽ được làm nổi bật trong biểu đồ.
- Phát lại hoạt hình (animated replay) — tự động chạy qua tất cả các nút.
- Bộ chọn nhiều tệp — chuyển đổi giữa các tệp theo dõi mà không cần đóng bảng điều khiển.
FlowProxy được tạo tự động — bạn không cần viết bất kỳ mã kết nối observer nào, không cần đăng ký DI (Dependency Injection) và không cần hook khởi động. Chỉ cần làm cho lớp trở thành partial, rebuild lại và bạn có đầy đủ khả năng quan sát.
Ví dụ về mã nguồn:
// Bạn viết
public partial class OrderService
{
[ResultFlow]
public Result Process(int userId, int productId) =>
FindUser(userId)
.Ensure(IsActive, new ForbiddenError("inactive"))
.Bind(u => FindProduct(productId))
.Ensure(InStock, new NotFoundError("out of stock"))
.Bind(PlaceOrder);
}
// Bạn gọi (để debug):
svc.Flow.Debug.Process(userId, productId);
// → reslava-debug-Process.json được ghi tự động
// → trình theo dõi file VSIX kích hoạt
// → Bảng Debug mở ra với trace, sẵn sàng để bước qua từng bước
Mọi thứ đều được tạo tự động. Không có gì được viết tay.
Tìm hiểu thêm tại: https://reslava.github.io/nuget-package-reslava-result/resultflow/runtime/
Bài viết liên quan

Công nghệ
CEO Palantir: 10% thế giới "ghét chúng tôi một cách chuyên nghiệp"
05 tháng 5, 2026

Phần mềm
Chính phủ Mỹ yêu cầu Instructure giải trình về sự cố tấn công mạng và lộ dữ liệu Canvas
13 tháng 5, 2026

Phần mềm
Google tung ra Antigravity 2.0: Ứng dụng lập trình thế hệ mới với công cụ CLI và gói đăng ký AI Ultra
19 tháng 5, 2026
