2009-08-20 20 views
6

में कॉलबैक लागू करना मैं अपने उत्पाद के लिए रिमोट, ओपन एपीआई बनाने के लिए एसओएपी या एक्सएमएल-आरपीसी का उपयोग कैसे कर सकता हूं, इसकी समझ करने की कोशिश कर रहा हूं। समस्या यह है कि, मेरे एपीआई का हिस्सा मुझे अपने सर्वर से क्लाइंट को धक्का देने वाली घटनाओं को प्राप्त करने में सक्षम होने की आवश्यकता होगी - मुझे अपने एपीआई के हिस्से के रूप में "कॉलबैक भेजें" और न केवल "फ़ंक्शन कॉल करें" करने में सक्षम होना होगा । क्या एसओएपी या एक्सएमएल-आरपीसी में ऐसा करने का कोई अच्छा तरीका है?एक्सएमएल-आरपीसी या एसओएपी

उत्तर

7

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

पुश मॉडल में, निर्माता उपभोक्ता पर एक आरपीसी का आह्वान करेगा, उपभोक्ता को सर्वर बना देगा। यह SOAP या XML-RPC के साथ बहुत अच्छी तरह से काम नहीं करता है, क्योंकि क्लाइंट आम तौर पर सर्वर की भूमिका निभाने के लिए तैयार नहीं होता है, और फ़ायरवॉल कॉलबैक को पार करने से रोक सकता है। तो आवधिक खींच सबसे यथार्थवादी दृष्टिकोण के बारे में है।

पीएस आपने देखा होगा कि मैंने आपकी शब्दावली का पालन नहीं किया है: आप ईवेंट को धक्का नहीं दे सकते। एक घटना ऐसा होता है जो होता है। आप केवल अधिसूचना को धक्का दे सकते हैं, जो एक ऐसी घटना है जो एक घटना होती है।

+0

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

0

आप इसे डब्ल्यूसीएफ के साथ कर सकते हैं। हालांकि, मुझे नहीं पता कि आप इसे एक अंतःक्रियात्मक तरीके से कर सकते हैं या नहीं। Duplex Services में देखें।

1

ठीक है, आखिरकार निर्णय लिया गया था कि कॉलबैक को एपीआई के रूप में निपटाना था जो तत्काल वापस नहीं आते थे।

मूल रूप से, एक आरपीसी-एक्सएमएल अनुरोध भेजा जाएगा, घटनाओं की दी गई सूची पर अधिसूचित होने के लिए कहा जाएगा। हमारा सर्वर तब तक इंतजार करेगा जब तक कि घटनाओं में से कोई एक घटना न हो और उसके बाद एक निश्चित समय के बाद प्रतिक्रिया या समय-समय पर रिपोर्ट करें, यह सूचित करते हुए कि कुछ भी नहीं हुआ। कॉलर प्रतीक्षा जारी रखने के लिए फिर से अनुरोध करने और अनुरोध करने में सक्षम हो जाएगा।

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