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

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
