2011-06-01 20 views
7

के लिए एक्सएमपीपी और चैनल एपीआई के बीच मतभेद मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जो ऐपइंजिन पर नहीं रहता है और संचार वेब क्लाइंट (ब्राउज़र + जावास्क्रिप्ट) और मोबाइल क्लाइंट (एक्शनस्क्रिप्ट) में चैट की कार्यक्षमता रखने के लिए है। मैं AppEngine पर XMPP प्रोटोकॉल का उपयोग करने के बारे में सोच रहा हूं (फिर Google पर चैट सुविधा के लिए केवल सर्वर का उपयोग करें और बाकी को मेरे सर्वर पर छोड़ दें)। तुम मुझे बताओ अगर यह संभव है? चैनल एपीआई के साथ अंतर क्या हैं? धन्यवादGoogle App Engine

उत्तर

1

जहां तक ​​मैं समझता हूं कि चैनलएपीआई Google एक्सएमपीपी सेवा के पीछे एक रीढ़ की हड्डी है। यदि आप ग्राहक के जावास्क्रिप्ट और जीएई पर होस्ट किए गए आपके वेबएप के बीच असीमित रूप से भेज/प्राप्त (सर्वर पुश) पंक्ति JSON ऑब्जेक्ट्स चाहते हैं, तो चैनलएपीआई जाने का तरीका है।

0

एक्सएमपीपी एपीआई आपके ऐप और एक्सएमपीपी क्लाइंट, जैसे Google टॉक के बीच संचार की सुविधा प्रदान करता है।

चैनल एपीआई का उपयोग वेब ऐप का उपयोग करके अपने ऐप से डेटा को वेब ब्राउज़र पर धक्का देने के लिए किया जाता है।

या तो चैट ऐप के हिस्से के रूप में उपयोग किया जा सकता है; पसंद सिर्फ इस बात पर निर्भर करता है कि चैट क्लाइंट एक्सएमपीपी क्लाइंट या वेब ब्राउज़र का उपयोग करने जा रहे हैं या नहीं।

+0

ड्रू, चैनल एपीआई वेब सॉकेट (कम से कम अभी) का उपयोग नहीं करता है, यह Google की GTalk सेवा –

+0

के माध्यम से चैनलों का उपयोग करता है "चैनल एपीआई का उपयोग वेब ऐप का उपयोग करके आपके ऐप से डेटा को वेब ब्राउज़र पर धक्का देने के लिए किया जाता है।"मुझे लगता है कि वेब सॉकेट को अनुकरण कर रहा है, मेरा मानना ​​है कि वे रीयलटाइम संचार के लिए आईफ्रेम और कॉलबैक का उपयोग करते हैं, न कि वेब सॉकेट। –

1

चैनल एपीआई एक आईफ्रेम के माध्यम से Google के GTalk क्लाइंट से संवाद करने के लिए XPC नामक कुछ का उपयोग करता है। यह ग्राहक ब्राउज़र और आपकी ऐप के बीच द्वि-दिशात्मक संचार की सुविधा प्रदान करता है। आपके लिए प्रदान की गई जावास्क्रिप्ट लाइब्रेरी को वर्तमान WebSocket's API पर कम से कम मैप किया गया है और चैनल एपीआई से वेबसाकेट में संक्रमण को आसान बनाना चाहिए, एक बार/अगर यह AppEngine पर समर्थित है।

मेरा मानना ​​है कि एक्सएमपीपी चैनल एपीआई के लिए रीढ़ की हड्डी है और सुविधाओं का एक सुपरसेट है। उदाहरण के लिए, एक्सएमपीपी एपीआई के पास Invitations

के लिए समर्थन है, तो हाँ, आप चैट सुविधाओं को बनाने के लिए चैनल एपीआई (ब्राउज़र) और एक्सएमपीपी (हर जगह) का उपयोग कर सकते हैं।

10

एक्सएमपीपी और चैनल एपीआई स्टैक के दो अलग-अलग स्तरों पर समस्याएं हल करती है।

एक्सएमपीपी एक एंडपॉइंट से दूसरे में संदेश प्राप्त करने के लिए एक सामान्य तरीका का वर्णन करता है। विंडोज, लिनक्स, ओएसएक्स इत्यादि के लिए मौजूदा एक्सएमपीपी क्लाइंट हैं और मौजूदा एक्सएमपीपी क्लाइंट लाइब्रेरी C++, Python, javascript इत्यादि हैं। यदि आप केवल ऐसे उपयोगकर्ता को टेक्स्ट वितरित करना चाहते हैं, जिसे आप जानते हैं कि पहले से ही एक एक्सएमपीपी क्लाइंट है एक्सएमपीपी ऐप इंजन एपीआई स्पष्ट समाधान है; यदि आप क्लाइंट अनुभव पर बहुत अधिक नियंत्रण रखना चाहते हैं और उस पर खर्च करने का समय है, तो मौजूदा एक्सएमपीपी लाइब्रेरी का उपयोग करके और कस्टम क्लाइंट बनाना एक अच्छा विकल्प हो सकता है।

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

मौलिक सवाल यह है कि आपके कार्यान्वयन के लिए आपको कितना अमूर्तता चाहिए। चैनल एपीआई एक्सएमपीपी एपीआई से कहीं ज्यादा दूर है, और जावास्क्रिप्ट को आसान बनाने के लिए क्लाइंट लाइब्रेरी प्रदान करता है।