Điều này có vẻ như là một câu hỏi kỳ lạ, nhưng trong bộ phận của tôi, chúng tôi đang gặp rắc rối với tình huống sau:
Chúng tôi đang làm việc ở đây trên một ứng dụng máy chủ, ngày càng lớn hơn, thậm chí tại thời điểm chúng tôi đang xem xét chia nó thành các phần khác nhau (tệp DLL), tải động khi cần và dỡ tải sau đó, để có thể xử lý các vấn đề hiệu suất.
Nhưng: các hàm chúng ta đang sử dụng, đang truyền tham số đầu vào và đầu ra dưới dạng các đối tượng STL và như được đề cập trong câu trả lời Stack Overflow , đây là một ý tưởng rất tồi. (Bài đăng có chứa một số giải pháp và hack, nhưng tất cả trông không chắc chắn lắm.)
Rõ ràng chúng ta có thể thay thế các tham số đầu vào / đầu ra bằng các loại C ++ tiêu chuẩn và tạo các đối tượng STL từ các đối tượng một lần bên trong các hàm, nhưng điều này có thể làm giảm hiệu suất.
Bạn có thể kết luận rằng, trong trường hợp bạn đang xem xét xây dựng một ứng dụng, có thể phát triển đến mức mà một PC duy nhất không thể xử lý được nữa, bạn không được sử dụng STL như một công nghệ?
Thông tin thêm về câu hỏi này:
Dường như có một số hiểu lầm về câu hỏi: vấn đề là như sau:
Ứng dụng của tôi đang sử dụng một lượng lớn hiệu năng (CPU, bộ nhớ) để hoàn thành công việc của mình và tôi muốn chia nhỏ công việc này vào các phần khác nhau (vì chương trình đã được chia thành nhiều hàm), không khó để tạo một số DLL ra khỏi ứng dụng của tôi và đưa một số hàm vào bảng xuất của các DLL đó. Điều này sẽ dẫn đến tình huống sau:
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1 là phiên bản của ứng dụng, được cài đặt trên Machine1, trong khi App_Inst2 là phiên bản của cùng một ứng dụng, được cài đặt trên Machine2.
DLL1.x là một DLL, được cài đặt trên Machine1, trong khi DLL2.x là một DLL, được cài đặt trên Machine2.
DLLx.1 bao gồm chức năng xuất1.
DLLx.2 bao gồm chức năng xuất2.
Bây giờ trên Machine1 tôi muốn thực thi hàm1 và function2. Tôi biết rằng điều này sẽ quá tải Machine1, vì vậy tôi muốn gửi tin nhắn đến App_Inst2, yêu cầu ứng dụng đó thực hiện chức năng2.
Các tham số đầu vào / đầu ra của function1 và function2 là các đối tượng STL (Thư viện loại tiêu chuẩn C ++) và thường thì tôi có thể mong đợi khách hàng thực hiện cập nhật App_Inst1, App_Inst2, DLLx.y (nhưng không phải tất cả chúng, khách hàng có thể nâng cấp Machine1 nhưng không phải Machine2, hoặc chỉ nâng cấp các ứng dụng chứ không phải DLL hoặc ngược lại, ...). Rõ ràng nếu giao diện (tham số đầu vào / đầu ra) thay đổi, thì khách hàng buộc phải thực hiện nâng cấp hoàn chỉnh.
Tuy nhiên, như được đề cập trong URL StackOverflow được đề cập, việc biên dịch lại đơn giản App_Inst1 hoặc một trong các DLL có thể khiến toàn bộ hệ thống bị phá vỡ, do đó, tiêu đề ban đầu của bài đăng này, không khuyến khích sử dụng STL (Mẫu chuẩn C ++ Thư viện) cho các ứng dụng lớn.
Tôi hy vọng rằng tôi đã xóa một số câu hỏi / nghi ngờ.