2009-10-28 16 views
8

मेरा प्रश्न इंटरफेस के उपयोग के बारे में इतना नहीं है लेकिन एक परियोजना संगठन प्रकृति के अधिक है।इंटरफेस को उनके कार्यान्वयन से अलग परियोजना में होना चाहिए?

नोट: मैं विजुअलस्टूडियो का उपयोग बहु-स्तरित अनुप्रयोग में कर रहा हूं।

क्या मेरी इंटरफेस फाइलें उनके कार्यान्वयन से अलग परियोजना में रहेंगी? मेरा प्रारंभिक विचार यह है कि मेरे सभी सेवा इंटरफेस को अपने स्वयं के प्रोजेक्ट (और मेरे प्रारंभिक कार्यान्वयन के लिए एक परियोजना) में अलग करना उपयोगी होगा ताकि सड़क के नीचे कार्यान्वयन/ठोस परियोजना को हटाया जा सके और एक नया स्थान बदल दिया जा सके। ज़रूरी।

उदाहरण के साथ स्पष्टीकरण के लिए: मान लें कि मेरे पास एक व्यवसाय परत इंटरफ़ेस है जिसे IBusinessService कहा जाता है जो MyApp.Business.Services नामस्थान में रहता है। मेरा कार्यान्वयन FooBusinessService एक ही नामस्थान में मौजूद होगा, लेकिन विजुअलस्टूडियो में एक अलग परियोजना है। यदि बाद में कार्यान्वित करने के लिए कार्यान्वयन की आवश्यकता होती है, तो एक डेवलपर FooService.proj के संदर्भ को हटा सकता है और इसे BarService.proj के संदर्भ में प्रतिस्थापित कर सकता है।

ऐसा लगता है कि यह आपको केवल एक इंटरफेस के साथ एक परियोजना को संदर्भित करने के बिना ऐप समाधान को अस्वीकार कर देगा, जो कंक्रीट कार्यान्वयन (जो अप्रचलित हो या आपके लिए कोई उपयोग नहीं हो) प्राप्त किए बिना, लेकिन क्या मुझे कुछ याद आ रहा है?

+0

संभावित डुप्लिकेट [क्या मेरे पास इंटरफेस के लिए एक अलग असेंबली होनी चाहिए?] (Http://stackoverflow.com/questions/3363312/should-i-have-a-separate-assembly-for-interfaces) – nawfal

उत्तर

10

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

  • Elder.DataAccess.Core - इंटरफेस
  • बड़ी के विशिष्ट MSSQL कार्यान्वयन - इंटरफेस और आम उपयोगिताओं
  • Elder.DataAccess.MSSQL शामिल हैं। DataAccess.MySQL - इंटरफेस के विशिष्ट MySQL कार्यान्वयन

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

+1

धन्यवाद स्कॉट। यह वह संरचना है जिसका मैं अब उपयोग कर रहा हूं, मुझे बस कुछ पुष्टि चाहिए कि यह समझ में आया और मुझे कुछ याद नहीं आया। जब तक कोई और कोई दोष नहीं बताता - मैं इसके साथ अपने इंटरफेस के लिए जाऊंगा। –

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