2008-08-30 17 views
6

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

इस दृष्टिकोण को लेने पर कोई सुझाव?


जब मैं अपने अनुप्रयोग में इस तकनीक और कदम लागू किया, सर्वर बस से पहले मेरी सूची देता है यह प्रत्येक संपत्ति है कि भरी हुई ... इस प्रकार उत्सुक लोड हो रहा है आलसी माना जाता है की बात करता है। क्या आप इस मुद्दे को समझा सकते हैं या एक संकल्प का सुझाव दे सकते हैं?

संपादित करें: तो यह क्रमबद्धता के दौरान को देखा नहीं प्राप्त करता है यह appears आप XMLIgnore विशेषता का उपयोग कर सकते हैं .. अभी भी इस पर पढ़ने हालांकि

उत्तर

3

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

Wikipedia article में मानक तकनीकें काफी संक्षेप में हैं (और सी # भी!)। मैंने दोनों भूत और मूल्य धारकों का उपयोग किया है और वे बहुत अच्छी तरह से काम करते हैं।

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

इस तरह की परतिंग आपको उस तरीके को समायोजित करने देती है जिससे सेवा को यूआई परतों की अपेक्षाकृत स्वतंत्र रूप से स्वतंत्र रूप से कार्यान्वित किया जाता है जिसे सेवा और व्यापार स्तर कहा जाता है। यह आपको इकाई परीक्षण का आधा मौका भी देता है!

4

सेवा इंटरफ़ेस पर आलसी लोडिंग न करें। स्पष्ट डीटीओ परिभाषित करें और उन्हें डब्ल्यूसीएफ में अपने डेटा अनुबंध के रूप में उपभोग करें।

आप डीटीओ बनाने के लिए आवश्यक वस्तुओं को ठीक से लाने के लिए NHibernate (या अन्य ORMs) का उपयोग कर सकते हैं।

+0

मैं केवल ado.net की दुनिया में फंस गया हूं ... किसी भी मौके पर आप इस दृष्टिकोण का नमूना प्रदान कर सकते हैं? –

+1

असल में आपको प्रॉक्सी कोलेक्शन बनाने की आवश्यकता है, जो कि IList या ICollection से प्राप्त होता है, और इसे आइटम लोड करने के लिए कमांड का ट्रैक रखने में सक्षम होना चाहिए। किसी भी सदस्य तक पहुंचने पर, सूची को पॉप्युलेट करने के लिए पहले कमांड निष्पादित करें। –

1

आप कुछ आरईएसटी आधारित (उदाहरण के लिए ADO.NET Data Services) का उपयोग करने की कोशिश कर सकते हैं और इसे अपने क्लाइंट कोड में पारदर्शी रूप से लपेट सकते हैं।