10

मैं एक प्रोजेक्ट पर काम करता हूं जहां हम Orchard CMS का उपयोग करने पर विचार कर रहे हैं।ऑर्चर्ड रिकॉर्ड रिपोजिटरी को कैसे बदलें

हालांकि, हम कुछ सामग्री वस्तुओं के लिए डेटा स्रोतों के रूप में वेब सेवाओं का उपयोग करना चाहते हैं। मुझे लगता है कि इसे संभव बनाने के लिए हमें भंडार कार्यान्वयन को बदलना है, लेकिन मुझे इसके बारे में निश्चित नहीं है।

तो मेरा प्रश्न है: क्या मेरा अनुमान सही है, या यह अधिक जटिल है? और फिर यह कैसे किया जा सकता है?

धन्यवाद!

अद्यतन: मुझे लगता है कि ऑर्चर्ड के आईरिपोजिटरी इंटरफ़ेस को LINQ प्रदाता को कार्यान्वित करने की आवश्यकता है। इस परिदृश्य में यह असंभव है क्योंकि वेब सेवाओं को एसओएपी के माध्यम से पेश किया जाता है।

मैं बेहतर आगे परिदृश्य का वर्णन करेंगे:

वेबसाइट हम बनाने की इच्छा वेब सेवाओं का उपयोग करने के लिए एक संगठन के सदस्यों और इकाइयों के बारे में जानकारी प्राप्त करने के लिए है। हम कुछ संगठनात्मक इकाई के सदस्यों को प्रदर्शित करना चाहते हैं, उदाहरण के लिए, वेबसाइट पर। हम अपनी खुद की सामग्री प्रकार "इवेंट" बनाना चाहते हैं जिसमें "सदस्य" (डब्ल्यूएस से) के साथ एम: एन रिश्ते (उपस्थिति) होना चाहिए।

+0

बहुत कुछ करने की कोशिश कर रहा है। एक भाग में डब्ल्यूएस फ़ीडिंग सामग्री - मिश्रण में उपयोगकर्ता प्रबंधन को एकीकृत करने के लिए भी देख रहे हैं। – justSteve

उत्तर

16

आप एक IRepository मामले में आप करते हैं कहीं और करने के लिए पूरी तरह से प्रत्यक्ष हिस्सा भंडारण नहीं चाहता लागू करने के लिए नहीं है। मैं वर्तमान में अपने ऑर्चर्ड-आधारित परियोजनाओं में से एक में डब्ल्यूसीएफ सेवा का उपयोग कर रहा हूं, इसलिए आपका परिदृश्य समान है।

आप इसे इस तरह से कर सकते हैं:

  1. एक वर्ग IDependency को लागू करने, ताकि आप ड्राइवरों/संचालकों/नियंत्रक आदि के लिए को इसकी सुई देने में सक्षम हो जाएगा में अपने वेब सेवा प्रॉक्सी लपेटें यूनिट परीक्षण की आसानी और मजाक करने से आपको एक अलग इंटरफ़ेस बनाना चाहिए, उदाहरण के लिए। IMyWebServiceWrapper: निर्भरता और फिर इसे कार्यान्वित करें।
  2. उचित सामग्री भागों और अभिलेख बनाएं। रिकॉर्ड स्टोर में केवल डब्ल्यूएस से डेटा ढूंढने और लाने के लिए आवश्यक जानकारी। सामग्री भागों में सभी आवश्यक गुण बनाते हैं - वे डब्ल्यूएस से लोड किए जाएंगे।
  3. उचित सामग्री हैंडलर 'कंस्ट्रक्टर्स
  4. अंदर इस तरह कंटेंट हैंडलर निर्माता उपयोग कुछ में बिंदु 1. से अपने वर्ग सम्मिलित करें:

OnLoaded<MyPart>((ctx, part) => { part.MyProperty = myService.GetMyProperty(part.SomeIdToLookup); });

  • MyPart पर अपनी ओर है बगीचे की ओर।
  • MyProperty आपके हिस्से पर कुछ संपत्ति है जो डब्ल्यूएस से लोड की जाएगी।
  • myService आपकी लिपटे डब्लूएस प्रॉक्सी है, जिसे एक निर्माता पैरामीटर के रूप में पारित किया गया है।
  • GetMyProperty रैपर में एक विधि है जो डब्ल्यूएस को कॉल करती है और आवश्यक डेटा पुनर्प्राप्त करती है।

बेशक आप अन्य हैंडलर ईवेंट (जैसे ऑनइंस्टाईलाइज्ड, ऑनक्रेटेड, ऑन-प्रकाशित आदि) का उपयोग कर सकते हैं। आप सामग्री हैंडलर here के बारे में अधिक पढ़ सकते हैं।

मैं त्वरित विकास के लिए कोडेप्लेक्स से dev startup module प्राप्त करने की भी सिफारिश करता हूं।

3

असल में आप को को रिपोजिटरी या यहां तक ​​कि रिकॉर्ड का उपयोग करने की आवश्यकता नहीं है। आप जो करने की कोशिश कर रहे हैं उसके आधार पर, एक हैंडलर से फ़ेचिंग तर्क को ट्रिगर करना काम कर सकता है।

+0

और आप किस सटीक एक्स्टेंसिबिलिटी पॉइंट का उपयोग करने के लिए सलाह देते हैं? IContentHandler में मुख्य रूप से केवल "BuildDisplay" और "BuildEditor" विधियों को ओवरराइड करना? यह प्रयाप्त है? (अपडेट देखें) –

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