हम AngularJS, C#, ASP.Net वेब API और Fluent NHibernate का उपयोग करके एक वेब ऐप बना रहे हैं। हमने प्रस्तुति परत (कोणीय दृश्य) में डेटा स्थानांतरित करने के लिए डीटीओ का उपयोग करने का निर्णय लिया है। मुझे डीटीओ की सामान्य संरचना और नामकरण के बारे में कुछ संदेह थे। मेरे परिदृश्य को चित्रित करने के लिए यहां एक उदाहरण दिया गया है। चलें कहते हैं कि मैं एक डोमेन इकाई बुलाया ग्राहक जो लगता है कि है:डीटीओ नामकरण सम्मेलन, मॉडलिंग और विरासत
1) बस क्रमांक और नाम :
public class Customer
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Address Address { get; set; }
public virtual ICollection<Account> Accounts { get; set; }
}
अब, मेरे विचार में/प्रस्तुति परत मैं की तरह ग्राहक के विभिन्न जायके को पुनः प्राप्त करने की जरूरत है 2) क्रमांक, नाम और पता 3) आईडी, नाम, पता और
मैं यह पूरा करने के DTOs का एक सेट बनाया है लेखा:
public class CustomerEntry
{
public int Id { get; set; }
public string Name { get; set; }
}
public class CustomerWithAddress : CustomerEntry
{
public AddressDetails Address { get; set; }
}
public class CustomerWithAddressAndAccounts : CustomerWithAddress
{
public ICollection<AccountDetails> Accounts { get; set; }
}
पता विवरण और खाता विवरण डीटीओ हैं जिनके पास उनके संबंधित डोमेन इकाइयों के सभी गुण हैं।
यह क्वेरीिंग और डेटा पुनर्प्राप्ति के लिए ठीक काम करता है; सवाल यह है कि मैं आवेषण और अद्यतन के लिए क्या उपयोग करता हूं। एक नए ग्राहक रिकॉर्ड के निर्माण के दौरान, नाम और पता अनिवार्य हैं और खाते वैकल्पिक हैं .. इसलिए दूसरे शब्दों में मुझे सभी ग्राहक गुणों के साथ एक वस्तु की आवश्यकता है। इसलिए भ्रम:
1) मैं सम्मिलित करने और अपडेट के लिए क्या उपयोग करूं? ग्राहक WithAddressAndAccounts डीटीओ में सबकुछ है लेकिन इसका नाम डालने/अपडेट के लिए उपयोग करने के लिए थोड़ा अजीब लगता है।
2) क्या मैं एक और डीटीओ बना सकता हूं .. यदि मैं करता हूं, तो क्या यह डुप्लीकेट नहीं होगा क्योंकि नया डीटीओ बिल्कुल ग्राहक की तरह होगा। एड्रेस और अकाउंट्स?
3) आखिरी लेकिन कम से कम नहीं, क्या ऊपर वर्णित डीटीओ विरासत स्ट्रक्चर आवश्यकता के लिए एक अच्छा फिट लगता है? क्या इसका मॉडल करने के कोई अन्य तरीके हैं?
मैं इस विषय पर अन्य पोस्टों के माध्यम से चला गया हूं लेकिन बहुत अधिक रास्ता नहीं बना सका। एक चीज जिसे मैंने पिकअप किया था, वर्ग नामों में प्रत्यय "डीटीओ" का उपयोग करने से बचाना था। मुझे लगता है कि यह थोड़ा अनावश्यक लगता है।
में आपके विचार जानना
धन्यवाद
आपके उत्तर के लिए धन्यवाद। कई डीटीओ कक्षाओं का उपयोग करने के लिए प्रेरणाओं में से एक यह परिभाषित करने के लिए थोड़ा अधिक अभिव्यक्तिपूर्ण था कि डीटीओ के लिए क्या उपयोग किया जाता है। इसके अलावा, अगर आपको केवल आईडी और नाम की आवश्यकता है, तो क्या आपको वास्तव में तार पर पूर्ण ग्राहक ग्राहक एंटीरी डीटीओ (जिसे आपने वर्णित किया है) भेजना चाहिए? – Sennin
@ सेनिन मैंने आपकी टिप्पणी के आधार पर अपना उत्तर संपादित किया लेकिन मुझे लगता है कि मेरा जवाब अभी भी आपके लिए अपूर्ण होगा। हो सकता है कि मैं बाद में आपकी उपरोक्त टिप्पणी में और अधिक जोड़ने के लिए इसे संपादित करूं। – VS1
@ सेनिन कृपया मेरे संपादन को देखें 2. – VS1