2008-10-20 6 views
7

डैर ओबासंजो से this post from Jeff Atwood, और this post पर मेरा प्रश्न क्या संकेत देता है। ऐसा लगता है कि कम से कम कुछ ऐसे क्षेत्र हो सकते हैं जहां कस्टम कोड की तुलना में तृतीय-पक्ष कार्यक्षमता बेहतर विचार हो।क्या कार्यक्षमता हमेशा तृतीय पक्ष होना चाहिए?

उदाहरण के लिए, हमेशा लॉगिंग करना तीसरे पक्ष होना चाहिए? एन्क्रिप्शन के बारे में कैसे? या खोज?

मैं इस पर सभी की प्रतिक्रिया के लिए उत्सुक हूं।

संपादित करें: यह प्रश्न मानता है कि लॉगिंग, एन्क्रिप्शन, और/या खोज आपका मुख्य व्यवसाय नहीं है।

उत्तर

3

यह निर्भर करता है। क्या कोई तृतीय पक्ष लाइब्रेरी उपलब्ध है जो आपकी आवश्यकताओं के अनुरूप है और सबसे महत्वपूर्ण बात यह है कि आप जिस भाषा और/या एपीआई के साथ काम करते हैं। फिर इसके लिए जाओ।

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

3

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

+0

दुर्भाग्य से, अमेरिकी सरकार ने एक ऐसी प्रक्रिया स्थापित की है जो ओपन सोर्स क्रिप्टोग्राफी को हतोत्साहित करती है। FIPS 140 के तहत एक क्रिप्टो मॉड्यूल का प्रमाणन बहुत महंगा है और खुद को एक विकेन्द्रीकृत प्रायोजक को उधार नहीं देता है। हालांकि एनएसए ने ओपन सोर्स के साथ कुछ अच्छी चीजें की हैं। – erickson

2

वह क्षेत्र जहां मैंने लगातार तीसरे पक्ष के नियंत्रण का उपयोग किया है चार्टिंग था। डेटा के कुछ बैच को चार्ट करना एक बड़ी आम समस्या है और तीसरे पक्ष के नियंत्रण परिपक्व और भरोसेमंद हैं।

4

अंगूठे का मेरा नियम किसी भी चीज़ के लिए तीसरे पक्ष का उपयोग करना (या कम से कम विचार करना) है जो आपके व्यवसाय के मूल उद्देश्य से बाहर है।

एन्क्रिप्शन हमेशा इसका प्रोटोटाइप उदाहरण रहा है। लेकिन यह अन्य क्षेत्रों में भी विस्तारित है।

विकास के दौरान समस्या निवारण के लिए लॉगिंग कोड लिखना उत्पादन प्रणालियों की निगरानी के लिए उपयोग किए जाने वाले लॉगिंग कोड से बिल्कुल अलग है।

यह सब कुछ चुनने के बारे में है कि विकास के कौन से क्षेत्र वास्तव में आपके प्रोजेक्ट में मूल्य जोड़ते हैं। तीसरे पक्ष की सामग्री का उपयोग जोखिम को हटा देता है कि वह घटक अपूर्ण/छोटी/आदि है। लेकिन जोखिम के साथ आता है कि यह आपके लिए आवश्यक लचीला नहीं हो सकता है।

एक और उदाहरण वेबसाइट के लिए एक संपूर्ण वेब फोरम विकसित करेगा, जब आप बहुत सस्ता समाधान खरीद सकते हैं।

15

एन्क्रिप्शन अधिकांश समय तीसरे पक्ष होना चाहिए, जब तक कि आप एन्क्रिप्शन सिस्टम बेचने के व्यवसाय में न हों।

जो काफी कुछ श्री एटवुड अपनी बात है के रूप में मैं यह समझा, अपने मूल व्यापार तृतीय पक्ष नहीं होना चाहिए, तो वहाँ शायद कुछ भी नहीं है कि हमेशा तृतीय पक्ष होना चाहिए ...

2

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

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

बेशक, कभी-कभी हम इस प्रकार की चीज़ को घटक खरीद के रूप में विचार किए बिना भी करते हैं। कल्पना को थोड़ा सा खींचते हुए, आप .NET Framework, SQL सर्वर, Windows API, आदि शामिल कर सकते हैं

0

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

लेकिन आपको भी सावधान रहना चाहिए किसी तृतीय-पक्ष पुस्तकालयों का उपयोग करते समय, आपको उन पर भरोसा करना चाहिए क्योंकि उनमें दुर्भावनापूर्ण कोड हो सकता है, या वे बहुत खराब लिखे गए हैं और आपको सिरदर्द का कारण बन सकता है।

0

आपका स्वयं का एन्क्रिप्शन फ़ंक्शन? इसके बारे में भी मत सोचो लेकिन मुझे लगता है कि आप शायद मौजूदा कार्यों के लिए किसी प्रकार का आवरण का मतलब है।

3 पार्टी घटक फायदे: कार्यक्षमता के एक बहुत
पूरी तरह से (उम्मीद!) का परीक्षण किया
Does not को समय लेने के लिए सस्ता हो सकता है तो विकसित करने के लिए (लेकिन ..)

नुकसान
यह वास्तव में लचीला के लिए पर्याप्त है कि अगले akward ग्राहक आवश्यकता
वितरण 3 पार्टी कंपनी के रूप में महंगा
संबंध आप जब वे एक नई रिलीज कीड़े तय करने के लिए बनाने के जो एक दर्द हो सकता है हो सकता है
आप टी जानने न o अपने आप को कार्य करें

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

1

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

  1. यदि यह आपके व्यवसाय या विशेषज्ञता के लिए मूल नहीं है।
  2. यदि किसी और ने इसे आपके लिए लिखा है और इसका उपयोग व्यापक समुदायों में किया जा रहा है।
  3. यदि यह आपकी आवश्यकताओं और आवश्यकताओं को पूरा करता है या इसे आपकी आवश्यकताओं को पूरा करने के लिए बढ़ाया जा सकता है।
4

"कौन सी कार्यक्षमता हमेशा तीसरी पार्टी होनी चाहिए?"

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

आगे, तीसरे पक्ष को जाने का निर्णय किसी दिए गए "कार्यक्षमता के आधार पर लगभग कभी नहीं किया जाना चाहिए।"इस तरह के एक आदर्श पुस्तकालय है कि आप कार्यक्षमता के प्रकार के लिए कहीं और जाने की जरूरत कभी नहीं के रूप में ऐसी कोई चीज नहीं है।

तीसरे पक्ष के लिए जा रहे एक निर्णय है कि पर

  • तीसरे जाने की लागत आधारित बनाया जाना चाहिए है पार्टी बनाम घर में यह
  • विकास समय की आवश्यकता समय सीमा (यानी, यह सस्ता इन-हाउस हो सकता है, लेकिन अपने विकास के समय यह परवाह किए बिना अनुमति दे सकते हैं नहीं)
  • एकीकरण, डिबगिंग की आसानी, रखरखाव, पथ का उन्नयन के खिलाफ रखा कर की लागत - ऐसा हो सकता है कि आप कुछ ऐसा विकसित कर सकें जो "नौकरी करे, लेकिन मुश्किल से" inho कुछ है कि साल के लिए आप का ख्याल रखना होगा
  • आसानी/परीक्षण और साबित की लागत आने के लिए बनाम ज्यादा नहीं और अधिक पैसे का उपयोग करें - सुरक्षा संकुल अच्छी तरह से परीक्षण करने के लिए

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

दूसरे शब्दों में, कुछ अविश्वसनीय रूप से जटिल या साबित करने/परीक्षण करने के लिए कठिन चीजें मौजूद हैं जो लगभग हमेशा किसी तीसरे पक्ष के पास जाना चाहिए। सुरक्षा एक और है। अपने स्वयं के हैशिंग एल्गोरिदम को तब तक न लिखें जब तक आप 1) प्रमाणित रूप से पागल और 2) ऐसा करने के लिए कम से कम 3 उत्कृष्ट व्यावसायिक कारण नहीं हैं।

लेकिन "कौन सी कार्यक्षमता हमेशा तीसरी पार्टी होनी चाहिए?" कोई नहीं। हमेशा एक अपवाद है।

-Adam

0

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

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

अब औसत अमेरिकी डेवलपर के बारे में कुछ मैग में पढ़ना याद रखने वाली मनमानी राशि का उपयोग करें जो उनके लाभ सहित $ 40 प्रति घंटे बनाते हैं। पूरे वेब नियंत्रण सूट लगभग एक अनुमानित $ 800 प्रति डेवलपर लाइसेंस के लिए उपलब्ध हैं। यदि आपका डेवलपर इस नियंत्रण पर कुल 25 घंटे से अधिक खर्च करता है, तो आप एक संपूर्ण सूट खरीद सकते थे और 5 घंटे एकीकृत और परीक्षण कर सकते थे।

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

2

यदि आप इसे सस्ता खरीद सकते हैं तो आप इसे बना सकते हैं, और खरीदी गई कार्यक्षमता आपकी व्यावसायिक आवश्यकताओं को पूरा करती है, फिर इसे खरीदें।

0

मैं बॉयलर प्लेट कोड लिखने के लिए कहूंगा, या अनावश्यक कोड जो प्रतिलिपि बनाता है और लगभग हर बार लाइब्रेरी के माध्यम से पेस्ट किया जाना चाहिए।मेरे लिए, सत्यापन कोड लगभग हमेशा मुझे बेवकूफ गलतियां कर रहा है, क्योंकि यह उबाऊ है। Spring.NET इसके लिए अद्भुत है। मुझे बहुत खुशी है कि मेरे मालिक ने मुझे कोशिश करने के लिए प्रोत्साहित किया।

1

यह प्रश्न प्रश्न के विपरीत है: आप किस सॉफ्टवेयर को बनाना चाहिए?

जो स्पष्ट रूप से मूर्ख है।

दोनों के लिए कोई जवाब नहीं है, यह आपके व्यवसाय की ज़रूरतों पर निर्भर करता है। क्या आपको पूरे इंटरनेट के लिए बेहतर खोज इंजन बनाने की ज़रूरत है? लगभग निश्चित रूप से नहीं। लेकिन अगर आप 90 के उत्तरार्ध में Google हैं, तो आप करते हैं। तीसरी बनाम 1 पार्टी सिर्फ एक बात है कि आप किस कार्यालय में काम करते हैं, हर तीसरी पार्टी खुद के लिए पहली पार्टी है।

  • यदि आपको केवल इतना अच्छा है: शेल्फ से कुछ का उपयोग करें।

या तो आप कुछ कम गुणवत्ता बनाएंगे या आप उस चीज़ पर पैसा और प्रयास बर्बाद कर देंगे जो इससे कोई फर्क नहीं पड़ता, या दोनों।

  • यदि यह आपके व्यवसाय की नींव है: इसे स्वयं बनाएं।

यदि आप कुछ बेहतर बना सकते हैं, और आप उस बेहतर चीज़ से व्यवसाय बना सकते हैं, तो करें!

0

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

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

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

निष्कर्ष में, आपको विविध मॉड्यूल में तीसरे पक्ष के पुस्तकालयों पर भरोसा करना चाहिए।