Web c
- Sao chép liên kết
- Chia sẻ với Facebook
- Chia sẻ với X
- Chia sẻ với Pinterest
- Chia sẻ với Linkedin
- Gửi bài qua Email
gửi email cho tác giả
Trò chuyện với Gemini
ASP.NET Core + Blazor có dùng thư viện .dll chung winform để đọc 104, 61850, modbus được không
Có, hoàn toàn dùng được.
Do cả WinForms (các bản .NET hiện đại) và ASP.NET Core / Blazor đều chạy trên cùng nền tảng .NET Core / .NET Runtime (như .NET 6, 8, 9), bạn hoàn toàn có thể tái sử dụng thư viện .dll đã viết cho WinForms mà không cần viết lại logic kết nối truyền thông.
1. Các trường hợp tương thích của File .dll
Trường hợp 1: DLL được compile bằng
.NET Standardhoặc.NET Core / .NET 6/7/8/9Tương thích: 100%.
Cách dùng: Đưa file
.dllvào project ASP.NET Core / Blazor Server, add reference là gọi các hàm đọc Modbus, IEC 104, IEC 61850 bình thường.
Trường hợp 2: DLL cũ viết bằng
.NET Framework 4.x(WinForms ngày xưa)Tương thích:
Nếu dùng Blazor Server / ASP.NET Core, .NET Core có lớp tương thích (NET Standard compatibility shim) nên đa số thư viện xử lý logic/truyền thông thuần C# vẫn
Add Referencevà chạy OK.Nếu DLL phụ thuộc vào các thư viện C++ Unmanaged (C++ Win32 DLL native) hoặc Windows API đời cũ, ứng dụng ASP.NET Core của bạn bắt buộc phải host/chạy trên hệ điều hành Windows.
2. Sự khác biệt quan trọng giữa Blazor Server và Blazor WebAssembly (Wasm)
Đây là điểm bạn cần lưu ý đặc biệt khi làm web cho công nghiệp/SCADA:
Blazor Server (Khuyên dùng cho SCADA / IoT Control Center)
Cách hoạt động: Code C# (bao gồm cả file
.dlltruyền thông của bạn) chạy trực tiếp trên Server (máy tính/máy chủ chạy ASP.NET Core).Khả năng đọc IEC 104, 61850, Modbus: Rất tốt.
Server mở Socket/TCP Port kết nối trực tiếp đến PLC/RTU/Gateway. Thư viện
.dllchạy y hệt như trên WinForms.
Blazor WebAssembly (Wasm)
Cách hoạt động: Code C# chạy trực tiếp bên trong trình duyệt web của máy khách (Client Browser).
Khả năng đọc: KHÔNG chạy trực tiếp được.
Lý do: Trình duyệt web chặn việc tạo kết nối TCP Socket thô (Raw TCP Socket) vì lý do bảo mật. Các thư viện Modbus TCP, IEC 104, IEC 61850 dùng Raw TCP sẽ bị lỗi ngay lập tức trên Wasm.
Giải pháp nếu dùng Wasm: Phải dựng 1 dịch vụ Backend (ASP.NET Core Web API / Worker Service) chạy file
.dllđó để thu thập dữ liệu, sau đó đẩy lên WebAssembly qua SignalR (WebSockets) hoặc REST API.
3. Mô hình kiến trúc khuyến nghị cho hệ thống SCADA / Monitoring
Đối với các giao thức công nghiệp & điện lực (Modbus, 104, 61850):
[Thiết bị / PLC / RTU]
│ (Modbus / IEC 104 / IEC 61850 TCP)
▼
[ASP.NET Core Background Service / Worker]
└── Gọi file DLL cũ để Polling dữ liệu liên tục
└── Cache dữ liệu vào Memory (MemoryCache) / InfluxDB / PostgreSQL
│
│ (SignalR / WebSockets - Realtime)
▼
[Blazor UI (Server / Web App)]
└── Hiển thị Dashboard, cảnh báo, đồ thị cho người dùng
4. Tóm tắt các bước thực hiện trong ASP.NET Core / Blazor
Tạo project ASP.NET Core Web App / Blazor Server App.
Add Reference đến file
.dll(hoặc project chứa thư viện đọc 104/61850/Modbus).Đăng ký thư viện như một Singleton Service hoặc chạy trong
BackgroundService(IHostedService) của ASP.NET Core để nó liên tục duy trì kết nối TCP và đọc ngầm dữ liệu.Dùng SignalR để đẩy dữ liệu thời gian thực (real-time) từ Service đó lên giao diện Blazor.

