.NET (विजुअल स्टूडियो) में, आप एक नया असेंबली कब बनाते हैं?


9

मैं सिल्वरलाइट एप्लिकेशन पर काम कर रहा हूं। मैंने इसे कई विधानसभाओं में विभाजित किया है:

  • डोमेन
  • भंडार (स्टर्लिंग डेटाबेस के लिए सब कुछ के साथ)
  • यूआई
  • ...

यह मैंने इसे कैसे सीखा है, लेकिन मैंने सोचा। यदि आप जानते हैं कि DLL का पुन: उपयोग नहीं होने जा रहा है, तो क्या उन्हें विभाजित करना आवश्यक है? या आप सब कुछ एक विधानसभा में रख सकते हैं और इसे साफ रखने के लिए फ़ोल्डर और नामस्थान का उपयोग कर सकते हैं?

मैंने ऐसी परियोजनाएँ भी देखी हैं जिनमें बहुत सी विधानसभाएँ हैं। इसके बजाय नामस्थानों का उपयोग करना जहां यह उचित होगा।

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

जवाबों:


1

मैं कक्षाओं के लिए अलग-अलग असेंबली बनाने की सलाह देता हूं जो तार्किक रूप से "मॉड्यूल" में आते हैं। न केवल पुन: उपयोग और रखरखाव के लिए यह अच्छा है, बल्कि यह कक्षाओं के बीच कम से कम निर्भरता को लागू करने का एक तरीका है।

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

बेशक आप अतिशयोक्ति नहीं करना चाहिए, लेकिन जहां उपयुक्त हो अलग। इसके बारे में इस तरह से सोचें: "ये वर्ग एक साथ हैं और इन वर्गों के बारे में जानने की आवश्यकता नहीं है" और उन रेखाओं के साथ अलग हो जाते हैं


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

3
अच्छा विचार नहीं। जब समाधान कुछ परियोजनाओं से अधिक होता है, तो वीएस बहुत सुस्त हो जाता है।
निकी

4
यदि आपका वीएस बहुत सुस्त हो जाता है, तो आप या तो एक पुराना संस्करण चला रहे हैं या एक धीमा कंप्यूटर। मेरे पास 30+ परियोजनाओं के साथ विशाल परियोजनाएं हैं जो सेकंड में संकलित होती हैं। तो फिर से मेरे पास बहुत सारे राम, कोर और एक एसएसडी है :) आपको बेशक अतिरंजना नहीं करनी चाहिए, लेकिन केवल जहां अलग हो, उपयुक्त है, इस बारे में इस तरह से सोचें "ये वर्ग एक साथ हैं और इन वर्गों के बारे में जानने की आवश्यकता नहीं है" और उन पंक्तियों के साथ अलग
होमडे जूल 6'11

निर्भरता के बारे में टिप्पणी के कारण इसे उत्तर के रूप में चिह्नित किया गया। एड जेम्स का जवाब कम से कम उतना ही मूल्यवान और सही है, लेकिन यह जवाब मेरी स्थिति पर अधिक लागू है।
पीटर

2
इस दृष्टिकोण आप विधानसभाओं के एक समूह के साथ खत्म हो सकता है के बाद: A, B, C, D, E, F, G, H, I, J, K। आप कहीं भी हों विधानसभा का संदर्भ Aहै, तो आप भी अपने निर्भर विधानसभाओं संदर्भ होना चाहिए: B, C, D। लेकिन विधानसभा C: पर निर्भर है E, F, G, Hतो हम उन्हें भी जरूरत के लिए जा रहे हैं। इसलिए जब भी आपको किसी कार्य की आवश्यकता होती है, तो Aउसे काम करने के लिए 7 अतिरिक्त असेंबली खींचनी चाहिए; यह सुनिश्चित करना कि आपको प्रत्येक विधानसभा के सही संस्करण मिले। नए DLL नर्क में आपका स्वागत है।
एड जेम्स

14

एक असेंबली .NET आवेदन के लिए तैनाती की इकाई है; इसलिए आपको अपनी असेंबलिंग आर्किटेक्चर के साथ अपनी असेंबली के कट को मैच करना चाहिए।

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

याद रखें कि नामस्थान विधानसभाओं को फैला सकते हैं। बहुत सारे मामलों में यह नेमस्पेस का उपयोग करके व्यवहार को अलग करने के लिए पर्याप्त है। .NET को देखें mscorlib.dllकि किसी एक असेंबली में कोड होता है जो केवल नाम स्थान द्वारा अलग किए गए व्यवहारों के एक विशाल सरणी को कवर करता है।

यदि आप इस विषय पर कुछ अधिकार चाहते हैं, तो इससे आगे नहीं देखें:

फ्रेमवर्क डिजाइन दिशानिर्देश

फ्रेमवर्क डिज़ाइन गाइडलाइन्स: कंज़िस्सोफ सेल्विना और ब्रैड अब्राम द्वारा पुन: प्रयोज्य .NET लाइब्रेरीज़ (2 डी संस्करण) के लिए कन्वेंशन, मुहावरे और पैटर्न


पुस्तक संदर्भ के लिए वास्तव में धन्यवाद। मैं इसकी जांच करूंगा। क्या आप तैनाती वास्तुकला पर विस्तार से बता सकते हैं? 10 DLL फ़ाइलों की तैनाती 1 को लागू करने से कैसे भिन्न होगी? जब तक आप दस फ़ाइलों में से एक को अपडेट करने में सक्षम नहीं होते हैं, जबकि अन्य अछूते रहते हैं?
पीटर

1
@ पेटर: यदि आप 10 असेंबली को हमेशा एक साथ तैनात करते हैं, तो आप सभी कोड को एक असेंबली में डालकर सरलीकृत संस्करण नियंत्रण और परिनियोजन कर सकते हैं। यदि 10 विधानसभाओं को हमेशा एक साथ तैनात नहीं किया जाता है, तो अलग-अलग विधानसभाओं का होना उपयोगी हो सकता है।
एड जेम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.