के साथ ओडाटा डब्ल्यूसीएफ डेटा सेवा मुझे पूरे विषय की लंबाई के लिए पहले माफी माँगने दें। यह काफी लंबा होगा, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि संदेश त्रुटियों के बिना स्पष्ट रूप से आता है।एनएचबीरनेट और कॉर्पोरेट बिजनेस लॉजिक
यहां कंपनी में, हमारे पास एक मौजूदा एएसपी.नेट वेब अनुप्रयोग है। .NET Framework 3.5 SP1 पर सी # एएसपी.नेट में लिखा गया। कुछ समय पहले डब्ल्यूसीएफ और एसओएपी का उपयोग करके इस वेब एप्लिकेशन के लिए प्रारंभिक एपीआई विकसित की गई थी ताकि बाहरी पार्टियों को ब्राउज़र पर भरोसा किए बिना आवेदन के साथ संवाद करने की अनुमति मिल सके।
यह एपीआई कुछ समय तक जीवित रहा, लेकिन आखिरकार यह अनुरोध एक नया एपीआई बनाने आया जो RESTfull था और नई प्रौद्योगिकियों पर निर्भर था। मुझे यह असाइनमेंट दिया गया था, और मैंने माइक्रोसॉफ्ट एमवीसी 2 फ्रेमवर्क का उपयोग करके प्रारंभिक एपीआई बनाया, जो हमारे एएसपी.नेट वेब अनुप्रयोग के अंदर चल रहा था। शुरुआत में इसे ठीक से चलाने के लिए कुछ समय लगेगा, लेकिन फिलहाल हम अपने संसाधनों का विस्तार करने वाले एक्सएमएल प्राप्त करने के लिए एप्लिकेशन पर आरईएसटी कॉल कर पाएंगे।
मैंने माइक्रोसॉफ़्ट वेबकंप में भाग लिया है, और मुझे तुरंत ओडाटा अवधारणा द्वारा बेचा गया था। यह तब बहुत समान था जब हम कर रहे हैं, लेकिन यह हमारे स्वयं के कार्यान्वयन के बजाए अधिक खिलाड़ियों द्वारा समर्थित प्रोटोकॉल था। वर्तमान में मैं ओपीए प्रोटोकॉल और डब्ल्यूसीएफ डाटास सर्विस प्रौद्योगिकी का उपयोग करके विकसित एपीआई को फिर से बनाने के लिए एक पीओसी (अवधारणा का सबूत) पर काम कर रहा हूं।
डेटा सेवाओं के साथ काम करने के लिए एनएचबीर्नेट 2 प्राप्त करने के लिए इंटरनेट खोजने के बाद, मैं एपीआई का एक रीडऑनली संस्करण बनाने में सफल रहा जो हमें आने वाले प्रश्न अनुरोधों को मैप करके आंतरिक व्यापार परत से इकाइयों को पढ़ने की अनुमति देता है व्यापार परत हालांकि, हम एक कार्यात्मक एपीआई चाहते हैं जो ओडाटा प्रोटोकॉल का उपयोग करके इकाइयों के निर्माण की अनुमति भी देता है। तो अब मैं आगे बढ़ने के लिए थोड़ा फंस गया हूँ। मैं निम्नलिखित लेख पढ़ रहा हूं: http://weblogs.asp.net/cibrax/default.aspx?PageIndex=3
उपरोक्त कलात्मक रूप से अच्छी तरह से एनएचबीर्नेट परत पर एक कस्टम डेटा सेवा को मैप करने के तरीके के बारे में बताता है। मैंने इसे जारी रखने के लिए आधार के रूप में उपयोग किया है, लेकिन मेरे पास "समस्या" है कि मैं अपने अनुरोधों को सीधे NHBernate का उपयोग करके डेटाबेस में मैप करना नहीं चाहता हूं, लेकिन मैं उन्हें अपनी व्यावसायिक परत (एक अलग डीएलएल) में मैप करना चाहता हूं) जो पहुंच, निजीकरण और ट्रिगर्स के आधार पर चेक, बाधाओं और अपडेट का एक बड़ा बैच करता है।
तो मैं क्या पूछना चाहता हूं, उदाहरण के लिए मैं उपरोक्त रूप में अपनी खुद की निबर्ननेट कॉन्टैक्ट क्लास बना सकता हूं, लेकिन इसके बजाय एनएचबर्ननेट सत्रों के बजाय हमारे बिजनेस लेयर पर निर्भर है, क्या यह काम कर सकता है? मुझे शायद उस ऑब्जेक्ट के प्रकार को समझने के लिए प्रतिबिंब पर भरोसा करना होगा जो मैं रनटाइम पर काम कर रहा हूं और अपडेट और डिलीट करने के लिए सही व्यावसायिक कक्षाओं को कॉल करता हूं। तो
*-----------------*
* Database *
*-----------------*
*------------------------*
* DAL(Data Access Layer) *
*------------------------*
*------------------------*
* BUL (Bussiness Layer) *
*------------------------*
*---------------* *-------------------*
* My OData stuff* * Internal API *
*---------------* *-------------------*
*------------------*
* Web Application *
*------------------*
, होगा यह काम करते हैं, या प्रदर्शन यह बेकार होगा:
एक smal ascii तस्वीर के साथ प्रदर्शित करने के लिए? या क्या मैं बस गेंद को याद कर रहा हूं? विचार यह है कि मैं OData WCF डेटा सेवा से BUL & DAL परत में जो भी तर्क संग्रहीत किया जाता है उसका पुन: उपयोग करना चाहता हूं।
मैं नए वर्गों है कि Data.Services नाम स्थान में EntityModel वर्गों से विरासत और एक नया DataService उद्देश्य यह है कि BUL & दाल & एपीआई परतों के लिए सभी कॉल के निशान बनाने बनाने के बारे में सोच रहा था। हालांकि मुझे यकीन नहीं है कि संसाधन बनाने और हटाने के अनुरोधों को कहां/किससे रोकना है।
मुझे उम्मीद है कि यह स्पष्ट है कि मैं क्या समझाने की कोशिश कर रहा हूं, और मुझे उम्मीद है कि कोई इस पर मेरी सहायता कर सकता है।
बहुत उपयोगी लेख (स्रोत आदि शामिल हैं) के लिए उपर्युक्त लिंक में सुधार http://weblogs.asp.net/cibrax/archive/2010/08/13/nhibernating-a-wcf-data-service.aspx – paulecoyote