Vì sao KHÔNG nên sử dụng Excel (VBA) làm máy chủ (3 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
    235
    Được thích
    227

    Quá trình viết và thử Máy chủ VBA phát hiện ra nhiều thứ nên Keo ChatGPT viết bài sau bàn luận cho vui ===\._)()(-


    Vì sao KHÔNG nên sử dụng Excel (VBA) làm máy chủ​

    Trong nhiều hệ thống nội bộ, đặc biệt là các công cụ phân tích dữ liệu, nhiều người có xu hướng tận dụng Excel + VBA để làm rất nhiều việc: tính toán, xử lý dữ liệu, thậm chí làm máy chủ (server) cho các ứng dụng khác kết nối vào.

    Điều này có thể hoạt động trong các thử nghiệm nhỏ. Tuy nhiên trong thực tế, Excel/VBA hoàn toàn không phù hợp để làm máy chủ. Nếu cố gắng sử dụng theo hướng này, hệ thống rất dễ gặp các vấn đề như treo máy, xung đột kết nối hoặc mất dịch vụ.

    Bài viết này phân tích rõ lý do vì sao.


    1. Excel có thể bị đóng bất cứ lúc nào​

    Excel là một ứng dụng desktop dành cho người dùng, không phải là một dịch vụ hệ thống.

    Điều này có nghĩa là:

    • Người dùng có thể đóng Excel bất cứ lúc nào
    • Excel có thể crash
    • Excel có thể restart khi cập nhật
    • Người dùng có thể vô tình tắt workbook chứa macro
    Nếu Excel đang đóng vai trò là máy chủ, toàn bộ dịch vụ sẽ biến mất ngay lập tức.

    Các máy khách kết nối tới server sẽ nhận lỗi:

    Connection refused<br>Server not available<br>
    Trong môi trường production, điều này là không thể chấp nhận.


    2. VBA chỉ chạy một luồng (Single Thread)​

    VBA được thiết kế để tự động hóa Excel, không phải để xử lý nhiều kết nối đồng thời.

    Đặc điểm quan trọng của VBA:

    • chỉ có 1 thread
    • mọi code chạy trên UI thread của Excel
    Điều này dẫn đến các vấn đề:

    • khi nhiều client kết nối → Excel chậm dần
    • nếu có xử lý nặng → Excel đơ hoàn toàn
    • giao diện Excel không phản hồi
    Nói cách khác, nếu dùng VBA làm server trong môi trường có nhiều kết nối, Excel sẽ nhanh chóng trở nên “ngu ra”.


    3. Mở nhiều file Excel dễ gây xung đột​

    Trong thực tế, người dùng thường mở nhiều workbook cùng lúc:

    Excel_File_1.xlsm<br>Excel_File_2.xlsm<br>Excel_File_3.xlsm<br>
    Nếu mỗi file đều chứa code khởi động server, hệ thống có thể gặp các tình huống như:

    • nhiều server cùng chạy
    • xung đột port
    • macro chạy trùng lặp
    • khó kiểm soát trạng thái hệ thống
    Ví dụ:

    Port 9000 already in use<br>
    Đây là vấn đề rất phổ biến khi cố gắng biến Excel thành một máy chủ.


    4. Excel không được thiết kế để chạy 24/7​

    Một máy chủ thực sự cần:

    • chạy liên tục
    • ổn định nhiều ngày hoặc nhiều tháng
    • quản lý tài nguyên tốt
    Trong khi đó Excel:

    • dễ bị memory leak khi chạy lâu
    • không có cơ chế quản lý dịch vụ
    • không có hệ thống restart tự động
    Excel được thiết kế để mở – xử lý – đóng, không phải để chạy như một dịch vụ nền.


    5. Excel phụ thuộc vào người dùng​

    Một máy chủ đúng nghĩa cần:

    • hoạt động độc lập
    • không phụ thuộc người dùng đăng nhập
    • không phụ thuộc giao diện
    Excel lại phụ thuộc hoàn toàn vào:

    • người dùng
    • giao diện GUI
    • trạng thái workbook
    Điều này khiến hệ thống server trở nên mong manh và khó quản lý.


    Kiến trúc đúng: tách server ra khỏi Excel​

    Giải pháp tốt nhất là tách máy chủ thành một chương trình độc lập.

    Ví dụ kiến trúc:

    Excel (Client)<br> │<br> │ RPC / TCP<br> ▼<br>RPCServer.exe<br> │<br> │ Plugin<br> ▼<br>Compute Engine (DLL)<br>
    Trong mô hình này:

    • Excel chỉ đóng vai trò client
    • server chạy trong một chương trình riêng
    • hệ thống ổn định và dễ quản lý hơn nhiều.

    Hai lựa chọn tốt cho máy chủ​

    1. Server dạng EXE​

    RPCServer.exe<br>
    Ưu điểm:

    • dễ debug
    • dễ restart
    • log rõ ràng
    • triển khai đơn giản

    2. Windows Service​

    RPCServerService.exe<br>
    Ưu điểm:

    • chạy cùng Windows
    • không phụ thuộc user login
    • ổn định lâu dài
    Đây là lựa chọn phổ biến cho hệ thống production.


    Vai trò đúng của Excel/VBA​

    Excel vẫn rất mạnh nếu dùng đúng mục đích.

    Excel nên dùng để:

    • phân tích dữ liệu
    • tính toán
    • giao diện người dùng
    • tự động hóa quy trình
    Nhưng không nên dùng để làm server.


    Kết luận​

    Excel và VBA là những công cụ cực kỳ hữu ích cho tự động hóa và phân tích dữ liệu. Tuy nhiên chúng không được thiết kế để làm máy chủ.

    Việc sử dụng Excel làm server có thể dẫn tới:

    • hệ thống không ổn định
    • xung đột khi mở nhiều workbook
    • treo Excel khi có nhiều kết nối
    • dịch vụ bị ngắt khi người dùng đóng ứng dụng
    Giải pháp đúng là:

    • để Excel làm client
    • xây dựng server riêng bằng EXE hoặc Windows Service
    Cách tiếp cận này giúp hệ thống ổn định, dễ mở rộng và dễ quản lý hơn rất nhiều.
     
    thấy tuyển Java Backend làm ứng dụng máy chủ lương cao nè , đâu thấy ai tuyển làm ứng dụng máy chủ bằng Excel đâu :p:p:p:p
     
    Upvote 0

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

    Back
    Top Bottom