2010-01-15 10 views
5

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

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

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

नोट्स: प्रश्न में तीसरी पार्टी लाइब्रेरी काफी छोटी है (10 कक्षाओं से कम, कुल 1500 एसएलओसी), और यह मेरे प्रोजेक्ट (अपाचे लाइसेंस 2.0) के रूप में ओपन-सोर्स लाइसेंस के तहत उपलब्ध कराई गई है।

उत्तर

4

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

इसके अतिरिक्त, इसे एक अलग लाइब्रेरी के रूप में रखते हुए, यह तीसरे पक्ष की लाइब्रेरी में परिवर्तन होने पर अपडेट करना आसान हो जाएगा।

कुछ परियोजनाएं हैं जो स्पष्ट रूप से आपको एक परियोजना के भीतर एम्बेड करना आसान बनाने के लिए लाइब्रेरी का "एकल स्रोत फ़ाइल" संस्करण देती हैं। (linqbridge उदाहरण के लिए करता है।) इससे कुछ हद तक चीजें बदलती हैं - उस बिंदु पर मुझे लगता है कि यदि आप चाहें तो इसे शामिल करना अधिक उचित है। लेकिन "सामान्य" परियोजनाओं के लिए मैं सिर्फ संदर्भ जोड़ूंगा।

0

आपके मामले में, मैं निश्चित रूप से संदर्भ को संदर्भित करता हूं, स्रोत नहीं।

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

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

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