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 (2 người xem)

Người dùng đang xem chủ đề này

  • Tôi tuân thủ nội quy khi đăng bài

    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
    Một giải pháp khá thú vị là đưa toàn bộ logic lên Server và để Excel / Access gọi từ xa qua RPC (Remote Procedure Call).
    Đ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 DCOMCOM+ để các chương trình gọi hàm từ xa.
    Ví dụ:
    • Microsoft Excel
    • Microsoft Access
    có thể gọi các COM component chạy trên server.
    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
    Sau này khi internet phát triển, các công nghệ RPC hiện đại xuất hiện như:
    • gRPC
    • REST API
    • Microservices
    Dù công nghệ thay đổi, ý tưởng cốt lõi vẫn giống nhau:
    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
    Luồng xử lý:
    1️⃣ Excel / Access gọi
    Mã:
    RPCExecute("127.0.0.1",9000,"MathPlugin.dll","Add","[5,7]")
    2️⃣ RPC Server nhận request
    3️⃣ Server load DLL plugin
    4️⃣ Gọi hàm bên trong DLL
    5️⃣ Trả kết quả lại cho Excel

    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
    Kết quả:
    Mã:
    12

    DLL phía Server (Delphi)​

    Mã:
    function Add(A, B: Integer): Integer;
    begin
      Result := A + B;
    end;
    Server sẽ gọi hàm này và trả kết quả về cho VBA.

    4. Điểm mạnh cực kỳ thú vị của mô hình này​

    1️⃣ Tái sử dụng DLL đã viết​

    Nếu trước đây bạn đã viết:
    Mã:
    Math.dll
    Finance.dll
    AI.dll
    Bạn không cần viết lại.
    Chỉ cần:
    Mã:
    RPCLoadDLL('MathPlugin.dll');
    Server có thể gọi trực tiếp.

    2️⃣ Bảo mật mã nguồn​

    VBA thường bị lộ logic vì người dùng có thể:
    Mã:
    Alt + F11
    xem toàn bộ code.
    Với RPC:
    Mã:
    Excel / Access
        ↓
    chỉ gọi hàm
    Logic nằm ở server.
    Người dùng không thể xem thuật toán.

    3️⃣ Cập nhật cực nhanh​

    Nếu thay đổi thuật toán:
    Mã:
    Replace DLL
    Không cần:
    • cập nhật Excel
    • cập nhật Access
    • gửi file mới
    Toàn bộ client tự dùng logic mới ngay lập tức.

    4️⃣ Hỗ trợ nhiều ngôn ngữ​

    Client có thể viết bằng:
    • VBA
    • Python
    • C#
    • JavaScript
    • Go
    Miễn là gửi request đúng format.

    5. So sánh với các công nghệ RPC khác​

    Công nghệNền tảngĐộ phức tạpPhù hợp Excel/Access
    COM / DCOMWindowsTrung bình✔ tốt
    REST APICross-platformDễ
    gRPCCross-platformKhó hơn
    RPC + DLL PluginWindowsRất đơn giản✔✔✔
    Điểm đặc biệt của mô hình RPC + DLL Plugin:
    • 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
    đều dựa trên cùng một nguyên lý:
    Client chỉ gọi hàm – Server xử lý logic.
    Đố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:
    • nhẹ
    • nhanh
    • bảo mật
    • tái sử dụng code
    và cực kỳ phù hợp cho các hệ thống doanh nghiệp nội bộ.

     

    Bài viết mới nhất

    Back
    Top Bottom