जैसा कि डारिन बताते हैं, एएसपी.नेट एमवीसी 4 एक फ्रेमवर्क है और कंटेनर अज्ञेयवादी है। यही कारण है कि यह IDependencyResolver
के रूप में एक सेवा लोकेटर प्रदान करता है। यह किसी को भी अपनी पसंद के कंटेनर में प्लग करने की अनुमति देता है।
हालांकि, मैं इसे एक विरोधी पैटर्न नहीं कहूंगा। यह आपको अपनी पसंद के कंटेनर का उपयोग करने की अनुमति देता है, लेकिन यह को सेवा स्थान का उपयोग करने के लिए एप्लिकेशन डेवलपर को मजबूर नहीं करता है। यदि ढांचे ने डेवलपर को सेवा स्थान का उपयोग करने के लिए मजबूर किया, तो मैं इसे एक विरोधी पैटर्न कहूंगा। लेकिन डेवलपर जो एएसपी.नेट एमवीसी एप्लीकेशन बनाता है वह कन्स्ट्रक्टर इंजेक्शन, प्रॉपर्टी सेटअप या सर्विस लोकेशन के माध्यम से डी का उपयोग करने के लिए स्वतंत्र है। यह उनकी पसंद है।
मेरे द्वारा या एएसपी.नेट एमवीसी टीम द्वारा प्रकाशित निर्भरता इंजेक्शन के सभी एएसपी.नेट एमवीसी उदाहरण देखें। बहुत सारे मामलों में, वे कन्स्ट्रक्टर इंजेक्शन का उपयोग कर रहे हैं। वे सेवा स्थान का उपयोग नहीं कर रहे हैं।
वास्तव में, अधिकांश एएसपी.नेट एमवीसी स्रोत कोड स्वयं निर्भरताओं को पुनर्प्राप्त करने के लिए सेवा स्थान का उपयोग नहीं करता है। कुछ प्रमुख स्थान हैं जहां एमवीसी विरासत एपीआई और ऐसे के लिए सेवा लोकेटर में कॉल करता है। इसके बारे में बस इतना ही।
+1 फ्रेमवर्क अनुप्रयोगों की तुलना में विभिन्न नियमों का पालन करते हैं।आप एक ढांचा कंटेनर अज्ञेयवादी रखना चाहते हैं (यदि कोई ऐसा अनुप्रयोग जो फ्रेमवर्क का उपयोग करना चाहता है, पहले से ही एक अलग कंटेनर का उपयोग करता है) और आप आमतौर पर उन अनुप्रयोगों पर DI के उपयोग को लागू नहीं करना चाहते हैं (क्योंकि वे DI का उपयोग नहीं करना चाहते हैं बिलकुल)। –
मैं तर्क नहीं खरीदता कि सिर्फ इसलिए कि यह एक ढांचा है, एक सेवा लोकेटर उपयुक्त है। हां, ढांचे अनुप्रयोगों से अलग हैं, लेकिन सर्विस लोकेटर का उपयोग किए बिना ढांचे को लिखना पूरी तरह से संभव है। बस एएसपी.नेट एमवीसी 1 और 2, या डब्ल्यूसीएफ के रूप में जटिल कुछ भी देखें। एएसपी.नेट एमवीसी 3+ में निर्भरता रीसोलवर के साथ समस्या यह है कि यह केवल एक आंतरिक कार्यान्वयन विस्तार नहीं है बल्कि बल्कि 'डी सपोर्ट' के रूप में प्रकाशित और प्रकाशित किया जा रहा है। –
@MarkSeemann मैंने इस चर्चा को एक बड़े उद्यम ढांचे के मुख्य वास्तुकार के साथ किया था। यदि आप मुझे बता सकते हैं कि इस तरह के ढांचे के कंटेनर को अज्ञात बनाने के लिए और उस ढांचे का उपयोग करके लिखे गए सभी अनुप्रयोगों पर डी पैटर्न को लागू नहीं किया जाए तो मैं उन्हें सुनकर खुश रहूंगा। –