2011-05-12 9 views
61

हम स्क्रैच से वेब एप्लिकेशन लिखने की योजना बना रहे हैं, ग्लासफ़िश के नवीनतम संस्करण के साथ जाने का निर्णय लिया गया है जो जावा ईई 6 मानक का अनुपालन करता है, इसलिए हम विश्लेषण कर रहे हैं कि वसंत के बजाय सीडीआई का उपयोग किया जा सकता है या नहीं।सीडीआई वसंत का एक अच्छा प्रतिस्थापन है?

क्या हम कह सकते हैं कि सीडीआई वसंत के लिए प्रतिस्थापन हो सकता है?

+0

यह भी देखें https://dzone.com/articles/cdi-10-vs-spring-31-feature – GKislin

उत्तर

82

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

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

आप पारिस्थितिकी तंत्र को देखें, तो स्थिति अलग है: बसंत, जार (> 150) का एक बहुत के साथ आता है, जबकि CDI अपने आप में बहुत छोटा है। एक सामान्य सीडीआई-उपयोग जावा ईई 6 एप्लिकेशन सर्वर के अंदर होगा, लेकिन आप आसानी से इसे सर्वलेट इंजन या जावा एसई में भी काम कर सकते हैं। इसका मतलब है कि सीडीआई का उपयोग हाइबरनेट, जेपीए, ईजेबी या जो भी हो - के बारे में कोई धारणा नहीं है - यह आपके ऊपर है।

यदि आपको और अधिक कार्यक्षमता की आवश्यकता है, तो सीडीआई पोर्टेबल एक्सटेंशन (जो स्वयं ही एपीआई लायक बनाता है) की अवधारणा के साथ आता है। अपाचे सीओडीआई और सीम 3 जैसे स्वतंत्र विस्तार मॉड्यूल मौजूद हैं और सुरक्षा, मेलिंग, रिपोर्टिंग आदि जैसे विषयों को कवर करते हैं।

संक्षेप में: सीडीआई वसंत पारिस्थितिक तंत्र के लिए "प्रतिस्थापन" की तरह कुछ नहीं है, बल्कि यह वसंत की निर्भरता इंजेक्शन तंत्र पर सुधार है। यह जावा ईई 6 का हिस्सा है, इसलिए यदि आप जावा ईई 6 के साथ ग्लासफ़िश पर हैं, तो आपको निश्चित रूप से सीडीआई के लिए जाना चाहिए। मेरी आंखों में आपका प्रश्न है: क्या मैं जावा ईई 6 के साथ वसंत को बदल सकता हूं? मुझे लगता है कि मेरा उत्तर बहुत स्पष्ट ;-)

Weld पर एक नज़र एक अच्छी शुरुआत पाने के लिए है है ...

+0

मुझे लगता है कि सीडीआई वसंत की तरह स्थिर inyection का उपयोग करें। [वेल्ड प्रलेखन] के अनुसार (http://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html_single/#injection) '@ इंजेक्शन एनोटेशन हमें इंजेक्शन पॉइंट को इंजेक्शन देने देता है बीन तत्काल के दौरान। 'जैसा कि मैं इसे समझता हूं, गतिशील इंजेक्शन इंजेक्शन होता है जो एक से अधिक बार होता है। ऐसा तब होता है जब उस घटक पर एक व्यावसायिक विधि कहा जाता है। मेरे लिए भी, 'राज्यव्यापी रास्ता inyection' का अर्थ विभिन्न संदर्भों से सेम के इंजेक्शन को संभालने की क्षमता है, यह प्रॉक्सी का उपयोग करता है जो प्रत्येक बीन –

+8

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

+1

क्या यह अभी भी मामला है? – naaz

9

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

हालांकि सीडीआई का उपयोग वसंत के डीआई एपीआई के प्रतिस्थापन के रूप में किया जा सकता है।

+4

मुझे लगता है कि सीडीआई इंटरसेप्टर्स – prassee

+0

के माध्यम से एओपी को संभालता है इंटरसेप्टर सामान्य रूप से एओपी के समान होते हैं, लेकिन उनके पास नहीं है एओपी ढांचे या AspectJ जैसी भाषा प्रदान करता है कि सुविधाओं की चौड़ाई। – Behrang

+3

आप एक्सटेंशन लिख सकते हैं जो बीन्स के नियमों के आधार पर इंटरसेप्टर जोड़ते हैं। यह बहुत आसान है। अधिकांश अनुप्रयोगों के लिए एओपी के व्यापक उपयोग उपयोगी होने के लिए बहुत जटिल हैं। –

4

मैं Apache OpenWebBeans CDI कार्यान्वयन और MyFaces CODI कई परियोजनाओं के लिए पोर्टेबल विस्तार के रूप में के रूप में उपयोग कर रहा हूँ। मैं इसके साथ बहुत खुश हूं और मुझे इसके साथ कोई समस्या नहीं थी। ओपनवेबबीन में वर्तमान में दस्तावेज़ीकरण को देखते हुए थोड़ा सा कमी नहीं है, लेकिन यदि आप काम करने के लिए कुछ नहीं प्राप्त कर सकते हैं तो माईफेस द्वारा प्रदान की गई मेवेन आर्केटीप्स का उपयोग करना आवश्यक है ताकि सभी आवश्यक निर्भरताओं के साथ सरल परियोजनाएं उत्पन्न हो सकें या आप मेलिंग सूची पर पूछ सकें। यह बहुत अच्छा है अगर आप अपने आवेदन पर काम करते हैं और आप बुरा कीड़े से अवरुद्ध नहीं हैं। मैंने वसंत के साथ कई परियोजनाएं भी कीं। यह ठीक है, लेकिन अगर आप पूछें कि मैं अगले प्रोजेक्ट के लिए क्या उपयोग करूंगा तो स्पष्ट उत्तर ओपनवेबबीन और सीओडीआई है! मैं वेल्ड पर ओपनवेबबीन पसंद करता हूं क्योंकि ओपनवेबबीन बहुत गोद लेने वाला है जो बहुत अच्छा है क्योंकि आप आधिकारिक सीडीआई एपीआई/एसपीआई द्वारा कवर नहीं किए गए कम या ज्यादा सब कुछ अनुकूलित कर सकते हैं और रनटाइमेपरफॉर्मेंस बेहतर है।और पहली परियोजना के बाद मैं कभी भी सीओडीआई से सवाल नहीं करूंगा क्योंकि यह बहुत स्थिर है, उनके पास नियमित रिलीज हैं और उनमें से अधिकतर नई नई विशेषताएं लाए हैं जो उत्पादकता में काफी सुधार लाती हैं। सीओडीआई आईएमएचओ है जो सबसे स्थिर है और पूरी सीडीआई भूमि में सबसे नवाचार आते हैं।

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

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