2012-09-23 16 views
7

में पैकेजिंग रिपॉजिटरीज और उनके इंटरफेस डीडीडी के बाद आवेदन करने वाले अनुप्रयोगों में, हमारे पास सेवा लेयर होता है जिसमें सेवा + रिपोजिटरीज + रिपोजिटरीज और सेवाओं के इंटरफेस होते हैं, वे सभी एक ही असेंबली में रहते हैं, जबकि डोमेन मॉडल एक अलग असेंबली में रहेंगे। ऐसा लगता है कि डोमेन मॉडल में फिट नहीं होने वाली हर चीज इस बड़ी परियोजना में अव्यवस्थित है।डीडीडी

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

उत्तर

5

मैं प्याज वास्तुकला को देखता हूं। असल में डोमेन सेवाओं के लिए सभी डोमेन मॉडल और इंटरफेस कोर माना जाता है। परतें केवल उन परतों पर निर्भर करती हैं जो कोर के करीब हैं। उनका वास्तविक कार्यान्वयन बुनियादी ढांचे द्वारा संभाला जाता है।

यहाँ http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

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

आप लागू विभिन्न नमूनों को देख सकते हैं जुड़े लेख के विभिन्न हिस्सों में वास्तुकला। सबसे सरल एक आप यहाँ https://stackoverflow.com/questions/tagged/onion-architecture

इसे से संबंधित मुख्य लाभ यह है कि यह काफी हद तक ढांचागत चिंता है कि सबसे अधिक बार बदल जाएगा है प्रश्न देख सकते हैं यहाँ है https://bitbucket.org/jeffreypalermo/onion-architecture/get/1df2608bc383.zip

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

+0

प्याज वास्तुकला का महान संदर्भ जो मुझे बिल्कुल पता नहीं था। धन्यवाद। – kabaros

0

आप DDD book में अपनी परतों को डिजाइन करने के लिए दिशानिर्देश पा सकते हैं। आप मूल रूप से मिल गया है:

  • डोमेन
  • इंफ्रास्ट्रक्चर
  • आवेदन
  • यूआई

सेवा 3 प्रकार में आते हैं: आवेदन परत सेवा, बुनियादी ढांचा परत सेवा और डोमेन परत सेवा, निर्भर करता है सेवा क्या करता है। रिपोजिटरीज के लिए, उनके अनुबंध (इंटरफेस) अक्सर डोमेन में रहते हैं जबकि उनके ठोस कार्यान्वयन इंफ्रास्ट्रक्चर परत में होते हैं।

असेंबली के संबंध में, मैं प्रति परत कम से कम एक की सिफारिश करता हूं। असेंबली और डीएल सभी पुन: प्रयोज्यता, चिंताओं को अलग करने और decoupling के बारे में हैं - क्या मैं उस डीएल को चुनने में सक्षम हूं और इसे किसी अन्य एप्लिकेशन में पुन: उपयोग करने के लिए छोड़ दूंगा? क्या मैं असंबंधित विशेषताओं के समूह के साथ खींचने के बिना ऐसा करने में सक्षम हूं जो उस अन्य एप्लिकेशन को अनावश्यक जटिलता लाएगा? क्या मैं अपने निर्भरता इंजेक्शन मॉड्यूल में कोड की एक पंक्ति को बदलकर आसानी से अपने डीएल को किसी अन्य के लिए प्रतिस्थापित कर पाऊंगा? और इसी तरह।

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