2011-01-28 12 views
7

मैं एंटीटीफ्रेमवर्क का उपयोग करके बहुत सारे डब्ल्यूसीएफ उदाहरण देख रहा हूं और उनमें से अधिकतर क्लाइंट को किसी प्रकार का पीओसीओ या डीटीओ क्लास वापस लौटते हैं।क्या डब्ल्यूसीएफ सेवा एक EntityObject या एक पीओसीओ/डीटीओ कक्षा वापस करनी चाहिए?

मैं सोच रहा था कि यह डिफ़ॉल्ट EntityObject के बाद से [DataContract] विशेषताओं और INotifyPropertyChanged लागू करता है। EntityObject (या vise versa) से बेहतर डीटीओ या पीओसीओ कक्षा वापस कर रहा है? और क्या ऐसे विशिष्ट उदाहरण हैं जहां एक दूसरे पर एक रिटर्न वैल्यू का उपयोग करना बेहतर होता है?

+1

[डब्ल्यूसीएफ, इकाई फ्रेमवर्क और डेटा अनुबंध] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1121877/wcf-entity-framework-data-contracts) –

उत्तर

8

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

कारण यह है कि, यदि आप EntityObject पास करते हैं, तो आप एक धारणा बना रहे हैं कि सेवा के उपभोक्ता के पास समान डेटा संदर्भ का संदर्भ होगा, और यह स्पष्ट सीमाओं के एसओए सिद्धांत का उल्लंघन करता है। यह आपकी सेवा की पुन: प्रयोज्यता को कम करता है।

यह संभव है कि माइक्रोसॉफ्ट ने अपने कुछ डब्ल्यूसीएफ-आधारित डेटाबेस एक्सेस टूल्स जैसे आरआईए का समर्थन करने के लिए EntityObject पर डेटाकंट्रैक्ट लागू किया। INotifyPropertyChanged WPF बाध्यकारी समर्थन के लिए है, और डब्ल्यूसीएफ या डेटा अनुबंध से संबंधित नहीं है।

+0

धन्यवाद। क्या डीटीओ को क्लाइंट पर EntityObject में वापस डालना सामान्य है, या क्या यह ग्राहक के उद्देश्यों के लिए एक नया मॉडल बनाना पसंद करता है? – Rachel

+0

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

+0

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

0

कुछ मामलों में पीओसीओ वापस करने के लायक है जहां आप दृढ़ता तर्क से अवगत नहीं हैं। मेरा मतलब है कि एक ही पीओसीओ अन्य ओआरएम या अन्य उद्देश्य के लिए प्लग कर सकता है। ठीक है यह ओआरएम पर पीओसीओ का लाभ है, लेकिन यह आपको EntityObject पर प्रदर्शन को बढ़ावा देता है जो प्रॉक्सी/नोटिफ़ायर रन टाइम जोड़ता है।

रिटर्निंग पॉको - आपको डब्ल्यूसीएफ से प्राप्त होने पर इकाई की स्थिति को मैन्युअल रूप से अपडेट करना होगा।

रिटर्निंग EntityObject - आपको बनाए रखा राज्य के साथ इकाई प्राप्त होती है।

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