8

कैसे आप एक ntier आवेदन में परतों को डेटा पास है में डेटा गुजर? मैंने 3 अलग-अलग तरीकों का मैप किया है।एक ntier आवेदन

ए) सामान्य .net वस्तुओं सामान्य डेटा तालिका, hashtables, सामान्य डेटासेट, तार, ints आदि ... तो डेटासेट का उपयोग कर अपने व्यापार वस्तुओं जो यूआई परत को भेजा भरने के लिए।

alt text http://img11.imageshack.us/img11/460/generic.png

http://dabbleboard.com/draw?b=eiu165&i=26&c=54eef6f1ac01f03c85919518f4a24e798e57e133

समर्थक कोई अतिरिक्त परतों की जरूरत कांग्रेस व्यापार परत में जेनेरिक डेटासेट और टेबल

बी) के साथ काम करने की है एक इकाई परत का उपयोग कर अन्य परतों डब्ल्यू संदर्भ होगा। इस परत में या तो दृढ़ता से टाइप किए गए डेटासेट या सादा ओल्ड सी ऑब्जेक्ट्स होंगे। ऑब्जेक्ट्स ज्यादातर कंटेनर डेटा और बहुत कम तर्क होगा। ये यूआई परत को भेजे गए वही ऑब्जेक्ट्स होंगे।

alt text http://img8.imageshack.us/img8/6454/entities.png

http://dabbleboard.com/draw?b=eiu165&i=6&c=d0c2b346894a96b12bd3867f630e474a2af098fa

समर्थक सभी परतों कांग्रेस में एक ही वर्गों के साथ काम कर रहे सभी परतों को entities.dll को

सी एक संदर्भ जोड़ने) डेटा स्थानांतरण ऑब्जेक्ट्स का उपयोग करें (conatiner ऑब्जेक्ट्स ओ nly) DataAccess परत में परिभाषित किया गया है। फिर उन ऑब्जेक्ट्स का उपयोग उन व्यावसायिक ऑब्जेक्ट्स को भरने के लिए करें जो UI परत पर भेजे जाते हैं।

alt text http://img43.imageshack.us/img43/1236/transferp.png

http://dabbleboard.com/draw?b=eiu165&i=27&c=f886efa3f9d5eb4b45ddb02361c79cdcdaec0a9b

समर्थक व्यापार परत वस्तुओं के दो प्रकार के साथ काम सामान्य कक्षाओं साथ काम करने के कांग्रेस नहीं होगा और आप के साथ व्यापार वस्तुओं हाइड्रेट करने के लिए होगा हस्तांतरण वस्तुओं

हम काम पर चर्चा की थी और देखने के लिए क्या समुदाय सोचा चाहता था। मैंने डबबलबोर्ड के लिए एक लिंक भी जोड़ा। कृपया संपादन के बजाय कॉपी और बनाएं।
धन्यवाद

+1

मैं आपको सिर्फ डबबलबोर्ड के लिंक के लिए +1 करूंगा। मैं इसके बारे में कभी नहीं जानता था। धन्यवाद! अब ... आपकी समस्या फिर से क्या थी? – Randolpho

+0

डबलेटबोर्ड पर डितो। यह बहुत मजेदार है। – NotMe

+0

हाँ, डैबलबोर्ड दूरस्थ टीम के सदस्यों के साथ काम करने के लिए बहुत अच्छा है – eiu165

उत्तर

5

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

अगर, हालांकि, आप एक स्तरीय दृष्टिकोण का उपयोग कर रहे हैं के रूप में अपने शीर्षक, पता चलता है, जिसका अर्थ है वहाँ प्रक्रिया और/या नेटवर्क सीमाओं कि पार कर रहे हैं, मैं तुम्हें दृष्टिकोण सी के साथ जाने के सुझाव देंगे आप वास्तव में नहीं कर रहे हैं आस-पास के उदाहरणों को पारित करना, आप प्रतियां पारित कर रहे हैं, इसलिए किसी भी वस्तु को जोड़ने के लिए आपको प्राप्त होने वाले किसी भी लाभ, जैसे कि एमवीसी दृष्टिकोण के लिए देखने योग्य विकल्प, वैसे भी खो गए हैं। चारों ओर एक ही कक्षा का उपयोग करने की कोशिश करने के बजाय प्रत्येक स्तर स्तर पर डेटा एपीआई को परिभाषित करने के लिए बेहतर है।

+1

यह एक स्तरित दृष्टिकोण है और सभी परतें एक ही प्रक्रिया स्थान पर निष्पादित कर रही हैं। उस मामले में शीर्षक क्या होना चाहिए? यहां मेरा अनुमान है कि एन-लेयर एप्लिकेशन में डेटा पास हो रहा है? धन्यवाद – eiu165

+1

बहुत ज्यादा। एक परत और एक स्तर के बीच का अंतर अस्पष्ट होता है, लेकिन मौजूदा राय यह है कि एक स्तरीय किसी प्रकार की भौतिक सीमा पार करता है, आमतौर पर उसमें से एक जिसे मार्शलिंग या क्रमबद्ध करने की आवश्यकता होती है। एक परत * लॉजिकल * अलगाव को संदर्भित करती है और आमतौर पर उस सीमा को पार नहीं करती है। अधिक जानकारी के लिंक के लिए http://geekswithblogs.net/mahesh/archive/2006/10/28/95322.aspx देखें। – Randolpho

+1

डेटासेट अवधि का उपयोग नहीं करेगा ... – PositiveGuy

0

मैं विकल्प सी पसंद है, लेकिन यह भी मुझे दो कारणों के लिए थामने देता है:

  1. मैं क्या प्रॉपर्टीज़ भी कई स्थानों में हैं knwowledge प्रसार करने के लिए है।
  2. डीटीओ के serializable होना करने के लिए है, जो भयानक नहीं है, लेकिन अभी भी एक विचार।
0

मैं सभी 3 परतें संभालने हूँ एक ही अनुप्रयोग के भीतर मौजूद है।जावा में कम से कम मैंने डेटा एक्सेस के लिए हाइबरनेट का उपयोग किया है और सभी परतों में उन डेटा बीन्स का उपयोग किया है। (विकल्प बी) यह आपकी परतों में अपनी इकाइयों का पुन: उपयोग करने में सक्षम होने के लिए समझ में आता है।

1

महान प्रश्न - हमेशा के रूप में, जवाब "यह निर्भर करता है" होना चाहिए।

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

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

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

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