मुझे इंटरफेस और कार्यान्वयन अलग करने का विचार पसंद है। लेकिन कितना अलग है? एक अलग नेट असेंबली में इंटरफ़ेस परिभाषाएं हैं? क्या आपके पास एक ऐसी परियोजना है जो समाधान के लिए सभी इंटरफेस को परिभाषित करती है? अन्यथा इंटरफेस की परिपत्र निर्भरताओं के साथ समस्याएं हैं?"शारीरिक रूप से लाइव" कहां इंटरफेस करना चाहिए?
उत्तर
अपनी डोमेन ऑब्जेक्ट्स और इंटरफेस को एक अलग "डोमेन" असेंबली में रखें।
इस असेंबली को कभी भी कोर .net असेंबली के अलावा कुछ भी संदर्भित नहीं करना चाहिए।
इस तरह आप अपने डोमेन/सेवा मॉडल और आपके कार्यान्वयन से एक साफ पृथक्करण प्राप्त करते हैं।
संपादित करें:
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/
मैं सिर्फ यह की खातिर एक अलग विधानसभा में इंटरफेस डाल नहीं होगा। हालांकि, यदि इंटरफेस किसी भी प्रकार के आईपीसी या एक्स्टेंसिबिलिटी आर्किटेक्चर में भाग लेते हैं तो अक्सर उन्हें अपनी असेंबली देने के लिए समझदारी होती है।
आप परियोजनाओं के लिए एक दूसरे को संदर्भित करने की आवश्यकता है, तो हाँ, आप इंटरफेस के लिए एक अलग विधानसभा की आवश्यकता होगी, लेकिन आप यह भी ध्यान से अगर वहाँ एक सर्कुलर निर्भरता को हल करने का एक और तरीका है देखने के लिए वास्तुकला जांच करनी चाहिए।
मैं इंटरफ़ेस के नाम के बाद उप-फ़ोल्डर (और नामस्थान) में इंटरफ़ेस के सबसे सामान्य या सरल कार्यान्वयन को प्राथमिकता देना पसंद करता हूं।
\project\ \project\IAppender.cs \project\Appender\ \project\Appender\FileAppender.cs \project\Appender\ConsoleAppender.cs
यदि मैं इस कक्षा के बाहर इस कक्षा का विस्तार करता हूं। एक विशेष परियोजना में, फ़ोल्डर/नामस्थान को समान रूप से दोहराएं।
\specialproject\ \specialproject\Appender\ \specialproject\Appender\MemoryAppender.cs
प्रोजेक्ट में मैं अभी काम कर रहा हूं, इंटरफेस और संबंधित बेस क्लास असेंबली में जाते हैं जो तर्कसंगत रूप से कार्यों के बीच विभाजित होते हैं। इन प्रदाताओं और वर्गों के कार्यान्वयन कोर असेंबली के अंदर जाते हैं। विचार यह है कि हमारे एपीआई का उपयोग करने वाले लोग स्पष्ट या तार्किक तरीके से एपीआई डीएल में से एक या अधिक संदर्भित कर सकते हैं।
छोटे अनुप्रयोगों को इस तरह के अलगाव की आवश्यकता नहीं है। लेकिन, इससे कोई फर्क नहीं पड़ता कि मैं इंटरफेस कहां रखता हूं, मैं उन्हें किसी भी बेसस्पेस के समान नामस्थान में रखूंगा।
- 1. शारीरिक रूप से स्थित .NET में असेंबली कहां स्थित हैं?
- 2. क्या इंटरफेस समान नामस्थान में लाइव कंक्रीट क्लासेस के रूप में उन्हें कार्यान्वित करना चाहिए?
- 3. आईफोन एसडीके में लाइव मैपव्यू पर शारीरिक आंदोलन ट्रैकिंग?
- 4. मुझे CorFlags.exe कहां से डाउनलोड करना चाहिए?
- 5. जीएसी में शारीरिक रूप से संग्रहीत असेंबली कहाँ स्थित हैं?
- 6. मुझे एक एपीआई चाहिए। मुझे कहां से शुरू करना चाहिए?
- 7. क्या प्रोग्रामर उपयोगकर्ता इंटरफेस डिज़ाइन करना चाहिए?
- 8. लाइव वॉलपेपर प्रोग्रामेटिक रूप से
- 9. लाइव/प्रतिनिधि/लाइव/लाइव में कनवर्ट करना?
- 10. मुझे एमईएफ के लिए इंटरफेस कहां रखना चाहिए?
- 11. gpg शारीरिक रूप से निजी कुंजी फ़ाइल की सुरक्षा
- 12. घटक बनाने के दौरान मुझे कहां से शुरू करना चाहिए?
- 13. क्या मुझे केवल बीडीडी में सार्वजनिक इंटरफेस का परीक्षण करना चाहिए? (सामान्य रूप से, और विशेष रूप से रूबी में)
- 14. क्या मुझे इंटरफ़ेस सदस्यों को स्पष्ट रूप से या निहित रूप से लागू करना चाहिए?
- 15. मुझे संवेदनशील चर कहां स्टोर करना चाहिए?
- 16. निरस्त() और समाप्त() "लाइव" कहां है?
- 17. जावा को इंटरफेस के लिए विचार कहां से मिला?
- 18. डीडीडी: डोमेन इंटरफेस, इंफ्रास्ट्रक्चर कहां रखना है?
- 19. इंटरफेस व्यवस्थित करना
- 20. हमें इंटरफेस विधियों को जनता के रूप में क्यों घोषित करना चाहिए?
- 21. Android में स्वचालित रूप से लाइव वॉलपेपर कैसे सेट करें
- 22. एंड्रॉइड ऐप से यूट्यूब पर लाइव स्ट्रीमिंग
- 23. मुझे हेरोोकू पर संवेदनशील फाइलों को कहां स्टोर करना चाहिए?
- 24. UIWebView scrollTo सुचारू रूप से व्यवहार करना चाहिए
- 25. मुझे स्पष्ट रूप से स्ट्रक्चरआउट निर्दिष्ट करना चाहिए?
- 26. इंटरफेस शुरू करना?
- 27. कठोर शारीरिक सिमुलेशन घर्षण
- 28. शारीरिक डाटाबेस फ़ाइलें
- 29. "डुप्लिकेट इंटरफेस परिभाषा" त्रुटि प्राप्त करना, निश्चित रूप से # हेडर फाइलों को आयात करना है
- 30. मुझे अपना गेम लेवल स्टेटस कहां स्टोर करना चाहिए?
प्याज आर्किटेक्चर पर जेफ़री पालेर्मो के उत्कृष्ट लेख के लिंक सहित इसे लायक माना गया http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ –
धन्यवाद। यह आलेख अवधारणा को बहुत अच्छी तरह से बताता है। –