हमारे पास आईओसी का उपयोग कर एएसपी.नेट एमवीसी ऐप है जो सेवाओं में नियंत्रकों और रिपोजिटरी संदर्भों में सेवा संदर्भों को इंजेक्ट करने के लिए है।आईओसी का उपयोग करके, क्या सिंगलटन को क्षणिक लाइफटाइम वाले ऑब्जेक्ट्स से इंजेक्शन दिया जा सकता है?
नियंत्रकों के पास लाइफटाइम का क्षणिक होना चाहिए क्योंकि उन्हें प्रति अनुरोध तत्काल होना चाहिए। यदि पूरे आईओसी स्टैक को प्रति अनुरोध नए-नए किया जा रहा है, हालांकि, यह ओवरहेड का थोड़ा सा हो जाता है। हमारे पास जितनी चाहें उतनी निर्भरताएं हैं, और एक विकल्प में अधिक नियंत्रक होंगे, प्रत्येक स्टैक में कम निर्भरता वाले होंगे। लेकिन, अब इसके लिए एक तरफ छोड़कर, मेरा सवाल यह है कि, यदि एक ऑब्जेक्ट को इंजेक्शन के रूप में इंजेक्शन दिया जाता है तो निर्भरताएं होती हैं जिनके पास क्षणिक जीवनकाल होता है, क्या उन निर्भरताओं को सिंगलटन के स्वामित्व के आधार पर अनिवार्य रूप से सिंगलटन की तरह माना जाएगा?
विशेष रूप से, अगर हम निम्नलिखित
RepositoryA है (क्षणिक होने की जरूरत है क्योंकि वर्तमान डिजाइन निर्माता में एक उपयोगकर्ता के संदर्भ injects) serviceà (सिंगलटन) ControllerA (क्षणिक)
तो जैसे instantiated:
public ServiceA(IRepositoryA repo) {}
public ControllerA(IServiceA service) {}
क्या रिपोजिटरीए अनिवार्य रूप से तत्काल हो सकता है क्योंकि सेवा ए को तुरंत चालू किया जाता है?
मुझे 99% यकीन है कि उत्तर हाँ है, लेकिन सिर्फ मुझे यहां रिफैक्टरिंग की मात्रा की पुष्टि करना चाहता था।
इसके अलावा, यह मानते हुए सेवा और डेटा संग्रह स्थान किसी भी उपयोगकर्ता/अनुरोध-विशिष्ट उदाहरण चर नहीं था, एक डिजाइन दृष्टिकोण के रूप में, वहाँ किसी भी कारण से उनके लिए एक सिंगलटन जीवन भर उपयोग करने के लिए नहीं है?
मुझे लगता है कि वास्तविक सवाल यह है कि इसे सिंगलटन क्यों होना चाहिए? – dotjoe
@ डॉटोजो जो असली सवाल नहीं है, लेकिन फिर भी एक बहुत अच्छा बिंदु :-)। यह मेरे लिए अजीब है कि एक ऐसी सेवा सिंगलटन के रूप में कॉन्फ़िगर किया गया है लगता है।कोई प्रदर्शन समस्या है? – Steven
इसके अलावा, 'सेवा' श्रेणी का उपयोग जिसमें व्यापार तर्क शामिल है, आजकल मुझे कुछ रोकना पसंद है। यदि आपकी दिलचस्पी है, तो इस आलेख पर एक नज़र डालें जो वर्णन करता है कि व्यापार संचालन/मामलों के मामलों को संदेशों के रूप में परिभाषित करता है] (http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=91)। – Steven