Ini mungkin terdengar sebagai pertanyaan aneh, tetapi di departemen saya, kami mengalami masalah dengan situasi berikut:
Kami sedang bekerja di sini pada aplikasi server, yang semakin besar dan semakin besar, bahkan pada titik yang kami pertimbangkan untuk membaginya menjadi bagian-bagian yang berbeda (file DLL), secara dinamis memuat ketika diperlukan dan membongkar sesudahnya, agar dapat menangani masalah kinerja.
Tetapi: fungsi yang kami gunakan, melewatkan parameter input dan output sebagai objek STL, dan seperti yang disebutkan dalam jawaban Stack Overflow , ini adalah ide yang sangat buruk. (Posting ini berisi beberapa ± solusi dan peretasan, tetapi semuanya tidak terlihat sangat solid.)
Jelas kita bisa mengganti parameter input / output dengan tipe C ++ standar dan membuat objek STL dari yang dulu ada di dalam fungsi, tetapi ini mungkin menyebabkan penurunan kinerja.
Apakah boleh untuk menyimpulkan bahwa, jika Anda mempertimbangkan untuk membangun sebuah aplikasi, yang mungkin tumbuh sebesar itu sehingga satu PC tidak bisa mengatasinya lagi, Anda tidak boleh menggunakan STL sebagai teknologi sama sekali?
Latar belakang lebih lanjut tentang pertanyaan ini:
Tampaknya ada beberapa kesalahpahaman tentang pertanyaan: masalahnya adalah sebagai berikut:
Aplikasi saya menggunakan sejumlah besar kinerja (CPU, memori) untuk menyelesaikan pekerjaannya, dan saya ingin membagi pekerjaan ini menjadi beberapa bagian (karena program ini sudah dibagi menjadi beberapa fungsi), tidak sulit untuk membuat beberapa DLL dari aplikasi saya dan meletakkan beberapa fungsi di tabel ekspor DLL tersebut. Ini akan menghasilkan situasi berikut:
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1 adalah turunan dari aplikasi, diinstal pada Machine1, sementara App_Inst2 adalah turunan dari aplikasi yang sama, diinstal pada Machine2.
DLL1.x adalah DLL, diinstal pada Machine1, sedangkan DLL2.x adalah DLL, diinstal pada Machine2.
DLLx.1 mencakup fungsi yang diekspor1.
DLLx.2 mencakup fungsi yang diekspor2.
Sekarang di Machine1 saya ingin menjalankan function1 dan function2. Saya tahu bahwa ini akan membebani Machine1, jadi saya ingin mengirim pesan ke App_Inst2, meminta instance aplikasi untuk melakukan function2.
Parameter input / output dari function1 dan function2 adalah objek STL (C ++ Standard Type Library), dan secara teratur saya mungkin mengharapkan pelanggan untuk melakukan pembaruan dari App_Inst1, App_Inst2, DLLx.y (tetapi tidak semuanya, pelanggan mungkin meningkatkan Machine1 tetapi bukan Machine2, atau hanya memutakhirkan aplikasi tetapi bukan DLL atau sebaliknya, ...). Tentunya jika antarmuka (parameter input / output) berubah, maka pelanggan terpaksa melakukan upgrade lengkap.
Namun, seperti yang disebutkan dalam URL StackOverflow yang dimaksud, kompilasi ulang App_Inst1 atau salah satu DLL yang sederhana dapat menyebabkan seluruh sistem berantakan, karenanya judul asli dari posting ini, tidak menganjurkan penggunaan STL (C ++ Template Standar Perpustakaan) untuk aplikasi besar.
Saya berharap bahwa dengan ini saya telah menyelesaikan beberapa pertanyaan / keraguan.