Bài đăng

Channels

 Chào mọi người, hôm nay chúng ta sẽ nói về kênh (channels). Nếu bạn đến từ một ngôn ngữ như Golang, bạn sẽ quen với kênh vì đó là tất cả những gì họ có để giải quyết các vấn đề về đồng thời và song song. Trong C#, kênh là một tính năng khá mới và vấn đề chính mà kênh giải quyết là vấn đề nhà sản xuất/người tiêu dùng (producer/consumer), đúng không? Vậy nên nếu bạn có thể tìm thấy một mô hình tinh thần trong mã của mình rằng một cái gì đó đang sản xuất cái gì đó và sau đó một cái khác phải tiêu thụ nó, bạn hầu như muốn sử dụng một kênh vì đó là một giải pháp rất tốt cho vấn đề đó. Và nhiều nhà cung cấp đám mây cũng cung cấp các giải pháp kênh như pub/sub (publisher/subscriber queues), vốn thực chất là một kênh. Vì vậy, đây là một công nghệ được sử dụng khá thường xuyên và cách nó hoạt động thì có thể mang lại lợi ích, đúng không? Trước hết, chúng ta sẽ bắt đầu với một ví dụ nhanh về lý do tại sao bạn có thể muốn sử dụng một kênh, sau đó chúng ta sẽ nhảy vào cách nó được tạo ra, nhì...

In Out Middleware

Mọi người, trong video này tôi sẽ dạy bạn mọi thứ bạn cần biết về Middleware. Chúng ta sẽ bắt đầu từ từ bằng cách học một vài khái niệm lập trình hàm, những khái niệm cốt lõi để hiểu cách Middleware hoạt động, và sau đó chúng ta sẽ xây dựng pipeline riêng của mình, điều này sẽ tăng độ khó lên khá nhiều từ đầu nhưng khi chúng ta đạt được, chúng ta sẽ thư giãn với việc xem xét một chút về ASP.NET Middleware, cách chúng làm việc tại middleware của HTTP client, chúng ta sẽ xem xét một số interceptors cho Axios và Angular HTTP client, và cũng sẽ chỉ để vui vẻ làm cùng một pipeline middleware mà chúng ta sẽ triển khai trong C# nhưng bằng JavaScript. Được rồi, hãy bắt đầu với tutorial Middleware C#. Chúng ta sẽ bắt đầu bằng cách học một vài paradigms lập trình hàm và cơ bản nhất là chúng ta có thể coi một hàm như một biến. Vậy cách chúng ta lưu trữ một số nguyên chúng ta có thể lưu trữ một hàm như một biến. Đây là khái niệm chính mà chúng ta sẽ cố gắng hiểu hôm nay. Và tại sao bạn muốn lưu tr...

Dependency Injection

Chào mọi người, hôm nay chúng ta sẽ tìm hiểu về Dependency Injection (DI). Nếu bạn thuộc nhóm những người đã sử dụng Dependency Injection nhưng không thực sự hiểu cách nó hoạt động bên trong, hoặc bạn muốn biết thêm về reflection, hoặc bạn không hài lòng khi chỉ sử dụng nó trong công việc hàng ngày mà vẫn còn thiếu hiểu biết sâu sắc, thì bạn đã đến đúng nơi. Hôm nay, chúng ta sẽ xây dựng một container Dependency Injection rất đơn giản của riêng mình và sẽ xem xét các thành phần bên trong, bắt đầu từ từ và xây dựng dần từng bước. Thông thường, bạn sẽ bắt đầu với một loại dịch vụ nào đó. Tôi sẽ tạo một dịch vụ mới gọi là `HelloService`, và nhân tiện, tôi đang sử dụng một chương trình gọi là LINQPad cho tutorial này, liên kết sẽ được đặt trong phần mô tả. Đây không phải là một liên kết liên kết đối tác, tôi chỉ rất thích sử dụng công cụ cơ bản này để thực hiện các bài học của mình. Vậy thì, tình huống điển hình là chúng ta có một dịch vụ nào đó mà chúng ta có thể sử dụng dịch vụ này trước...

Expression Trees

 Chào mọi người, hôm nay chúng ta sẽ nói về Expression Trees. Đây là một phần tiếp theo sau video về reflection vì chủ đề này nằm trong cùng một lĩnh vực về mã của bạn hoạt động như dữ liệu mà bạn sẽ thao tác. Vậy nếu bạn chưa xem video về reflection của tôi, tôi rất khuyên bạn nên xem nó. Tôi sẽ để một liên kết trong phần mô tả và có thể một chú thích ở đâu đó. Nếu bạn hiểu rằng mã bạn viết cũng là dữ liệu mà bạn có thể sử dụng để làm việc gì đó, thì bạn ổn. Và cũng chỉ vì mã của bạn là dữ liệu có nghĩa là dữ liệu và mã. Vậy khi bạn nhận được dữ liệu, bạn có thể tạo mã và đây là mục đích của Expression Trees. Trước khi chúng ta bắt đầu, tôi chỉ muốn giải thích nhanh về cấu trúc dữ liệu cây. Có một vài loại cây khác nhau, nhưng chủ yếu chúng ta sẽ xem xét cây nhị phân, loại phổ biến hơn. Ví dụ, nếu chúng ta có biểu thức '1 + 2', điều gì sẽ xảy ra là trước khi chúng ta có thể cộng bất kỳ thứ gì, chúng ta cần biết chúng ta đang cộng gì. Vậy nên chúng ta cộng 1 và 2, vì vậy chúng ...