मेरी सेवाओं में संदर्भ डेटा के लिए उपयोग करने के लिए "सर्वोत्तम" पैटर्न के संबंध में प्रतिक्रिया/विकल्प/टिप्पणियां हल करना।डब्ल्यूसीएफ डेटा अनुबंध और संदर्भ इकाई डेटा?
संदर्भ डेटा से मेरा क्या मतलब है?
चलिए नॉर्थविंड का उदाहरण के रूप में उपयोग करते हैं। एक आदेश डेटाबेस में किसी ग्राहक से संबंधित है। जब मैं अपने ऑर्डर सेवा को कार्यान्वित करता हूं, तो कुछ मामलों में मैं एक "पूर्ण" ग्राहक को आदेश से और अन्य मामलों में संदर्भ चाहता हूं, जब मैं केवल ग्राहक के लिए संदर्भ चाहता हूं (उदाहरण के लिए एक कुंजी/मूल्य जोड़ी)।
उदाहरण के लिए, यदि मैं GetAllOrders() कर रहा था, तो मैं पूरी तरह से भरे हुए ऑर्डर को वापस नहीं करना चाहता, मैं प्रत्येक ऑर्डर के ग्राहक के लिए केवल संदर्भ डेटा के साथ ऑर्डर का हल्का संस्करण वापस करना चाहता हूं। अगर मैंने GetOrder() विधि की है, हालांकि, मैं शायद ग्राहक विवरण भरना चाहता हूं क्योंकि इस विधि के उपभोक्ता को इसकी आवश्यकता हो सकती है। ऐसी अन्य स्थितियां हो सकती हैं जहां मैं पूछना चाहूंगा कि कुछ विवरण कॉल के दौरान ग्राहक विवरण भर जाएंगे, लेकिन दूसरों के लिए छोड़ दिया जाएगा।
यहाँ है कि मैं क्या लेकर आए हैं:
[DataContract]
public OrderDTO
{
[DataMember(Required)]
public CustomerDTO;
//etc..
}
[DataContract]
public CustomerDTO
{
[DataMember(Required)]
public ReferenceInfo ReferenceInfo;
[DataMember(Optional)]
public CustomerInfo CustomerInfo;
}
[DataContract]
public ReferenceInfo
{
[DataMember(Required)]
public string Key;
[DataMember(Required)]
public string Value;
}
[DataContract]
public CustomerInfo
{
[DataMember(Required)]
public string CustomerID;
[DataMember(Required)]
public string Name;
//etc....
}
सोच है कि यहाँ के बाद से ReferenceInfo (जो एक सामान्य की/मान जोड़ी है) हमेशा CustomerDTO में आवश्यक है, मैं हमेशा ReferenceInfo होगा है । यदि आवश्यक हो तो बाद में ग्राहक विवरण प्राप्त करने के लिए मुझे पर्याप्त जानकारी मिलती है। ग्राहक डीटीओ होने के नकारात्मक पक्ष में रेफरेंसइन्फो की आवश्यकता है कि जब मैं पूर्ण ग्राहक डीटीओ (यानि कस्टमरइन्फो भरने के साथ) प्राप्त कर रहा हूं तो यह अधिक हो सकता है, लेकिन कम से कम मुझे संदर्भ जानकारी की गारंटी है।
क्या कोई अन्य पैटर्न या ढांचा टुकड़ा है जिसका उपयोग मैं इस परिदृश्य/कार्यान्वयन "क्लीनर" बनाने के लिए कर सकता हूं?
कारण मैं पूछता हूं कि हालांकि हम नॉर्थविंड में हमेशा एक पूर्ण ग्राहक डीटीओ वापस लौटने के लिए कह सकते हैं, जो सरल नॉर्थविंड स्थिति में ठीक काम कर सकता है। मेरे मामले में, मेरे पास एक ऑब्जेक्ट है जिसमें 25-50 फ़ील्ड हैं जो संदर्भ/लुकअप प्रकार डेटा हैं। कुछ अलग-अलग परिस्थितियों में दूसरों की तुलना में लोड करने के लिए अधिक महत्वपूर्ण हैं, लेकिन मैं इन संदर्भ प्रकारों की यथासंभव कम परिभाषाएं लेना चाहता हूं (ताकि मैं "डीटीओ रखरखाव नरक" में न जाऊं)।
राय? प्रतिक्रिया? टिप्पणियाँ?
धन्यवाद!
FWIW ... मुझे लगता है कि लिंक से एसक्यूएल, इकाई फ्रेमवर्क, या एडीओ नहीं है।नेट डाटा सर्विसेज यहां मेरी मदद करेगी, क्योंकि मेरे पास 3 अलग-अलग सिस्टम हैं, सभी प्रतिनिधित्व करते हैं, अनिवार्य रूप से, एक ही डेटासेट। इन प्रणालियों को समेकित करने का यह पहला कदम है, या कम से कम बाहरी प्रणालियों के लिए इन तीन प्रणालियों से डेटा को अधिक सामान्य और लगातार तरीके से उपभोग करने में सक्षम होना चाहिए। – Brian
क्या आप कृपया http://stackoverflow.com/questions/9483286/understanding-data-outside-of-service-soa का उत्तर दे सकते हैं? – Lijo