Giải pháp khóa phân tán RedLockNet trong .NET Core
Địa chỉ mã nguồn trên GitHub
samcook/RedLock.net - Triển khai thuật toán Redlock bằng C#
Cấu trúc mã nguồn
Các lớp chính: RedLockFactory, RedLock
Khởi tạo và giải phóng khóa
Phân tích từ lớp RedLock:
private readonly ICollection<RedisConnection> redisNodes; // Tập hợp node Redis
private readonly int requiredNodes; // Số lượng cần thiết để ...
Đăng vào ngày 2 tháng 8 lúc 01:19
Hệ thống hai token JWT
Lý do cần làm mới token JWTToken truy cập (Access Token) xử lý yêu cầu nghiệp vụ, Token làm mới (Refresh Token) quản lý gia hạn, phân tách quyền hạn để giảm thiểu rủi ro khi bị rò rỉ
Hệ thống hai token nhằm đạt được hai mục tiêu: tự động gia hạn và bảo mật
Cơ chế làm mới JWT (JSON Web Token) giải quyết mâu thuẫn giữa tính bảo mật của token ngắn ...
Đăng vào ngày 8 tháng 7 lúc 07:12
Tối ưu hóa hiệu suất API cho các tác vụ xử lý dữ liệu lớn bằng Background Jobs
Trong quá trình phát triển ứng dụng web, các tác vụ xử lý dữ liệu nặng hoặc gọi API bên thứ ba có độ trễ lớn thường làm giảm trải nghiệm người dùng do thời gian chờ đợi phản hồi (timeout). Để giải quyết vấn đề này, việc chuyển đổi các tác vụ đồng bộ sang xử lý bất đồng bộ thông qua Background Jobs là một giải pháp tối ưu. Dưới đây là cách triển ...
Đăng vào ngày 29 tháng 6 lúc 16:12
Xây dựng Identity hỗ trợ nhiều cơ sở dữ liệu khác nhau trong .NET Core
Bài viết này hướng dẫn cách tách riêng logic Identity thành các dự án độc lập, cho phép dễ dàng chuyển đổi hoặc hỗ trợ nhiều loại cơ sở dữ liệu khác nhau (MySQL, SQL Server, PostgreSQL...) mà không làm ảnh hưởng đến code chính.
1. Tạo thư viện EF chung (ExtendEF)
Đầu tiên, tạo một thư viện lớp chứa các định nghĩa entity và DbContext dùng chung ...
Đăng vào ngày 29 tháng 6 lúc 13:23
Thực hiện AOP bằng AutoFac trong .NET Core
Thêm thư viện cần thiết
Sử dụng Nuget để cài đặt gói Autofac.Extras.DynamicProxy.
Xây dựng lớp ghi nhận hành vi
/// <summary>
/// Lớp xử lý giao diện (thực hiện Castle.DynamicProxy.IInterceptor)
/// </summary>
public class GhiNhanKetQua : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLin ...
Đăng vào ngày 29 tháng 6 lúc 06:52
Tích hợp Nacos với .NET Core và Ocelot
Cài đặt từ nuget:
nacos-sdk-csharp.Extensions.Configuration
Để cài đặt Nacos thông qua Docker, lưu ý rằng các phiên bản mới mở thêm cổng 9848 và 9849 cho giao tiếp GRPC:
docker run --name nacos \
-e MODE=standalone \
-p 8848:8848 -d \
-p 9848:9848 \
-p 9849:9849 \
--restart always nacos/nacos-server:latest
Truy cập giao diện Nacos tại:
http:/ ...
Đăng vào ngày 27 tháng 6 lúc 18:19
MongoDB Compass - Công cụ giao diện quản lý CSDL
Cấu hình kết nối MongoDB qua giao diện người dùng
Tải xuống MongoDB Compass (GUI) | Hướng dẫn kết nối
Cú pháp kết nối terminal:
mongo IP:PORT/TEN_CSDL -u TEN_TAI_KHOAN -p MAT_KHAU
Ví dụ: 192.168.0.168:27017/test -u admin -p 123456
Thiết lập ứng dụng .NET
Kết nối CSDL MongoDB:
mongodb://localhost:27017
Định dạng chuỗi kết nối đầy đủ:
mongodb://T ...
Đăng vào ngày 26 tháng 6 lúc 04:30
Đóng gói thư viện Canal trong .NET Core
Bài viết này sẽ hướng dẫn cách đóng gói và sử dụng Canal trong ứng dụng .NET Core, bao gồm việc tạo service chạy nền, xử lý dữ liệu thay đổi từ cơ sở dữ liệu và cấu hình kết nối.
Service chạy nền
Để lắng nghe và xử lý các thay đổi từ Canal, chúng ta triển khai service nền bằng IHostedService. Service này chịu trách nhiệm kết nối, nhận message ...
Đăng vào ngày 25 tháng 6 lúc 16:21
Hiểu sâu về Dependency Injection trong .NET
Nguyên tắc Inversion of Control (IoC)
Dependency Injection (DI) là một kỹ thuật cụ thể để thực hiện nguyên lý Inversion of Control – đảo ngược kiểm soát. Thay vì các thành phần tự tạo ra phụ thuộc của mình, chúng được cung cấp từ bên ngoài bởi một container quản lý.
Trước đây, lập trình viên phải chủ động khởi tạo đối tượng:
IDbConnection conne ...
Đăng vào ngày 24 tháng 6 lúc 20:00
Triển khai Ứng dụng .NET Core trên CentOS với Quản lý Đa Tiến trình bằng Supervisor
Chuẩn bị Môi trường
Yêu cầu hệ thống:
Dự án .NET Core đã kiểm thử cục bộ
Máy ảo CentOS 7+
Công cụ kết nối SSH như MobaXterm
Cấu hình Firewall
Kiểm tra cổng đang sử dụng:
ss -tuln | grep 6000
Mở cổng ứng dụng và giao diện Supervisor:
firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --zone=public --add-port=6001/tcp --pe ...
Đăng vào ngày 18 tháng 6 lúc 21:43