2011-03-16 22 views
14

मेरे पास एक पीओसीओ डोमेन मॉडल और एनएचबीर्नेट रिपोजिटरी परत के साथ एक एएसपी.नेट एमवीसी 2 एप्लिकेशन है। मेरे डोमेन मॉडल में मेरे व्यूमोडल्स के बारे में कोई जागरूकता नहीं है, इसलिए मैं व्यूमोडेल से इकाई और उपाध्यक्ष के लिए ऑटोमैपर का उपयोग करता हूं।डोमेन संस्थाएं, डीटीओ, और देखें मॉडल

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

इस पर पढ़ने के बाद, मुझे लगता है कि यह अत्यधिक अनुशंसा की जाती है कि आप अपनी डोमेन परियोजना के बाहर अपनी इकाइयों का पर्दाफाश न करें और आपको इसके बजाय डीटीओ का उपयोग करना चाहिए।

मुझे इसका कारण दिखाई देता है लेकिन मुझे यह समझने में परेशानी हो रही है कि इसे कैसे कार्यान्वित किया जाए।

क्या मैं एएसपी.नेट एमवीसी में व्यूमोडेल से डीटीओ से मैप करता हूं, सेवा परत के माध्यम से डीटीओ भेजता हूं, और सेवा परत में डीटीओ से इकाई को मानचित्र करता हूं? मुझे अपने डीटीओ कहां परिभाषित करना चाहिए?

उत्तर

15

मुझे अपनी सेवा परत को इसके भीतर encapsulated इकाइयों रखना है, और केवल डीटीओ वापस/प्राप्त करें। मैं सेवा अनुबंधों के साथ-साथ डीटीओ को एक अलग असेंबली में रखता हूं जो एमवीसी परियोजना और सेवा कार्यान्वयन संदर्भ दोनों है।

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

ऐप/एमवीसी प्रोजेक्ट पर मैं कभी-कभी आलसी हो जाऊंगा और डीटीओ का उपयोग कुछ कार्यों (विशेष रूप से CRUDY वाले) के लिए मॉडल के रूप में करता हूं। अगर मुझे प्रक्षेपण या ऐसा कुछ चाहिए, तो मैं एक व्यूमोडेल बनाउंगा और डीटीओ और व्यूमोडेल के बीच ऑटोमैपर्स इत्यादि के रूप में परिवर्तित करूंगा।

आपकी संस्थाओं का खुलासा कितना बहस है। कुछ लोग उन्हें दृश्य/ऐप परत पर सभी तरह से धक्का देंगे। मैं उन्हें सेवा परत में रखना पसंद करता हूं। मुझे लगता है कि जब संस्थाएं सर्विस लेयर छोड़ती हैं, तो आप खुद को व्यवसाय तर्क प्रकार की चीज़ें कहीं भी कर रहे हैं जहां वे बातचीत कर रहे हैं, सामान जो शायद किसी सेवा में रहना चाहिए।

+0

यह निश्चित रूप से मेरी स्थिति के लिए सबसे अधिक लागू है - मुझे नहीं पता था कि इस मुद्दे पर बहस हुई थी। मुझे लगता है कि मेरी सेवा परत से परे मेरी इकाइयों को उजागर करने से मुझे दुःख आ रहा है - लेकिन जब तक मैंने परियोजना में डब्ल्यूसीएफ जोड़ा, तब तक मैंने इन समस्याओं का सामना करना शुरू नहीं किया। – Mayo

+1

मुझे लगता है कि यदि आपका एप्लिकेशन वितरित नहीं किया गया है (एप्लिकेशन और सेवा परत के बीच कोई नेटवर्क अंतर नहीं है) तो यह एक समस्या से बहुत कम है। मैंने एमएस लेख देखे हैं जहां वे आवेदन की सभी परतों में उपयोग की जाने वाली संस्थाओं का समर्थन करते हैं। मैंने "alt.net" प्रकार के लेखों में अधिक बार संरचना को भी देखा है, और यह मेरे लिए बेहतर काम करता है। यह ऐप के बारे में मेरी सोच को सरल बनाता है, सेवा वास्तव में डोमेन के लिए प्रवेश बिंदु है। – Brook

1

मुझे एमवीसी प्रोजेक्ट में डीटीओ को परिभाषित करना और फिर डोमेन इकाई से डीटीओ (और इसके विपरीत) में बदलने के लिए विस्तार विधियां बनाना पसंद है।

परिवर्तन एमवीसी कार्यों में होगा।

2

मैं अपने डीटीओ को व्यूमोडल्स की तरह मानता हूं क्योंकि यूआई लेयर (एमवीसी ऐप) उनसे अनुरोध कर रहा है। आप एंटिटी -> डीटीओ -> व्यूमोडेल जा सकते हैं, लेकिन मुझे लगता है कि इंजीनियरिंग पर यह है कि आपकी सेवा का एकमात्र उपभोक्ता एक एमवीसी एप्लीकेशन है। यदि किसी भी तरह डीटीओ का उपयोग वास्तव में डेटा के लिए किया जाएगा और न केवल स्क्रीन विनिर्देशों के लिए किया जाएगा तो आपको शायद अतिरिक्त मैपिंग का उपयोग करना चाहिए।

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

और निश्चित रूप से, यह सब आपके "आर्किटेक्चरल लक्ष्यों" पर निर्भर करता है। यह सवाल सीमा रेखापरक व्यक्तिपरक और तर्कसंगत आईएमएचओ है।

0

मैंने अभी इस डीटीओ < -> डीओ रूपांतरण के आसपास होने का एक तरीका लिखा है।हो सकता है कि आप इसे http://codeblock.engio.net/?p=17

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