2011-07-13 24 views
16

में सेवा संदर्भ जोड़ें मुझे एक एमवीसी समाधान मिला है जो वेब एपीआई सेवाओं के लिए कुछ मार्ग होस्ट करता है। कुछ परिस्थितियों में, मैं इन्हें जावास्क्रिप्ट से सरल HTTP प्राप्त करने के साथ कॉल करूंगा। दूसरों में, मैं उन्हें कुछ .NET कोड, शायद एक और एमवीसी एप्लिकेशन से कॉल करना चाहता हूं।एएसपी.नेट वेब एपीआई सेवा

क्या इन वेब एपीआई एंडपॉइंट्स के लिए सेवा संदर्भ जोड़ने का कोई तरीका है और क्या टूलिंग प्रॉक्सी क्लाइंट और सीएलआर प्रकार बनाती है क्योंकि यह एक सामान्य डब्ल्यूसीएफ सेवा के साथ करेगी? मुझे पता है कि यहां कोई एसओएपी शामिल नहीं है लेकिन मैंने पढ़ा है कि यह संभव है, बस नहीं।

उत्तर

15

नहीं यह आरईएसटी सेवा है। आरईएसटी सेवा सेवा संदर्भ द्वारा प्रॉक्सी बनाने के लिए मेटाडेटा का पर्दाफाश नहीं करती है (डब्ल्यूसीएफ डाटा सर्विसेज को छोड़कर जिसमें मेटाडाटा का कुछ विशेष रूप है)। सेवा को कॉल करने के लिए वेब-एपीआई की HttpClient कक्षा का उपयोग करें।

+0

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

+0

यह एक सुंदर लंगड़ा बहाना है। यहां (सामान्य) परिदृश्य यह है कि आप अपनी सेवा बुला रहे हैं - और आपके पास हमेशा अपनी सेवा के लिए मेटाडेटा है। यह केवल निम्न उपकरण का मुद्दा है। अगर आप ओडाटा चाहते हैं तो मामले खराब हो जाएंगे: फिर आपको पुरानी डब्ल्यूसीएफ सेवाओं के साथ व्यक्तित्व प्राप्त करने के लिए अपना खुद का लिनक प्रदाता लिखना होगा। बेहतर टूलींग इसे बदल सकती है। – John

+0

@ जॉन: एमएस द्वारा चलाए गए यूजरवॉइस साइट्स में बहुत सारे हैं। आरईएसटी सेवाओं के लिए डब्ल्यूएडीएल या डब्ल्यूएसडीएल 2 विवरण के लिए समर्थन जोड़ने के लिए अनुरोध (यदि यह पहले से मौजूद नहीं है) बढ़ाने का प्रयास करें। एक बार विवरण उपलब्ध हो जाने के बाद, आप ग्राहक के लिए एक पीढ़ी भी कर सकते हैं। –

1

वेब एपीआई का उपयोग करके मैंने देखा है कि कुछ नमूनों से सीधे नहीं बल्कि सर्विसकंट्रैक्ट स्थापित करना शामिल है। ऐसा लगता है कि यदि आप नियमित ऑपरेशन कंट्रैक्ट & डेटाकंट्रैक्ट विशेषताओं के साथ एक दूसरा सेवा अनुबंध इंटरफ़ेस जोड़ते हैं तो आप अपनी पसंद के मानक डब्ल्यूसीएफ बाध्यकारी और उसके मिलान मैक्स एंडपॉइंट के साथ एक एंडपॉइंट बना सकते हैं। यह सेवा इंटरफेस दोनों को कार्यान्वित करेगी ताकि अतिरिक्त सेवा संदर्भ मानक डब्ल्यूसीएफ एंडपॉइंट से डब्लूएसडीएल दस्तावेज़ प्राप्त कर सके।

+0

विचार करने के लिए कुछ विवरण हैं, जैसे क्रमबद्धता (प्रतिबाधा से बचने के लिए दोनों मामलों में समान होना चाहिए), डुप्लिकेट विधि विशेषताओं (वे ढांचे के बीच संगत नहीं हैं), प्रमाणीकरण और प्रमाणीकरण भी। मुझे संदेह होगा कि यह लाभ के लायक नहीं है, लेकिन फिर भी यह एक दिलचस्प विचार है। – John

8

हमारे पास ऐसा करने के लिए कोई मानक तंत्र नहीं है। आरईएसटी उन प्रणालियों के निर्माण के बारे में है जो ग्राहकों को सर्वर से स्वतंत्र रूप से विकसित करने के लिए अनुमति देते हैं। HTTP GET, PUT, POST, DELETE, आदि के एक समान इंटरफेस को परिभाषित करता है इस प्रकार विधि विवरण की आवश्यकता नहीं है। दोनों कारणों से कोई आरईएसटी डब्लूएसडीएल समकक्ष नहीं है, या मुझे कोई समकक्ष नहीं कहना चाहिए कि वास्तव में आरईएसटी समुदाय (यानी WADL है) के बीच गति प्राप्त हुई है।

आरईएसटी सेवाओं में युग्मन का बिंदु वास्तव में मीडिया प्रकार/शरीर प्रारूप के आसपास है। इसके लिए हम दृढ़ता से टाइप किए गए तंत्र का समर्थन करते हैं। वेब एपीआई में हम एक HttpClient (NuttClient पर NuttClient) भेजते हैं जो आपको सीएलआर प्रकार लेने और कुछ प्रतिनिधित्व में बदलने की अनुमति देता है। बॉक्स में से यह एक्सएमएल और जेएसओएन का समर्थन करता है।

इस प्रकार आप एक सीएलआर प्रकार बना सकते हैं और इसे ग्राहकों के साथ साझा कर सकते हैं, और उसके बाद क्लाइंट पर HttpClient का उपयोग कर सकते हैं।

स्वयं प्रकार बनाने के लिए कई विकल्प भी हैं।

  1. हाथ से बनाएं
  2. उपयोग "पेस्ट करें XML के रूप में" उपकरण और वेब एप्लिकेशन एपीआई स्वचालित मदद पृष्ठ की नकल करने के लिए सुविधा/पेस्ट।
संबंधित मुद्दे