यह एक अजीब सवाल लग सकता है, लेकिन मेरे विभाग में हमें निम्न स्थिति से परेशानी हो रही है:
हम यहां एक सर्वर एप्लिकेशन पर काम कर रहे हैं, जो बड़े और बड़े हो रहे हैं, यहां तक कि इस बिंदु पर कि हम इसे अलग-अलग हिस्सों (डीएलएल फाइलों) में विभाजित करने पर विचार कर रहे हैं, जरूरत पड़ने पर गतिशील रूप से लोड हो रहा है और बाद में उतारने में सक्षम होना चाहिए। प्रदर्शन के मुद्दे।
लेकिन: हम जिन कार्यों का उपयोग कर रहे हैं, वे एसटीएल ऑब्जेक्ट्स के रूप में इनपुट और आउटपुट पैरामीटर पारित कर रहे हैं, और जैसा कि स्टैक ओवरफ्लो उत्तर में उल्लेख किया गया है , यह एक बहुत बुरा विचार है। (पोस्ट में कुछ and समाधान और हैक्स शामिल हैं, लेकिन यह सब बहुत ठोस नहीं दिखता है।)
जाहिर है कि हम इनपुट / आउटपुट मापदंडों को मानक C ++ प्रकारों द्वारा प्रतिस्थापित कर सकते हैं और फ़ंक्शन के अंदर एक बार एसटीएल ऑब्जेक्ट बना सकते हैं, लेकिन इससे प्रदर्शन ड्रॉप हो सकता है।
क्या यह निष्कर्ष निकालना ठीक है कि, यदि आप किसी एप्लिकेशन का निर्माण करने पर विचार कर रहे हैं, जो कि इतना बड़ा हो सकता है कि एक सिंगल पीसी इसे अब और नहीं संभाल सकता है, तो आपको एसटीएल को एक तकनीक के रूप में उपयोग नहीं करना चाहिए?
इस प्रश्न के बारे में अधिक पृष्ठभूमि: प्रश्न के
बारे में कुछ गलतफहमी प्रतीत होती है: मुद्दा निम्नलिखित है:
मेरा काम अपने काम को पूरा करने के लिए प्रदर्शन (सीपीयू, मेमोरी) की बड़ी मात्रा का उपयोग कर रहा है, और मैं इस काम को विभाजित करना चाहूंगा अलग-अलग हिस्सों में (क्योंकि कार्यक्रम पहले से ही कई कार्यों में विभाजित है), मेरे आवेदन में से कुछ DLL बनाना मुश्किल नहीं है और कुछ कार्यों को उन DLL के निर्यात तालिका में डाल दिया है। यह निम्नलिखित स्थिति में परिणाम होगा:
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1 आवेदन का उदाहरण है, मशीन 1 पर स्थापित है, जबकि App_Inst2 उसी एप्लिकेशन का उदाहरण है, जो मशीन 2 पर स्थापित है।
DLL1.x एक DLL है, जो मशीन 1 पर स्थापित है, जबकि DLL2.x एक DLL है, जो मशीन 2 पर स्थापित है।
DLLx.1 निर्यात किए गए फ़ंक्शन 1 को शामिल करता है।
DLLx.2 निर्यात किए गए फ़ंक्शन 2 को कवर करता है।
अब Machine1 पर मैं function1 और function2 निष्पादित करना चाहता हूं। मुझे पता है कि यह मशीन 1 को अधिभारित कर देगा, इसलिए मैं App_Inst2 को एक संदेश भेजना चाहूंगा, जिससे उस एप्लिकेशन को फ़ंक्शन 2 का प्रदर्शन करने के लिए कहा जा सके।
Function1 और function2 के इनपुट / आउटपुट पैरामीटर STL (C ++ Standard Type Library) ऑब्जेक्ट हैं, और नियमित रूप से मैं ग्राहक से App_Inst1, App_Inst2, DLLx.y के अपडेट करने की उम्मीद कर सकता हूं (लेकिन उनमें से सभी नहीं, ग्राहक मशीन 1 को अपग्रेड कर सकते हैं लेकिन मशीन 2 नहीं, या केवल अनुप्रयोगों को अपग्रेड करें लेकिन डीएलएल या इसके विपरीत नहीं, ...)। स्पष्ट रूप से यदि इंटरफ़ेस (इनपुट / आउटपुट पैरामीटर) बदलता है, तो ग्राहक को पूर्ण अपग्रेड करने के लिए मजबूर किया जाता है।
हालाँकि, जैसा कि संदर्भित StackOverflow URL में उल्लेख किया गया है, App_Inst1 या DLL में से एक का पुन: संकलन पूरा सिस्टम अलग हो सकता है, इसलिए इस पोस्ट का मेरा मूल शीर्षक, STL (C ++ Standard Template) के उपयोग की सलाह देना पुस्तकालय) बड़े अनुप्रयोगों के लिए।
मुझे आशा है कि इसके द्वारा मैंने कुछ प्रश्नों / शंकाओं को दूर कर दिया है।