2008-09-11 9 views
5

मुझे इंटरफेस और कार्यान्वयन अलग करने का विचार पसंद है। लेकिन कितना अलग है? एक अलग नेट असेंबली में इंटरफ़ेस परिभाषाएं हैं? क्या आपके पास एक ऐसी परियोजना है जो समाधान के लिए सभी इंटरफेस को परिभाषित करती है? अन्यथा इंटरफेस की परिपत्र निर्भरताओं के साथ समस्याएं हैं?"शारीरिक रूप से लाइव" कहां इंटरफेस करना चाहिए?

उत्तर

7

अपनी डोमेन ऑब्जेक्ट्स और इंटरफेस को एक अलग "डोमेन" असेंबली में रखें।
इस असेंबली को कभी भी कोर .net असेंबली के अलावा कुछ भी संदर्भित नहीं करना चाहिए।

इस तरह आप अपने डोमेन/सेवा मॉडल और आपके कार्यान्वयन से एक साफ पृथक्करण प्राप्त करते हैं।

संपादित करें:
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

+0

प्याज आर्किटेक्चर पर जेफ़री पालेर्मो के उत्कृष्ट लेख के लिंक सहित इसे लायक माना गया http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ –

+0

धन्यवाद। यह आलेख अवधारणा को बहुत अच्छी तरह से बताता है। –

3

मैं सिर्फ यह की खातिर एक अलग विधानसभा में इंटरफेस डाल नहीं होगा। हालांकि, यदि इंटरफेस किसी भी प्रकार के आईपीसी या एक्स्टेंसिबिलिटी आर्किटेक्चर में भाग लेते हैं तो अक्सर उन्हें अपनी असेंबली देने के लिए समझदारी होती है।

आप परियोजनाओं के लिए एक दूसरे को संदर्भित करने की आवश्यकता है, तो हाँ, आप इंटरफेस के लिए एक अलग विधानसभा की आवश्यकता होगी, लेकिन आप यह भी ध्यान से अगर वहाँ एक सर्कुलर निर्भरता को हल करने का एक और तरीका है देखने के लिए वास्तुकला जांच करनी चाहिए।

1

मैं इंटरफ़ेस के नाम के बाद उप-फ़ोल्डर (और नामस्थान) में इंटरफ़ेस के सबसे सामान्य या सरल कार्यान्वयन को प्राथमिकता देना पसंद करता हूं।

 
\project\ 
\project\IAppender.cs 
\project\Appender\ 
\project\Appender\FileAppender.cs 
\project\Appender\ConsoleAppender.cs 

यदि मैं इस कक्षा के बाहर इस कक्षा का विस्तार करता हूं। एक विशेष परियोजना में, फ़ोल्डर/नामस्थान को समान रूप से दोहराएं।

 
\specialproject\ 
\specialproject\Appender\ 
\specialproject\Appender\MemoryAppender.cs 
0

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

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

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