phuongnam366377
Thành viên thường trực




- Tham gia
- 25/10/19
- Bài viết
- 233
- Được thích
- 227
Xây dựng RPC Server cho Excel / Access bằng Delphi – Tận dụng lại DLL và bảo mật mã nguồn
Trong quá trình phát triển các hệ thống tự động hóa cho Excel / Access, chúng ta thường gặp một vấn đề quen thuộc:- Logic xử lý nằm ở nhiều máy
- Mã nguồn VBA dễ bị lộ
- Khó cập nhật khi thay đổi thuật toán
Điều này thực chất không phải là công nghệ mới – nó đã tồn tại hơn 30 năm, nhưng ngày nay vẫn được dùng trong nhiều hệ thống hiện đại.
1. Một chút lịch sử: từ DCOM đến gRPC
Trước đây hệ sinh thái Windows của Microsoft đã sử dụng DCOM và COM+ để các chương trình gọi hàm từ xa.Ví dụ:
- Microsoft Excel
- Microsoft Access
Cách này từng rất phổ biến trong các hệ thống:
- ERP
- hệ thống ngân hàng
- hệ thống doanh nghiệp Windows
- gRPC
- REST API
- Microservices
Máy khách gọi một hàm trên máy chủ như gọi hàm local.
2. RPC Server cho Excel / Access hoạt động như thế nào?
Kiến trúc đơn giản:
Mã:
Excel / Access (VBA)
│
│ RPCExecute()
▼
RPC Server (Delphi)
│
│ Load DLL Plugin
▼
Business Logic DLL
Mã:
RPCExecute("127.0.0.1",9000,"MathPlugin.dll","Add","[5,7]")
3. Ví dụ thực tế
VBA trong Excel / Access
Mã:
Sub Test()
Debug.Print RPCExecute("127.0.0.1", 9000, "MathPlugin.dll", "Add", "[5,7]")
End Sub
Mã:
12
DLL phía Server (Delphi)
Mã:
function Add(A, B: Integer): Integer;
begin
Result := A + B;
end;
4. Điểm mạnh cực kỳ thú vị của mô hình này
Tái sử dụng DLL đã viết
Nếu trước đây bạn đã viết:
Mã:
Math.dll
Finance.dll
AI.dll
Chỉ cần:
Mã:
RPCLoadDLL('MathPlugin.dll');
Bảo mật mã nguồn
VBA thường bị lộ logic vì người dùng có thể:
Mã:
Alt + F11
Với RPC:
Mã:
Excel / Access
↓
chỉ gọi hàm
Người dùng không thể xem thuật toán.
Cập nhật cực nhanh
Nếu thay đổi thuật toán:
Mã:
Replace DLL
- cập nhật Excel
- cập nhật Access
- gửi file mới
Hỗ trợ nhiều ngôn ngữ
Client có thể viết bằng:- VBA
- Python
- C#
- JavaScript
- Go
5. So sánh với các công nghệ RPC khác
| Công nghệ | Nền tảng | Độ phức tạp | Phù hợp Excel/Access |
|---|---|---|---|
| COM / DCOM | Windows | Trung bình | ✔ tốt |
| REST API | Cross-platform | Dễ | ✔ |
| gRPC | Cross-platform | Khó hơn | ✔ |
| RPC + DLL Plugin | Windows | Rất đơn giản | ✔✔✔ |
- cực nhẹ
- không cần framework lớn
- tận dụng code Delphi/C++ cũ
6. Khi nào nên dùng mô hình này?
Rất phù hợp khi:✔ Hệ thống nội bộ
✔ Excel / Access làm frontend
✔ Logic phức tạp cần bảo mật
✔ Muốn tái sử dụng DLL cũ
Ví dụ:
- hệ thống tính giá
- hệ thống phân tích dữ liệu
- hệ thống tài chính
- hệ thống AI nội bộ
7. Kết luận
Công nghệ như DCOM có thể không còn phổ biến như trước, nhưng ý tưởng Remote Procedure Call vẫn là nền tảng của rất nhiều hệ thống hiện đại.Ngày nay chúng ta thấy:
- gRPC
- microservices
- API server
Đối với các hệ thống Excel / Access, việc xây dựng một RPC Server với DLL plugin là một giải pháp:Client chỉ gọi hàm – Server xử lý logic.
- nhẹ
- nhanh
- bảo mật
- tái sử dụng code
