2010-03-04 12 views
5

यह एक गोल और गोल जाता है मुझे पता है लेकिन मुझे संतोषजनक प्रतिक्रिया नहीं मिल रही है।जीएसी इंस्टॉलेशन का पुनरीक्षण

क्या असेंबली जीएसी में जाना चाहिए? ये प्रश्न: when-and-when-not-to-install-into-the-gac और What are the advantages and disadvantages of using the GAC, बिल्कुल सही है लेकिन उत्तर बहुत अधिक हैं "यह अनुशंसा की जाती है कि ..." या "आपको केवल ..."। क्यूं कर???

बहुत सारे जीएसी naysaying ब्लॉग 5/6 साल पहले की तारीख लगते हैं जब नेट का सितारा शुरू हो रहा था। क्या हम अभी भी वहां हैं? निश्चित रूप से डीएलएल-नर्क अतीत की बात है जो "समान" असेंबली के विभिन्न संस्करणों की स्थापना के साथ जीएसी सहायक पक्ष के साथ है?

मुझे अपनी चिंताओं को दूर करने दें। हमारे पास वेब ऐप्स का बढ़ता सूट है (5 अब तक)। ये, उनके कोर पर, API कॉल और डेटाबेस एक्सटेंशन के माध्यम से किसी तृतीय-पक्ष एप्लिकेशन के एक्सटेंशन हैं। जाहिर है, इसलिए, ये सभी ऐप्स सामान्य रूप से कोड का एक बड़ा सौदा साझा करते हैं और हम अपनी गुणवत्ता, रखरखाव इत्यादि को बेहतर बनाने के लिए कोर साझा पुस्तकालयों का एक नया सेट विकसित कर रहे हैं।

निश्चित रूप से मैं यह साझा कार्यक्षमता एक बार स्थापित और साझा करना चाहता हूं। रखरखाव दुःस्वप्न खोलने के बारे में सभी तर्क खराब अनुशासन की कुछ दुनिया पर आधारित प्रतीत होते हैं। यदि आप एबीआई तोड़ते हैं तो असेंबली वर्जन को अपने मौजूदा ऐप्स को काम करने के लिए पर्याप्त है।

क्या जीएसी वास्तव में अनजान के लिए एक शहद जाल है? क्या मैं मूर्ख हूँ? क्या मैं अनावश्यक रूप से कठोर हूं जब मैं 'एक्सकॉपी' के नुकसान को आलसी झुकाव के रूप में स्थापित करने के तर्कों को खारिज कर देता हूं? या यह थोड़ा "धार्मिक" हो रहा है और मुझे बस सही लगता है के साथ जाना चाहिए?

मुझे प्रकाश देखने में मदद करने के लिए धन्यवाद।

दान

+0

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

उत्तर

2

मैंने व्यक्तिगत रूप से जीएसी में सीधे किसी भी असेंबली को स्थापित नहीं किया है (पूरी तरह अकादमिक अभ्यास के अलावा)। मैंने कई अनुप्रयोगों से प्राप्त एक केंद्रीकृत स्थान से एक असेंबली का उपयोग करने से पहले तर्क सुना है, और जब यह कुछ हद तक आकर्षक लगता है, व्यक्तिगत रूप से, यह मेरे समय के लायक नहीं है। कंप्यूटर इन दिनों 320 जीबी हार्ड डिस्क स्पेस के साथ आते हैं ... मेरी माप में 160 के असेंबली उसमें एक दांत नहीं जा रही है, भले ही इसकी प्रतिलिपि 5 गुना हो। (बेशक, कुछ "कॉमन्स की समस्या" पर बहस कर सकते हैं ... आप जानते हैं: "अगर हर डेवलपर इस तरह सोचा ....", लेकिन मैं digress)। मुख्य कारण यह है कि मैं ऐसा नहीं करना चुनता क्योंकि एक विशेष आवेदन असेंबली पर एक तरह से भरोसा कर सकता है, जबकि दूसरा इसे किसी अन्य तरीके से भरोसा कर सकता है। एक आदर्श दुनिया में, इस असेंबली के अपडेटों को उन अनुप्रयोगों को कभी प्रभावित नहीं करना चाहिए जो वास्तव में उस पर भरोसा करते हैं, वास्तव में, यह अक्सर करता है। यदि मैं किसी असेंबली के साथ कोई समस्या ठीक कर रहा हूं क्योंकि किसी विशेष एप्लिकेशन के साथ समस्याएं हैं, तो मैं अनजाने में उन अन्य अनुप्रयोगों को प्रभावित कर रहा हूं जो उस विशेष असेंबली पर भरोसा करते हैं। दूसरी तरफ, कुछ लोग तर्क दे सकते हैं कि इस तरह की स्थिति हमें बेहतर प्रोग्रामर बनाती है और हमारी जीएसी-साझा असेंबली को अधिक बुलेटप्रूफ बनाती है। यह बहुत अच्छा है, लेकिन प्रोग्रामर के रूप में मेरा काम मुख्य रूप से एक बेहतर प्रोग्रामर बनाने के लिए नहीं है, बल्कि काम करने वाले प्रोग्राम लिखने और ऐसा करने के लिए, मैं एक बेहतर प्रोग्रामर बन जाऊंगा।

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

+0

हाँ, डिस्क स्थान वास्तव में मेरी चिंता नहीं है :) मैं आपके उत्तर की ईमानदारी की सराहना करता हूं लेकिन मुझे तर्क देना है कि यदि साझा कोड के दो उपभोक्ता अलग-अलग लेकिन सही व्यवहार दिखाते हैं तो अलगाव के बारे में एक प्रश्न चिह्न है कार्यक्षमता। मुझे लगता है कि मैं चीजों को दूसरी तरफ देखता हूं - अगर मैं खुद को एक बेहतर प्रोग्रामर बना देता हूं, तो क्यूईडी, मैं बेहतर कार्यक्रम लिखता हूं। –

+0

मैं कहूंगा कि निश्चित रूप से एक संतुलन है, हालांकि। हां, आप एक बेहतर प्रोग्रामर बनना चाहते हैं, और एक बेहतर प्रोग्रामर बनने से आपको बेहतर कार्यक्रम लिखने में मदद मिलती है, लेकिन उत्पादन में दबाव-खाना पकाने के असेंबली की तुलना में बेहतर प्रोग्रामर बनने के बेहतर तरीके हैं। –

+0

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

0

मैं निम्नलिखित कमजोर रणनीति का उपयोग करता हूं।
जीएसी का उपयोग करें - जब विभिन्न प्रोग्राम साझा असेंबली + संस्करण का उपयोग करते हैं।
जीएसी का उपयोग न करें - हमेशा।

कोई टिप्पणी स्वागत है।

संबंधित मुद्दे