मेरे पास एक दोपहर है। VB6 पर .NET के लाभों को निकालने के लिए ... मैं क्या कहूं? [बन्द है]


9

मेरी कंपनी एक छोटी बीस-मैन इंजीनियरिंग फर्म है। यहां सभी एप्लिकेशन प्रोग्रामिंग VB6 में दो लोगों द्वारा की जाती है, जिन्होंने पिछले 25+ वर्षों से यहां काम करते हुए, और खुद को एक विधानसभा पृष्ठभूमि से VB6 सिखाया है।

नतीजतन, VB6 कोड भयावह कोड की बदबू से भरा हुआ है, जैसे कि कड़े टाइप किए गए चर के टन , बहुत लंबे कार्य, सार्वजनिक वैश्विक चर (जिनमें से कुछ तर्क और रिटर्न मान के आसपास से अधिक पसंद किए जाते हैं), और एक भी वस्तु नहीं। कक्षा। रिफैक्टिंग असंभव है, और किसी भी बदलाव के लिए कोड के माध्यम से बहुत अधिक खुदाई की आवश्यकता होती है, और एक बार किए जाने के बाद, हमेशा अधिक छिद्रों का परिचय होता है।

मेरे बॉस को एहसास हो रहा है कि VB6 एक मृत तकनीक है, और नए विकास के लिए .NET पर जाने की मेरी दलील सुनने को तैयार है। हम .NET के लिए आगे बढ़ रहे हैं, लेकिन वह इसे नए विंडोज ओएस के साथ कॉम्पैटिबिलिटी बनाए रखने के तरीके के रूप में देखता है, न कि बेहतर कोड लिखने के तरीके के रूप में।

मैं VB6 पर .NET लैंग्वेज के फायदों के बारे में सबसे अच्छा कैसे समझा सकता हूं, यह केवल अप-टू-डेट-नेस से परे है। मैं सबसे अच्छी तरह से जोर देने के लिए क्या कह सकता हूं कि .NET की चाल एक अच्छी चाल है लेकिन यह भी है कि इसका मतलब है कि हमारे वर्तमान प्रोग्रामिंग प्रतिमान को भी बदलना शुरू करना चाहिए? जैसे ही मेरे बॉस ने सुना कि विज़ुअल बेसिक .NET वीबी 6 की तरह ही दिखता है, मुझे पता है कि उनकी पहली वृत्ति केवल हमारे पुराने कोड मेस को .NET में बदलना होगा।

मैं समझता हूं कि एक दोपहर में किसी की मानसिकता को बदलना असंभव होगा, लेकिन मैं कम से कम अपने विधानसभा-टूइंग बॉस को कैसे मना सकता हूं कि दृढ़ता से टाइप किए गए चर, कस्टम वर्ग और निजी क्षेत्र जैसी चीजें समय की कुल बर्बादी नहीं हैं। और ऊर्जा?


4
VB6 डेवलपर्स एक मरने वाली नस्ल हैं? .NET डेवलपर्स और VB6 डेवलपर्स को भर्ती करने का प्रयास करें। देखें कि आपको प्रत्येक के लिए कितने सीवी मिलते हैं। तथ्य यह है कि एक बार 2 पुराने टाइमर रिटायर होने के बाद, कोई प्रतिस्थापन नहीं होगा (या बल्कि, बहुत महंगा प्रतिस्थापन) एक तर्क के लिए पर्याप्त होना चाहिए।
16:56

3
मैं सराहना करता हूं कि वह कोशिश कर सकता है, लेकिन अधिकांश स्वाभिमानी डेवलपर्स एक मृत भाषा से दूर रहेंगे। निश्चित नहीं है कि जब एमएस VB6 का समर्थन करना बंद करने जा रहा है, लेकिन संसाधनों को खोजने में तेजी से मुश्किल हो रही है (और जीवन का उत्पाद अंत VB6 के खिलाफ एक और तर्क है)। यह निश्चित नहीं है कि यह कितना मदद करेगा, लेकिन अध्ययन करें: msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 आईडीई के जीवन का अंत था। और मैं जैसे "कस्टम समर्थन करार Microsoft से उपलब्ध हो सकता है" - क्या शुल्क पर, मुझे आश्चर्य है कि ...
Oded

1
@ वास्तव में, इनमें से कोई भी तर्क वास्तव में इस तथ्य पर स्पर्श नहीं करता है कि VB.NET, VB6, वैश्विक सार्वजनिक चर और सभी के लिए स्टैंड-इन के रूप में उपयोग करने योग्य है। एक बार जब हम .NET का उपयोग कर रहे होते हैं , तो हम वास्तव में इसके सभी लाभों का उपयोग कैसे करते हैं?
dlras2

1
शायद उदाहरणों द्वारा समझाएं। क्या कुछ समस्या है जो VB6 में हल करना मुश्किल है जो VB .NET में हल करना बहुत आसान होगा? क्या आप अपने कोड बेस से कुछ उदाहरण चुन सकते हैं और दिखा सकते हैं कि कैसे उन्हें .NET में बेहतर कोड से साफ किया जा सकता है जो VB6 में सुविधाओं के साथ संभव नहीं होगा?
FrustratedWithFormsDesigner

1
@DanRasmussen VB.NET VB6 परियोजनाओं को सही ढंग से (अभी तक तय नहीं किया गया) आयात नहीं कर सका। यह अपग्रेड करने के लिए गैर-तुच्छ है।

जवाबों:


16

संक्षिप्त उत्तर: आपके द्वारा प्रश्न में सूचीबद्ध मानदंडों के आधार पर उनके दिमाग को बदलने के लिए कुछ भी नहीं किया जा सकता है जो सभी तकनीकी हैं । यह एक धार्मिक बहस के बराबर है । विफलता का सबसे तेज़ मार्ग एक तर्क प्रस्तुत करना है जो दर्शकों के दृष्टिकोण से नहीं है, इस मामले में व्यापार मालिकों।

दीर्घ उत्तर: व्यवसाय में परिवर्तन केवल एक चीज और एक चीज द्वारा संचालित होता है। नीचे की रेखा के लिए लाभ।

... मैं कम से कम अपने विधानसभा-टूइंग बॉस को कैसे मना सकता हूं कि दृढ़ता से टाइप किए गए चर, कस्टम वर्ग और निजी क्षेत्र जैसी चीजें समय और ऊर्जा की कुल बर्बादी नहीं हैं?

वे न केवल समय और ऊर्जा की बर्बादी कर सकते हैं, बल्कि इससे भी महत्वपूर्ण बात यह है कि वे आपके पैसे खर्च करते हैं ! आपको मात्रात्मक रूप से यह दिखाने में सक्षम होना चाहिए कि आपके सुझावों से समय के साथ पर्याप्त लाभ होगा। केवल स्वच्छ कोड का दावा करना "बेहतर" पर्याप्त नहीं है, क्योंकि स्वच्छ कोड की लागत अधिक उत्पादन करने का तरीका है।

यदि आप यह स्पष्ट कर सकते हैं कि आधुनिक तकनीक का उपयोग करने की लागत कैसे बढ़ेगी ($COST + X) * TIME = $PROFIT, Xतो एक गैर-तुच्छ पोस्टिव संख्या कहां है और TIMEअपेक्षाकृत कम है आप एक सम्मोहक परिदृश्य बना सकते हैं।

ROI की गणना करने का दूसरा तरीका (निवेश पर वापसी)

ROI फॉर्मूला

यदि यह आरओआई / आरओआर एक तुच्छ संख्या है, विशेष रूप से समय की लंबी अवधि में, तो आपके पास कोई व्यावसायिक मामला नहीं है।

आपकी कंपनी वास्तव में अपना पैसा कैसे बनाती है?

कोड की कितनी लाइनें? कितने ग्राहक हैं? एक साल में कितना राजस्व इस सॉफ्टवेयर का उत्पादन करता है? राजस्व ज्यादातर अनुबंध का समर्थन करता है? या नए लाइसेंस? लक्ष्य बाजार स्थिर है? विस्तार हो रहा? ठेका? सॉफ्टवेयर कुछ अन्य बहुत अधिक लाभदायक उत्पाद के लिए नुकसान का नेता है?

एक अच्छे बिज़नेस मैन के लिए टेबल पर पैसा लगाना मुश्किल होता है।

बेशक आपको कठिन तथ्यों के साथ अपने बयानों का समर्थन करने में सक्षम होना चाहिए। इसका मतलब है कि आपको वास्तविक संख्या प्रदान करने में सक्षम होने की आवश्यकता है जो आपको वास्तविक व्यवसाय को समझने में मदद करती है न कि केवल अकादमिक तकनीकी विवरण के बारे में।

न केवल पेशेवरों

इसके अलावा एक विस्तृत जोखिम विश्लेषण प्रदान करना और ये जोखिम क्या हैं $COSTअगर वे हुए, तो उन्हें यह समझाने में मदद मिलेगी कि आपके पास एक यथार्थवादी मामला है और आप केवल इस बात पर ध्यान नहीं दे रहे हैं कि आप अब VB6 नहीं करना चाहते हैं।

पुराने कुत्तों को नए गुर सिखाना

... मैं क्या सबसे अच्छा जोर देने के लिए कह सकता हूं कि .NET की चाल एक अच्छा कदम है अगर और केवल अगर हमारे वर्तमान प्रोग्रामिंग प्रतिमान भी बदलना शुरू हो जाए? ...

प्रोग्रामिंग प्रतिमान को बदलना या बदलना नई तकनीक के अनुसार मुहावरेदार होना जोखिम के विश्लेषण का हिस्सा है। लेकिन यह एक अलग तर्क है जब आप साबित कर चुके हैं कि पहली जगह में बदलाव करके महत्वपूर्ण धन प्राप्त करना है।

व्यवसायी लोग व्यावसायिक मामलों को सुनना पसंद करते हैं, जैसे तकनीकी लोग तकनीकी मामलों को सुनते हैं। आपके प्रश्न में आपके सभी मामले तकनीकी गुणों की जासूसी कर रहे हैं जो आपकी स्थिति में सर्वश्रेष्ठ हैं।

भविष्यवाणी

मैं यहाँ कुछ धारणाएँ बना रहा हूँ VB6 ऐप, छोटी दुकान, कुछ डेवलपर्स, 2 पुराने डेवलपर / व्यवसाय के मालिक एक आला बाजार ऐप की ओर इशारा कर रहे हैं जो शायद परिपक्व है (बग्स और काम आसपास के हैं), काफी सुविधा पूर्ण और अपेक्षाकृत स्थिर, परवाह किए बिना की "गड़बड़" कोड आधार है। यह मुझे विश्वास दिलाता है कि छोटे उपयोगकर्ता आधार में साल दर साल नाटकीय रूप से वृद्धि नहीं हो रही है, जो मुझे निम्नलिखित निष्कर्ष पर ले जाती है।

वास्तव में इस एप्लिकेशन के साथ तकनीकी दिशा बदलने के लिए कोई वास्तविक सम्मोहक व्यावसायिक कारण नहीं है। और VB.Net के लिए पोर्टिंग अप करना समय की बर्बादी है क्योंकि आपके पास सिर्फ गड़बड़ है, लेकिन अब इसके साथ और अधिक के साथ, और 2/3 विकास टीम के लिए कुछ भी नया सीखने के लिए समर्पित नहीं है। सौभाग्य।


2
दुर्भाग्य से पुनर्लेखन की लागत (प्लस प्रशिक्षण, प्लस विशेषज्ञता प्राप्त करना) आमतौर पर ऐप को चालू रखने की लागत को कम से कम, कम और मध्यम शब्दों में पूरा करती है। हालांकि, लंबी अवधि में, आप उस जोखिम को चलाते हैं जिसे आपके पुनर्लेखन को स्वयं $ next_new_nchnology में फिर से लिखना पड़ सकता है।
gbjbaanb

4
+1 धार्मिक बहस। अगर ओपी .NET में काम करना चाहता है तो उसे एक .NET शॉप में नौकरी मिलनी चाहिए; मैं कहूंगा कि इस कंपनी में VB6 से .NET में जाना संदिग्ध लाभ के साथ एक बड़ा जोखिम है।
कर्क ब्रॉडहर्स्ट

महान जवाब, सिवाय इसके कि आप उसके हिस्से के बारे में "रिफैक्टिंग निग असंभव है, और किसी भी बदलाव के लिए कोड के माध्यम से बहुत अधिक खुदाई की आवश्यकता होती है, और एक बार किए जाने के बाद, हमेशा अधिक छेद शुरू करने लगते हैं।" यह व्यवसाय के लिए मूल्य का अंतिम विवरण है। यह दिखाते हुए कि वे व्यवसाय के पैसे की लागत के बिना कोडबेस को बदलने में असमर्थ हैं, आपके उत्तर के अनुरूप एक बहुत ही मान्य तर्क है। बेशक, उस बयान का समर्थन करने के लिए मीट्रिक वहाँ होना चाहिए।

@ GlenH7 व्यक्तिगत रूप से मुझे लगता है कि आप जो उद्धृत करते हैं वह नाटकीय व्यक्तिगत राय और बयानबाजी है क्योंकि ओपी अपनी व्यक्तिगत राय और एजेंडे को आगे बढ़ाने के अलावा किसी भी चीज के लिए कोई चिंता नहीं दिखाता है। मेरा उत्तर यह प्रस्तावित करना है कि वे इस बात पर विचार नहीं कर रहे हैं कि परिवर्तन के लिए वास्तविक चालक क्या होगा और यह वह नहीं है जो वे सोचते हैं या विचार करते हैं। मेरा कहना है कि "महंगी" एक दीर्घकालिक अवधि में बड़े पैमाने पर परिवर्तन हैं , वे हमेशा उसी समय की तुलना में सस्ता होंगे जो वे उसी समय पर प्रस्तावित कर रहे हैं। यह कहते हुए कि वे क्या कहते हैं, और आप एक अस्थिर व्यापार तर्क को उद्धृत करते हैं।

सहमत थे कि बयान में बयानबाजी की डिग्री थी। कुछ दुकानों (और नहीं, वे आम तौर पर छोटे वाले नहीं हैं) विफलताओं को ट्रैक करते हैं / बचते हैं ताकि बग के बारे में कठिन मैट्रिक्स उत्पन्न करना संभव हो। OTOH, अधिकांश दुकानें उस जानकारी को नहीं रखती हैं और यह एक "आंत महसूस" से अधिक कुछ नहीं है जो एक व्यावसायिक प्रस्तुति में बहुत अधिक नहीं है।

11

मेरे पास एक ग्राहक है जिसका प्रमुख उत्पाद VB6 में लिखा गया है और 3 लोगों द्वारा बनाए रखा गया है। मैं उनकी मदद करने के लिए आया क्योंकि उनका एक साथी था जो चाहता था कि वे एक वेब सेवा को बुलाएं। VB6 से करना बहुत कठिन है, लेकिन VB.NET या C # से आसान है, और मैंने उन्हें एक .NET असेंबली लिखी है जो VB6 को COM घटक की तरह देखता है ताकि वे इसे कॉल कर सकें। तब उन्हें किसी को एक वेब सेवा प्रदान करने की आवश्यकता थी। तब वे थोड़ा स्टैंडअलोन उपयोगिता लिखना चाहते थे और इसे कुछ जानकारी को एन्क्रिप्ट करने और डिक्रिप्ट करने की आवश्यकता थी, और कुछ XML को पार्स करने की। मैंने उन्हें .NET में लिखना सिखाया। पिछले 5 वर्षों में, उनके अधिक से अधिक कोड .NET में हैं, भले ही फ्लैगशिप उत्पाद बिल्कुल भी कम नहीं हुआ है। इसके कुछ हिस्से हैं जिनसे वे घृणा करते हैं - प्रत्येक ऐप में उनके पास है - और जहां वे कर सकते हैं वे इन हिस्सों को बाहर खींच रहे हैं (अब सिकुड़ना शुरू होता है) और उन्हें सेवाओं या अलग-अलग उपयोगिताओं में डाल दिया। इसके बाकी हिस्से को holus-bolus को .NET में बदल दिया जाएगा। हाँ, खराब चर नाम और सभी - मेरे दिमाग में .NET को स्थानांतरित करने के बहुत सारे लाभ हैं, भले ही वे अपने वर्तमान प्रोग्रामिंग प्रतिमान को नहीं बदलते हों। इसमें शामिल है:

  • आप बेहतर खोज, बेहतर Intellisense, तेजी से बनाता है, आदि के साथ नवीनतम विज़ुअल स्टूडियो का उपयोग कर सकते हैं
  • आप एक सभ्य स्रोत नियंत्रण प्रणाली के साथ एकीकृत कर सकते हैं (अर्थात वीएसएस नहीं)
  • .NET के साथ आने वाली लाइब्रेरी मुफ्त में हैं जो एन्क्रिप्शन, एक्सएमएल पार्सिंग, इमेज प्रोसेसिंग, आदि जैसी चीजों का छोटा काम करती हैं
  • एक .NET प्रोजेक्ट पर अंतर्राष्ट्रीयकरण और स्थानीयकरण बहुत आसान है (यह एक विशाल कनाडाई ग्राहक से पूछताछ के साथ, जिसे फ्रांसीसी और अंग्रेजी दोनों संस्करणों की आवश्यकता होगी, हो सकता है कि मेरे ग्राहक के लिए शेष राशि का दोहन हो)
  • सस्ती नियंत्रण पुस्तकालयों (टेलिक, इन्फ्रास्ट्रक्चर, कॉम्पोनेन्टऑन आदि) आपको लगभग बिना किसी लागत के अद्भुत क्षमता प्रदान करते हैं
  • गर्मियों में छात्र की तरह अस्थायी मदद पाना बहुत आसान होगा, ऐसी परिस्थितियों में जहां उन्हें VB6 सिखाने के लिए खर्च किया जाने वाला समय इसके लायक नहीं है (चर्चा करें कि नए फुलटाइम भाड़े पर इसे पढ़ाने के बारे में आपको कैसा लगता है)
  • आपका एप्लिकेशन UAC जागरूक होगा, इसलिए यह Vista, 7, और 8. पर बेहतर तरीके से चलेगा। इसे XP संगतता मोड में चलाने की आवश्यकता नहीं होगी

वहाँ अधिक है, लेकिन निश्चित रूप से यह पर्याप्त है?

प्रोग्रामिंग प्रतिमानों की बात, मजबूत टाइपिंग, संकलक आपका मित्र है, एनकैप्सुलेशन आपका मित्र है और इसी तरह मेरे दिमाग में है (और मुझे इन विचारों को पूरा करने के लिए भुगतान मिलता है) पूरी तरह से अलग है। यदि आप उस पहाड़ी पर मरना चाहते हैं तो आगे बढ़ें, लेकिन आप VB6 की एक प्रति के साथ मर रहे होंगे।


आपके समापन पैराग्राफ का क्या मतलब है?
dlras2

6
वह ".NET पर जा रहा है" और "चलो सभी प्रोग्राम एक अलग तरीके से" अलग-अलग हैं, और यदि आप दूसरे से लड़ने के लिए चुनते हैं, तो न केवल आप सफल होने की संभावना नहीं रखते हैं, आप लगभग निश्चित रूप से उन्हें स्थानांतरित करने के लिए नहीं जा रहे हैं। उस दृष्टिकोण के साथ नेट। मेरा मतलब है कि मैं मानता हूं कि उन्हें एक अलग तरह का कार्यक्रम करना चाहिए। लेकिन .NET का सबसे अच्छा तरीका है "जैसे आपके पास अभी है, लेकिन चॉकलेट सॉस और स्प्रिंकल्स के साथ!"
केट ग्रेगोरी

मैं उन्हें विभिन्न समस्याओं के रूप में संपर्क करने के लिए लाभ समझता हूं, लेकिन समस्या यह है कि अलग-अलग समस्याओं के रूप में उनके पास पहुंचना बस .NET में समान रूप से अनम्य कार्यक्रमों को सुनिश्चित करता है।
dlras2

1
आपके पास बेहतर अनुप्रयोग होंगे (अच्छे नियंत्रण, अधिक कार्यक्षमता) और कुछ बेहतर प्रक्रिया (स्रोत नियंत्रण में चुपके और शायद आइटम ट्रैकिंग भी) डेवलपर्स के साथ जो अब देखते हैं कि यह अलग तरीके से किया जा सकता है, और यह कि दर्द को बदलने के लायक है इन महान लाभों की वजह से। वे आपके द्वारा उनसे पूछी जाने वाली अगली चीज़ पर अधिक ग्रहणशील होंगे। और "अप्राप्य" बाइनरी नहीं है। कोड महान नहीं होगा, लेकिन स्थिति अभी भी इससे बेहतर होगी। आपने विश्वसनीयता भी साबित कर दी है।
केट ग्रेगोरी

8

मैंने कुछ साल पहले (कंपनी के कस्टम ईआरपी सिस्टम) VB6 प्रोजेक्ट के साथ शुरुआत की थी और मैं धीरे-धीरे इसे .NET पर माइग्रेट कर रहा हूं। यह कहीं-कहीं आधा-अधूरा काम है।

सबसे पहले, VB6 से VB.Net में परिवर्तित करना लगभग हमेशा एक बुरा विचार है (और मैंने उस पर बहुत शोध किया)। वहाँ बस बहुत अलग है। इसके अलावा, अगर आपके बॉस को लगता है कि VB.Net "बस VB6 की तरह है" तो वह पूरी तरह से गलत है और आपको अपना आउटलुक तेजी से बदलना होगा।

मेरी रणनीति दो कोड-बेस को अलग-अलग रखने और उन्हें अलग-अलग रखने और फिर धीरे-धीरे पूरे मॉड्यूल को VB6 से .NET तक ले जाने की थी, लेकिन केवल जब उस मॉड्यूल के बारे में एक महत्वपूर्ण परिवर्तन हुआ था, तो हम कुछ लागत को संशोधित कर सकते थे। फिर भी, पुनर्लेखन एक बड़ा महंगा और जोखिम भरा काम है।

मौजूदा VB6 को नए .NET कोड के साथ एकीकृत करने के दो तरीके हैं (और आप शायद ऐसा बहुत लंबे समय तक करेंगे, इसलिए आप बेहतर तरीके से इस विचार के अभ्यस्त हो जाएंगे)। मैंने इसके बारे में पहला तरीका .NET में छोटे मॉड्यूल लिखना शुरू किया था और फिर मुख्य VB6 एप्लिकेशन को कुछ कमांड लाइन मापदंडों में गुजरने वाले .NET निष्पादन योग्य लॉन्च किया है। यह काम किया है, लेकिन चेतावनी दी है कि .NET में 4 से 10 सेकंड का स्टार्ट-अप टाइम हिट है, इसलिए आप सीमित हैं कि आप इस तरह से क्या कर सकते हैं।

एक बार जब यह वास्तव में दर्दनाक होना शुरू हो गया, तो मैंने रणनीति को फ़्लिप किया और अपने मुख्य .NET अनुप्रयोग में मौजूदा VB6 फॉर्म प्रदर्शित करने के लिए इस CodeProject लेख से विधि का उपयोग किया । एक बार जब मैं इस मार्ग से नीचे चला गया, तो मैं केवल एक .NET स्टार्टअप समय हिट को प्राप्त करने में सक्षम था, और तैनाती के लिए ClickOnce का उपयोग करता था, जो पहले VB6 ऐप कैसे तैनात किया गया था, इसकी तुलना में एक गॉडसेंड था।

मैंने कहा, यहाँ VB6 पर .NET में मिलने वाले फायदे हैं:

  • बेहतर दृढ़ता रूपरेखा (NHibernate, EntityFramework, Linq2Sql आदि)
  • LINQ (मैं पर्याप्त तनाव नहीं कर सकता कि यह कितना महत्वपूर्ण है)
  • जेनेरिक्स!
  • लैम्ब्डा सिंटैक्स ("छेद के बीच में" जैसे सभी समस्याओं को हल करता है)
  • इसी तरह Actionऔर Funcप्रकार
  • प्रतिबिंब (कुछ ऐसा जो आप शायद ही कभी उपयोग करते हैं, लेकिन जब आप इसे बड़ा करते हैं)
  • बहुत बेहतर इकाई परीक्षण समर्थन (बेशक, मुझे संदेह है कि आप अपने अन्य कर्मचारियों को इकाई परीक्षण के लिए मना लेंगे, लेकिन आपको चाहिए)
  • ReSharper (और अन्य रीफैक्टरिंग / प्रोफाइलिंग उपकरण) (MZ-Tools की तुलना में 10x बेहतर)
  • क्लिकऑन और / या सेटअप / इंस्टॉलर प्रोजेक्ट
  • विंडोज सर्विस प्रोजेक्ट
  • सच्चा ऑब्जेक्ट-ओरिएंटेड सपोर्ट (VB6 COM पर आधारित है और इस विभाग में वास्तव में खराब है।)
  • स्थैतिक टाइपिंग
  • XML समर्थन में बेक्ड
  • WPF और विंडोज फॉर्म (VB6 के नियंत्रण बहुत सीमित हैं)
  • WCF
  • बहुत अधिक उदाहरण कोड ऑनलाइन
  • अपवाद (VB6 की त्रुटि से निपटने की तुलना से बिल्कुल भयानक है)
  • विजुअल स्टूडियो के स्रोत नियंत्रण एकीकरण
  • Decimal प्रकार (VB6 में प्रथम श्रेणी दशमलव प्रकार कभी नहीं था, भले ही इसमें CDec हो)
  • के लिए प्रथम श्रेणी का समर्थन Guid
  • 64-बिट पूर्णांक के लिए प्रथम श्रेणी का समर्थन
  • बेहतर संग्रह पुस्तकालय
  • ReportViewer
  • मल्टीथ्रेडिंग, टास्क समानांतर लाइब्रेरी

VB6 के नुकसान:

  • आप इसे एक प्रदर्शन नोटिस करेंगे। यह चिंता करने के लिए पर्याप्त नहीं हो सकता है, लेकिन मुझ पर भरोसा करें, आप इसे नोटिस करेंगे। VB6 सभी के बाद मूल कोड के लिए संकलित करता है।

निष्पक्ष होने के लिए, यहाँ एक संयुक्त VB6 / .NET समाधान बनाए रखने के कुछ नुकसान हैं:

  • दो डेटा एक्सेस लेयर को बनाए रखना (अपने VB6 ऐप को वास्तव में एक मान लेना)
  • सेवाओं / रूपों / आदि को उजागर करने के लिए अतिरिक्त वायरिंग। एक तरफ से दूसरी तरफ
  • अपने सिर में रखने के लिए दो बार जटिलता / वास्तुकला

अब, जैसा कि आपने संकेत दिया है, आप वास्तव में अपने आर्किटेक्चर को जमीन से पुनर्निर्माण करना चाहते हैं यदि आप .NET में कोड लिखना शुरू करते हैं। हालाँकि, ऐसा लगता है कि आपकी कंपनी का कोई भी व्यक्ति .NET या / या जावा प्रोग्रामिंग की दुनिया से परिचित नहीं है, जो कि बहुत सारे पैटर्न और व्यवहार हैं जो सामान्य से लेकर बड़े एंटरप्राइज़ फ्रेमवर्क से आते हैं।

यदि आप किसी ऐसे व्यक्ति को लेते हैं, जो किसी फॉर्म पर एक बटन खींच रहा है, तो उस पर डबल क्लिक करें, और क्लिक इवेंट हैंडलर में सीधे कुछ एसक्यूएल स्ट्रिंग्स लिख रहा है, और जो उनके लिए काम कर रहा है, उन्हें सोलिड का अनुसरण करने के लिए उन्हें फायदा पहुंचाना वास्तव में कठिन है। डिज़ाइन सिद्धांत। दूसरी ओर, यदि आप बुलेट को काटते हैं और यह तय करते हैं कि सभी नए कोड स्वचालित इकाई परीक्षणों द्वारा 90% या उससे अधिक कवर होने जा रहे हैं, तो आपको जल्दी से एहसास होगा कि जब तक आप SOLID डिजाइन सिद्धांतों को नहीं अपनाते हैं, तब तक यह करना मुश्किल है।

इसलिए आपको स्थिति की वास्तविकता पर बहुत कठोर नज़र डालने की आवश्यकता है। मेरे मामले में, मैं एकमात्र प्रोग्रामर था, और मैंने सभी नए कोड को इकाई परीक्षण के लिए निर्धारित किया था, भले ही मुझे इसके साथ कोई अनुभव नहीं था। मैं पर्याप्त तनाव नहीं कर सकता कि इस नकारात्मक प्रभाव ने मुझे पहले सप्ताह में, यहां तक ​​कि पहले महीनों में क्या मिल सकता है। फिर भी, मैं इसे करने के लिए दृढ़ था, और मैंने प्रबंधन से खरीदारी की थी। अधिकांश लोगों के पास वह विलासिता नहीं है। अब मेरे पास बहुत सारे कोड हैं और मैंने लगभग किसी भी मुद्दे के साथ एक प्रमुख रिफैक्टिंग को पूरा किया है।

वास्तविक रूप से, आप इकाई परीक्षण नहीं करने जा रहे हैं, जिसका अर्थ है कि आपकी टीम के साथियों के लिए निर्भरता इंजेक्शन जैसे सिद्धांतों को सही ठहराना कठिन है। आप वास्तु लाभ के अलावा अन्य गुण पर .NET को बेचने जा रहे हैं। आपको बेहतर पुस्तकालय समर्थन और बेहतर उपकरणों पर ध्यान केंद्रित करना होगा। यही एक चीज है जो गूंजती रहेगी। मैं आपके डेमो में निम्नलिखित का सुझाव दूंगा:

  • एक Windows प्रपत्र प्रोजेक्ट बनाएँ (WPF और xaml से दूर रहें - यह बहुत चौंकाने वाला है)
  • SQL डेटाबेस से कनेक्ट करें (कुछ परीक्षण डेटाबेस)
  • इसके लिए एक डेटा मॉडल बनाने के लिए Linq2Sql या EntityFramework का उपयोग करें
  • एक रिपॉजिटरी वर्ग बनाएँ जिसमें कुछ संस्थाओं की सूची वापस करने की विधि हो
  • Linq का उपयोग करते हुए उस विधि में एक क्वेरी लिखें, intellisense को इंगित करें
  • बताते हैं कि linq सभी वस्तुओं पर काम करता है, न कि केवल संस्थाओं के लिए
  • दिखाएँ कि यदि आप डेटाबेस को बदलते हैं और मॉडल को पुन: उत्पन्न करते हैं, तो आपको एक संकलन त्रुटि मिलती है
  • DataGridViewमुख्य विंडो पर ड्रॉप करें
  • ग्रिड को रिपॉजिटरी से संस्थाओं के साथ आबाद करके डेटाबाइंडिंग प्रदर्शित करें
  • ग्रिड के बारे में सभी शांत सामग्री को इंगित करें जो VB6 से बहुत बेहतर है
  • एक .rdlc फ़ाइल बनाएँ (रिपोर्ट)
  • Visual Studio के अंदर एक साधारण रिपोर्ट बनाएं
  • खिड़की पर एक रिपोर्ट दर्शक छोड़ें और रिपोर्ट दर्शक के अंदर रिपोर्ट प्रस्तुत करें
  • (जाहिर है आप की जरूरत है ReportViewer स्थापित और यह सब पहले अभ्यास किया है)
  • "बीच में छेद" समस्या के साथ आओ और फिर Actionएक पैरामीटर के रूप में एक विधि बनाकर इसे हल करने का प्रदर्शन करें । पैरामीटर के रूप में एक और विधि पारित करके पहले ऐसा करें, और फिर लंबोदर सिंटैक्स का उपयोग करके एक अनाम प्रतिनिधि को पास करके उनके दिमाग को उड़ा दें
  • List<T>और Dictionary<T1,T2>संग्रह कक्षाओं का उपयोग करके जेनरिक का प्रदर्शन करें और दिखाएं कि यह कैसे जोरदार टाइप कोड बनाता है (VB6 में समान सामान है, लेकिन यह गतिशील रूप से टाइप किया गया है)
  • एक foreachलूप लिखें जो शर्मनाक रूप से समानांतर है, System.Diagnostics.Stopwatchइसे निष्पादित करने में लगने वाले समय को मापने के लिए उपयोग करें, फिर लूप को लूप में बदलने के लिए कार्य समानांतर लाइब्रेरी का उपयोग करें Parallel.Foreachऔर मल्टी-कोर मशीन पर मानकर स्पीड-अप प्रदर्शित करें।
  • वैश्विक अपवाद हैंडलर जोड़ने की क्षमता का प्रदर्शन करें (यह ऐसा कुछ है जो VB6 नहीं कर सकता)

यही मैं करता।


1

मुझे ऐसा लगता है कि यह एक ऐसी स्थिति है जहाँ आपको अपनी प्रोग्रामिंग के बजाय अपने राजनेता की टोपी पहननी होगी। आपको बहुत ध्यान रखना चाहिए कि आप कैसे अपना तर्क देते हैं और यह कि आप अपने श्रोताओं का विरोध नहीं करते हैं। सुनिश्चित करें कि आप VB के नुकसान दिखाने के बजाय .Net के फायदे दिखाते हैं। VB के नुकसान को तर्क देते हुए, अपने सहकर्मियों को एक ऐसी स्थिति में डालेंगे, जहाँ उन्हें अपने फैसलों का बचाव करने और उन्हें यह स्वीकार करने के लिए मजबूर करना होगा कि जिस भाषा में उनका भारी निवेश है, वह एक खराब भाषा है। इसके बजाय, उन्हें दिखाते हैं कि .NET कैसे आगे बढ़ रहा है, जो उनके पास उपलब्ध उपकरणों को बढ़ाएगा और उनके जीवन को आसान बना देगा।

इस तर्क को बनाने का मेरा आदर्श तरीका एक कार्य या कोड का टुकड़ा होगा जिसे हर कोई लगातार शिकायत कर रहा है और इसे .NET का उपयोग करके ठीक कर सकता है। मैं VB से विशेष रूप से परिचित नहीं हूँ, लेकिन यहाँ कष्टप्रद कार्यों की एक छोटी सूची है जो शायद VB के बजाय .NET का उपयोग करके आसान बना दिया जाएगा।

  • स्ट्रिंग मैनिपुलेशन
  • XML पार्सिंग
  • खोज / मिलान / Regex
  • गणित (नई भाषाओं में आमतौर पर तेज़, अधिक व्यापक गणित पुस्तकालय होते हैं)
  • जीयूआई भवन / डिजाइन

उपर्युक्त कार्यों में से किसी एक को, या आपके द्वारा आमतौर पर काम करने वाली परियोजनाओं के लिए विशिष्ट कोई अन्य कार्य चुनें, और उनके साथ बैठें और वास्तव में स्क्रैच से कुछ कोड लिखें, जो समस्या को जल्दी और आसानी से संभालता है। वास्तव में कोड लिखने की प्रक्रिया दिखाने से उन उपकरणों को दिखाया जाएगा जो VS के नए संस्करण तालिका में लाते हैं और इस बात का प्रमाण देते हैं कि .NET में जाना किसी के जीवन को कठिन नहीं बना देगा।

इस पर जाकर, आप पूरी तरह से, सकारात्मक रूप से आपको होमवर्क करना चाहिए। यदि आप इस बात के बारे में अनिश्चित हैं कि उपकरण कैसे काम करते हैं, या ऐसा कोड है जो सही तरीके से काम नहीं करता है, तो आप कभी भी उन्हें अपने पक्ष में जीतने में सक्षम नहीं होंगे।


0

पहली बात जो आप कहते हैं कि VB6 अब Microsoft द्वारा समर्थित नहीं है। जब भी आप इसे चालू रख सकते हैं, आपको दीर्घकालिक में इसके विकल्पों को समझना होगा। मुझे यह भी नहीं पता कि विंडोज 8 पर वीबी 6 ऐप चलेगा, या अगर आईडीई खुद Win8 पर चलेगा।

तो, आपको प्रभावी रूप से फिर से लिखना होगा, और अगर ऐसा है, तो आप बाद में शुरू करने के बजाय अब शुरू कर सकते हैं, जिससे आपको यह पता लगाने में काफी समय मिलेगा कि आप किस नई तकनीक का उपयोग करना चाहते हैं (जबकि VB.NET आदर्श लगता है, यह आपके लिए कुछ और अत्याधुनिक कोशिश करने का अवसर है, जैसे कि आईपैड पर ऐप को काम करना)।

अल्पावधि में, आप उपभोग करने के लिए मौजूदा ऐप के लिए COM घटकों के रूप में नए अनुभागों को पेश करके समस्या को थोड़ा कम कर सकते हैं, उम्मीद है कि अपरिहार्य पुनर्लेखन होने पर ये घटक बने रहेंगे।

मैं तकनीकी तर्कों से परेशान नहीं होता कि क्यों .NET VB6 से बेहतर है। आप वहां हारने वाले तर्क पर होंगे, प्रौद्योगिकी अपने आप में कभी भी समस्याओं का समाधान नहीं करती है। यह आपके लिए है कि आप उस तकनीक को कैसे लागू करते हैं, और अगर VB6 ऐप आपके लिए सामान हल कर रहा है, तो जवाब देने के लिए कोई तर्क नहीं है। आप रखरखाव में आसानी के बारे में बात कर सकते हैं, या अनुभवी कर्मचारियों की उपलब्धता के बारे में बात कर सकते हैं, लेकिन एक बार जब आप ऐसा करते हैं कि आप मानते हैं कि आपके मौजूदा कर्मचारियों को नई तकनीक में कोई विशेषज्ञता नहीं है और उन्हें प्रशिक्षित होना होगा, और फिर पूरी तरह से गति प्राप्त करने के लिए कुछ समय लगेगा। इसके साथ। आपको इस सवाल का भी जवाब देना होगा कि मूल परियोजना (कभी-कभी विशेषज्ञता की कमी के कारण, कभी-कभी बहुत ही भव्य डिजाइनों के कारण) से बहुत सारे पुनर्लेखन कैसे ख़त्म हो जाते हैं।


MS, विंडोज 8 पर चलने वाले Intel / AMD PC पर VB6 का समर्थन करेगा। आप VB6 में मेट्रो ऐप नहीं लिख सकते, लेकिन आप .NET में मेट्रो ऐप भी नहीं लिख सकते। दोनों Win32 पर बने हैं। .NET के लिए C # में लिखा गया कम से कम कोड माना जाता है कि मेट्रो पर चलने के लिए WinRT को पोर्ट करना आसान है, लेकिन इसे सरल पुनर्निर्माण नहीं माना जाता है।
स्कॉट व्हिटलॉक

0

उसे "पुरानी कार नई बनाम कार" सादृश्य दें:

हाँ दोनों शायद आपको आपकी मंजिल तक पहुँचा देंगे। हालांकि नई कार को एक क्रैंक की जरूरत नहीं है , इसे चोक की जरूरत नहीं है , इसे मैप्स की जरूरत नहीं है , जब आप तेजी से ब्रेक लगाते हैं तो इसके पहिए लॉक नहीं होते हैं , और आखिरकार आपको कार दुर्घटना से दूर चलने की अधिक संभावना होती है । ।

  • VB6 विरासत है, इसका नया COBOL है
  • .NET में बेहतर फ्रेमवर्क हैं
  • .NET में बेहतर टूलिंग है
  • .NET का बेहतर प्रदर्शन है
  • .NET में बेहतर IDE है
  • .NET में बेहतर भाषा समर्थन है
  • .NET में बेहतर सुविधाएँ हैं
  • .NET के पास बेहतर सामुदायिक समर्थन है

7
कार एनालॉग आमतौर पर विफल होते हैं, और आपका कोई अलग नहीं है। एक पुरानी कार है कि एक नई कार नहीं है कि एक के लिए भुगतान किया जाता है! यदि आप एक टैक्सी के मालिक हैं और इसके लिए भुगतान किया गया था और इसे बनाए रखने की लागत की तुलना में यह आपको अधिक पैसा कमा रहा था, और एक नई कार आपको इसके लिए भुगतान करने के लिए अधिक पैसे खर्च करेगी जो कि आप एक व्यवसायिक व्यक्ति के रूप में करेंगे?

2
@JarrodRoberson इसके लिए भुगतान किया जाता है, लेकिन वे अधिक बार ब्रेक डाउन करते हैं, और थोड़ी देर बाद काम नहीं करेंगे। कार की उपमाएँ महान हैं। :)
स्टीवन ज्यूरिस

1
असल में, यह कार सादृश्य अच्छा है। ओपी के बॉस के पास वह टैक्सी चल रही है और ओपी को उसके पास जाते समय विचार करना चाहिए। एक पूर्ण स्विच एक दिन में नहीं हो सकता है, लेकिन आइए बिट्स को बदलना शुरू करें, टुकड़ों को बदलना, एक के बाद एक।
जेडजेआर

1
व्यवसाय के स्वामी ने इसे स्वयं बनाया और बनाया । इसकी संभावना सबसे अधिक बार खुद के लिए भुगतान की है, और रखरखाव सभी इरादों और उद्देश्यों के लिए स्वतंत्र है क्योंकि केवल 3 डेवलपर्स हैं और वह उनमें से एक है। जैसा कि मैंने कहा, कार एनालॉग्स भयानक हैं, यह विशेष रूप से ऐसा है और आप अपनी दलीलों के साथ मेरे लिए अपनी बात रखते हैं जो पूरी तरह से बेस बिजनेस वार हैं। नए सॉफ्टवेयर सबसे अच्छे रूप में उसे साल भर में बहुत कम लाभकारी साल देंगे और उसे सबसे खराब समय की अनिश्चित अवधि के लिए पैसा खो देंगे।

2
अनुप्रयोगों में शारीरिक वस्तुओं की तरह कोई पहनने और आंसू नहीं है, वे स्वाभाविक रूप से या तो शोष नहीं करते हैं, इसलिए वे बाहर नहीं पहनते हैं , और न ही वे भौतिक वस्तुओं, विशेष रूप से कारों के साथ समानता का उपयोग करने की परवाह किए बिना टूट जाते हैं । जब तक यह उद्देश्य पूरा करता है, तब तक एक एप्लिकेशन हमेशा के लिए चलेगा। एक कंपनी जो मैंने कुछ साल पहले काम की थी, उसमें एक पुरानी एमएस-डॉस आधारित मशीन थी जो दरवाजों पर कार्ड रीडर को नियंत्रित करती थी। सॉफ्टवेयर पहनने वाला विचार मूर्खतापूर्ण है। कहा कि जीवन योजना का एक अच्छा अंत हमेशा होना चाहिए। भले ही वह योजना सॉफ्टवेयर को फिर से लिखना न हो।

0

सबसे पहले मुझे लगता है कि आपको सवाल बदलना चाहिए (स्टैकटेक्चेंज पर नहीं बल्कि आपकी कंपनी के भीतर)। यह इतना अधिक क्यों नहीं है। नेट बेहतर है कि VB6, लेकिन अधिक पसंद है क्योंकि VB6 अब समर्थित नहीं है यह समय आगे बढ़ने के लिए है, लेकिन क्या। हितधारकों से पूछें कि 'नई' तकनीक क्या होनी चाहिए? शायद यह .Net नहीं है।

लेकिन ऐसा लगता है कि आपको एक नई तकनीक की ओर बढ़ने की आवश्यकता है और कुछ अच्छे प्रोग्रामिंग पैटर्न और अभ्यास प्राप्त करने की आवश्यकता है। दूसरे भाग का उत्तर बहुत कठिन है। आपको शायद इसे एप्लिकेशन के छोटे सेक्शन में करना होगा और इसे लायक साबित करना होगा, जबकि यह अधिक स्थिर है, बनाए रखना आसान है, आदि।


-1

अपने मालिकों को दो वांछित विज्ञापन लिखने के लिए कहें। सी # डेवलपर्स के लिए एक। VB6 विशेषज्ञों के लिए एक। वहाँ उन्हें बाहर रखो। परिणामों की तुलना करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.