Bối cảnh là bài viết thảo luận về hỗ trợ của System.Text.Json cho unions và closed class hierarchies trong .NET 11. Nguyên nhân kỹ thuật nằm ở việc xử lý serialization cho các cấu trúc dữ liệu phức tạp này gặp nhiều thách thức và "sharp edges" (các điểm khó xử). Hệ quả là các quyết định thiết kế đã được đưa ra để giải quyết vấn đề này. Điều đáng học là bài viết chia sẻ những trải nghiệm thực tế khi làm việc với tính năng mới này và các vấn đề cần lưu ý. Nếu bạn đang làm việc với serialization trong .NET 11, bài viết này cung cấp insight quan trọng về các giải pháp và giới hạn hiện tại của System.Text.Json.
Vì sao nên đọc: Bài viết này giúp lập trình viên hiểu rõ cách xử lý serialization cho unions và closed class hierarchies trong System.Text.Json của .NET 11.
Trả lời 3 câu hỏi ngắn để nhận điểm thưởng cho bài này. Chỉ làm khi bạn muốn lấy điểm.
3 câu hỏi · dưới một phút · không bắt buộc
Nguồn: https://andrewlock.net/exploring-the-dotnet-11-preview-7-the-pain-of-serializing-unions-and-closed-class-hierarchies-with-system-text-json. 8 Sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
Đang tải bình luận…
G# là ngôn ngữ kết hợp giữa cấu trúc của .NET và Go, mang lại sự linh hoạt cao cho người dùng.
Lập trình viên .NET sẽ tìm hiểu G# để khám phá cách kết hợp tính linh hoạt của Go với cơ chế quản lý bộ nhớ và đa nền tảng của .NET, giúp tối ưu hóa phát triển ứng dụng đa nền tảng hiệu quả hơn.
ASP.NET Core cho phép xử lý request mà không có thời gian giới hạn mặc định. Khi cần ngắt request, middleware timeout chỉ phản hồi RequestAborted thay vì cắt thời gian thực. Điều này có thể khiến request kéo dài vô hạn nếu không có chiến lược xử lý khác. Do đó, cần cấu hình middleware timeout rõ ràng để tránh lỗi thời gian chờ. Khi triển khai, hãy kiểm tra cấu hình và giá trị timeout phù hợp với yêu cầu dịch vụ.
Bài viết giải thích cách xử lý request timeouts trong ASP.NET Core để ứng dụng của bạn trở nên đáng tin cậy hơn khi xử lý các yêu cầu dài.
Khi bảng dữ liệu đạt hàng triệu bản ghi, việc dùng Skip và Take trong .NET để phân trang trở nên chậm và tiêu tốn tài nguyên. Nguyên nhân là cách tính toán vị trí bằng cách duyệt toàn bộ các bản ghi trước khi lấy phần cần thiết, làm tăng thời gian truy vấn. Hệ quả là độ trễ tăng, tiêu thụ bộ nhớ cao và khả năng mở rộng giảm sút khi số người truy cập tăng. Để giải quyết, bài viết giới thiệu ba phương án thay thế: Offset pagination, Keyset pagination và Cursor pagination, mỗi loại có cách tính toán và chỉ số riêng. Nếu bạn đang cân nhắc có nên đọc bài gốc, hãy xem cách bài phân tích lợi thế và nhược điểm của mỗi phương án để chọn giải pháp phù hợp với truy vấn của mình.
Bài này giúp lập trình viên .NET chọn phương pháp phân trang tối ưu khi bảng dữ liệu lớn thay vì dùng Skip và Take.
Bài viết hướng dẫn cách sử dụng .NET 10 và C# để chuyển đổi HTML thành PDF trong một API endpoint thực tế. Nó mô tả việc tạo endpoint xuất hoá đơn với hỗ trợ ngắt trang và lặp lại tiêu đề bảng trên mỗi trang. Đồng thời giải thích cách định dạng tiền tệ theo vùng văn hoá (culture-aware currency) và thiết lập hàng đợi render để quản lý các yêu cầu đồng thời. Các bước triển khai bao gồm việc chọn thư viện PDF phù hợp, cấu hình tùy chọn rendering và xử lý lỗi cơ bản. Từ đó, người đọc có thể học cách tối ưu hóa hiệu suất và độ tin cậy khi tạo PDF từ HTML trong môi trường .NET 10.
Hướng dẫn chi tiết này giúp bạn xây dựng endpoint chuyển đổi HTML sang PDF trong .NET 10 với các tính năng nâng cấp như ngắt trang, tiêu đề bảng lặp lại và hỗ trợ văn hóa.
Bài viết phân tích cách .NET từng có nhiều ngôn ngữ truy vấn riêng cho từng định dạng dữ liệu trước khi LINQ ra đời nhằm thống nhất chúng. Sau đó, mọi định dạng dữ liệu đều dần được chuyển đổi thành objects và truy vấn bằng LINQ.
LINQ không chỉ là công cụ tìm kiếm dữ liệu mà còn là khái niệm trừu tượng hóa và tiêu chuẩn hóa cách xử lý dữ liệu trong các ngôn ngữ .NET, giúp lập trình viên tránh rắc rối của các ngôn ngữ riêng biệt và tối ưu hóa hiệu suất cho các ứng dụng lớn.
Khi Chris Woody Woodruff lần đầu xuất bản sách Beyond Boundaries: Networking Programming with C# and .NET, ông đã dự đoán rằng nội dung sẽ cần được cập nhật theo sự phát triển của nền tảng. Ông nhấn mạnh rằng lĩnh vực mạng luôn thay đổi và .NET cũng không ngừng phát triển. Tuy nhiên, mức độ mở rộng của .NET 11 và C# 15 đã vượt quá mong đợi, bao gồm nhiều tính năng mới liên quan đến mạng và hiệu suất. Điều này đã buộc tác giả thực hiện bản cập nhật lớn nhất mà sách từng có, nhằm tích hợp đầy đủ những thay đổi mới. Bài học từ trải nghiệm này là khi viết sách về công nghệ, cần theo dõi sát nhật bản phát hành của nền tảng và sẵn sàng sửa đổi ngay khi có bản phát hành lớn như .NET 11 và C# 15.
Bài viết này cung cấp thông tin cập nhật quan trọng về những thay đổi lớn trong .NET 11 và C# 15 giúp lập trình viên nắm bắt xu hướng phát triển mới nhất.
Bài viết trình bày cách xây dựng một pipeline trích xuất dữ liệu hoá đơn tự sửa chữa bằng C#. Sử dụng IronOCR để nhận dạng văn bản và Claude để phân tích cấu trúc, kết hợp kiểm tra OCR confidence và field provenance để quyết định khi nào thực hiện retry. Khi confidence thấp hoặc provenance không rõ, hệ thống tự động lặp lại OCR và sau đó đưa ra quyết định whether để gửi cho người dùng hoặc tiếp tục xử lý. Kết quả là giảm đáng kể số lần can thiệp thủ công và tăng độ tin cậy của việc trích xuất trường dữ liệu. Đây là ví dụ thực tiễn cho việc tích hợp OCR và mô hình ngôn ngữ để tạo pipeline tự động và có khả năng tự phục hồi.
We need to output exactly one short Vietnamese sentence, explaining why a developer should read this. Must be correct Vietnamese, no opening filler, no markdown, no Chinese/Japanese/Korean/Han characters. Only Vietnamese and Latin characters. Must not contain any non-Latin characters. So we must avoid diacritics? Vietnamese uses diacritics, which are Latin characters with diacritics, allowed? The instruction says "chỉ dùng chữ Việt và chữ Latin". That includes diacritics as part of Vietnamese letters, so it's okay. Must not contain any Chinese/Japanese/Korean/Han characters. So we can write a Vietnamese sentence with diacritics. Must be exactly one sentence, short. No markdown. No opening filler. So just the sentence. Example
Mô hình domain phong phú thường bị phản đối vì EF Core yêu cầu public setters và constructor, khiến nhiều người nghĩ phải dùng anemic model.
Lập trình viên nên đọc bài này vì EF Core thực sự hỗ trợ mô hình domain giàu (rich domain model) thông qua các tính năng như entity framework core design patterns và lazy loading, cho phép bạn giữ nguyên logic domain mà không cần chuyển đổi thành mô hình anemic.
Đọc tin ở đây, luyện code, học theo lộ trình và luyện IELTS trên các sản phẩm anh em — tất cả kết nối với nhau trong hệ sinh thái 8 Sync.
Cổng chính của hệ sinh thái: giới thiệu sản phẩm, blog và bảng giá trọn bộ.
Khám pháHọc theo lộ trình rõ từng chặng: video, quiz chấm tự động, certificate và mentor đang làm nghề.
Xem lộ trình1.000+ bài DSA, đề tiếng Việt, chấm tự động 7 ngôn ngữ — nhiều bài FREE, chạy ngay trên trình duyệt.
Luyện miễn phíChấm bốn kỹ năng IELTS bằng AI, phản hồi chi tiết theo rubric.
Dùng thử miễn phíAI IDE 22 MB cho dev Việt.
Tải miễn phíBộ nhớ tổ chức cho AI agent.
Khám pháAI trực Fanpage, tự sàng lọc lead.
Dùng thử