मैं एक 3-स्तरीय नेट सेवा एप्लिकेशन है, जो मानक दृष्टिकोण निम्नानुसार है:एन-स्तरीय एप्लिकेशन में निर्भरता इंजेक्शन?
Frontend -> Object Model/Business Logic -> Data Access
मैं रास्ते में निर्भरता इंजेक्शन के बारे में जानने की कोशिश कर रहा हूँ, और इस प्रकार अब तक पाया है यह बहुत अच्छा (Autofac का प्रयोग करके) । प्रत्येक 3 स्तरों में से प्रत्येक को ऑब्जेक्ट्स का वर्गीकरण करने की आवश्यकता होती है, कभी-कभी अतिरिक्त कॉन्फ़िगरेशन/आदि के साथ। ऐसा लगता है कि डी कंटेनर को हल करने के लिए आदर्श चीज होना चाहिए, लेकिन मुझे कुछ समस्याएं आ रही हैं कि यह बाकी सिस्टम के संबंध में कहां रहना चाहिए।
वर्तमान में मेरे पास फ्रंटेंड में एक कक्षा है जो डी कंटेनर को कॉन्फ़िगर करती है। यह मूल रूप से container.Register<SomeType>()
कहकर कोड का एक बड़ा समूह है और इसी तरह।
समस्या यह है कि यह सभी 3 स्तरों के लिए कंटेनर को कॉन्फ़िगर कर रहा है, और इसलिए डेटा एक्सेस लेयर का काफी आक्रामक ज्ञान होना चाहिए। इस तरह के ज्ञान के साथ मेरे अग्रभाग में कोड रखने से ऐप को अलग करने के बिंदु के रूप में मेरे सिर में अलार्म घंटी बंद हो जाती है, इस सटीक स्थिति से बचने के लिए।
यह भी इस तथ्य से भी बदतर हो गया है कि मेरी डेटा एक्सेस लेयर सिर्फ SQL सर्वर बिट्स की गूंगा बाल्टी नहीं है, लेकिन जटिल कॉम इंटरऑप और पी/इनवॉक कॉल के बहुत सारे हैं, इसलिए इसका काफी असर पड़ता है डी विन्यास।
मैंने इसे तोड़ने के लिए कुछ विचार दिया है - शायद प्रत्येक स्तर में एक कंटेनर है, या प्रत्येक स्तर में "सेटअप" कक्षा है जो वैश्विक डी कंटेनर से बात करती है ताकि वह अपने स्वयं के बिट्स पंजीकृत कर सके, लेकिन मुझे यकीन नहीं है अगर इससे हल होने से अधिक समस्याएं उत्पन्न हो जाएंगी ...
यदि कोई भी बहुआयामी ऐप्स के साथ DI का उपयोग करने में अपने अनुभव साझा कर सकता है तो मैं वास्तव में इसकी सराहना करता हूं।
धन्यवाद, ओरियन।
क्या आपके पास सेवा परत जैसा कुछ भी है? ताकि आपका फ्रंट एंड बिजनेस ऑब्जेक्ट्स से पहले इसके साथ बातचीत कर सके। – BuddyJoe
मुझे यकीन नहीं है कि मैं "सेवा परत" से आपका क्या मतलब है ... "सेवा" इन दिनों इस तरह के दुर्व्यवहारिक शब्द है :-( –