सबसे पहले, अपने काम करने वाले मूल C++ कोड को न लें और इसे C++/CLI के रूप में संकलित करें। आपको भयानक परिणाम मिलेगा। दूसरा, अपने काम करने वाले देशी सी ++ कोड को न लें और इसे सी # में अनुवाद करने का प्रयास करें, साथ ही बेस क्लास लाइब्रेरीज़ का उपयोग करने के लिए स्थानों को ध्यान में रखते हुए, अपनी डेटा एक्सेस तकनीक बदलना और एमएफसी से डब्ल्यूपीएफ में अपना यूआई प्रतिमान समायोजित करना। आप सबसे पहले, जो पहले था, उत्पादन करने के लिए बहुत सारी ऊर्जा खर्च करेंगे।
इसके बजाय, अपने कामकाजी देशी सी ++ कोड लें और इसे दोबारा दोहराएं ताकि आपके पास एक या अधिक "व्यावसायिक तर्क" पुस्तकालय हों। यदि ये पहले से मौजूद हैं तो उनके पास COM इंटरफेस हो सकते हैं, वे कुछ "बाहरी सी" प्रकार के फ़ंक्शंस का पर्दाफाश कर सकते हैं, या वे कुछ C++ इंस्टेंस विधियों का पर्दाफाश कर सकते हैं। कोई चिंता नहीं। यदि वे पहले से मौजूद नहीं हैं, तो आपके पास दो विकल्प हैं। यदि प्रस्तुति परत द्वारा आवश्यक कुछ तरीकों की आवश्यकता है, और वे तारों की तरह सरल चीजें लेते हैं, तो कुछ तर्कों को व्यापार तर्क के प्रवेश द्वार के रूप में रखें। अब आप उन्हें पी/Invoke का उपयोग कर प्रबंधित यूआई (वीबी या सी #, विंडोज फॉर्म या डब्ल्यूपीएफ, जो कुछ भी) से कॉल कर सकते हैं। यदि बहुत कुछ है और आप उन्हें व्यवस्थित करना चाहते हैं, या यदि उन्हें जटिल structs या ऑब्जेक्ट्स लेने की आवश्यकता है तो एक सी ++/सीएलआई कक्षा या कक्षाएं लिखें जो देशी सी ++ कक्षाओं से बात कर सकती हैं, जबकि "सार्वजनिक रेफ क्लास" कक्षाओं को उजागर करते समय प्रबंधित यूआई के लिए। सी ++/सीएलआई मार्शलिंग और आजीवन मुद्दों को आसान बना देगा।
अपने नए यूआई के लिए, इसे स्क्रैच से लिखें, जहां आवश्यक हो वहां व्यवसाय तर्क में कॉल करें। पुरानी यूआई का उपयोग केवल अपनी क्षमताओं और सत्यापन के लिए एक मार्गदर्शिका के रूप में करें। यूआई बनाने के लिए अपनी नई यूआई तकनीक (डब्ल्यूपीएफ या जो भी) के "देखो और महसूस करें" का प्रयोग करें और यांत्रिक रूपांतरण का प्रयास न करें। आप बस पिक्सल का पीछा करते हैं और यदि आप पुरानी यूई के बहुत करीब से चिपके रहते हैं तो आपको कड़ी मेहनत करनी होगी। पुराने ऐप में 3 बटन और एक चेकबॉक्स था? ग्रेट, 3 डब्ल्यूपीएफ-लुकिंग बटन और एक डब्ल्यूपीएफ-दिखने वाला चेकबॉक्स आ रहा है। इसके बदले में आप रिबन पर स्विच कर रहे हैं? ठीक। जब आप पूरा कर लें तो अलग दिखना ठीक है।
फिर आप अपने मूल व्यापार तर्क पुस्तकालयों को तैनात करते हैं, फिर भी मूल कोड के रूप में संकलित, आपके सी ++/सीएलआई रैपर यदि आपके पास है, और आपका प्रबंधित यूआई है। यह फोन को छोड़कर कुछ भी काम करेगा।
मुझे बस फिर से कहना है कृपया परियोजना के शुरुआती चरण के हिस्से के रूप में अपने काम करने वाले देशी सी ++ व्यवसाय तर्क को सी # में बंद न करें। जब यह किया जाता है और काम करता है, यदि आपके पास एक अच्छा व्यवसाय कारण है (जैसे कि हम सी ++ देवताओं पर पैसा खर्च नहीं करना चाहते हैं) तो आप इसे देख सकते हैं। लेकिन पहले इसे इंटरऑप का उपयोग करके काम कर लें। इसका लाभ यह है कि यदि आपका अनुवाद उन लोगों द्वारा लिखे गए नाज़ुक व्यापार तर्क को गड़बड़ कर देता है जो आपके साथ नहीं हैं, तो आपकी वर्तमान टीम को पता नहीं है कि सी ++ सबटालेटियों पर निर्भर करते हुए, आप अपने शेष दिनों के लिए लिपटे पुस्तकालयों पर वापस आ सकते हैं।
स्रोत
2011-01-11 22:22:52
@all: मेरे वीसी ++ उत्पादों के बारे में अधिक जानकारी, इस उत्पाद में उद्देश्य सी आधारित ओओपी अवधारणाओं के साथ अधिकतर COM शामिल हैं, यह विकास उत्पाद के लगभग 17 वर्ष है। जो अनिवार्य रूप से बहुत से घटकों के साथ कोड का मतलब है। हाल ही में मेरे क्लाइंट ने मुझे इस पूरे उत्पाद को मर्ज करने का प्रस्ताव देने के लिए कहा है और यह मौजूदा किसी अन्य .NET उत्पाद के साथ कार्यक्षमता है और उन सुविधाओं को बढ़ाता है .. – KSH
@all: इससे हमें समस्या का समाधान करने के लिए एक दृष्टिकोण के बारे में सोचने के लिए मजबूर किया गया। व्यक्तिगत COM या DLLs की पहचान करने की योजना जो वीसी ++ में हैं जो सीधे .NET कार्यों के अंदर उपयोग किए गए रैपर के माध्यम से हो सकती हैं। आवश्यकता होने पर केवल इन मॉड्यूल को छूने की योजना है। नए ढांचे के सामान के साथ यूआई के पूर्ण पुनर्लेखन की योजना बनाने के अलावा। यूआई/कोड/अवधारणाओं पर अधिक सुझाव अधिक ज्ञान प्राप्त करने में मदद करेंगे .. – KSH