2010-11-12 10 views
6

मैं थोड़ी देर के लिए कॉच डीबी और कॉच ऐप के साथ खेल रहा हूं। मैं इसे एक नई वेब साइट परियोजना के लिए उपयोग करने की योजना बना रहा हूं जिस पर मैं काम कर रहा हूं।सर्वर पक्ष के बिना CouchApp या xdomain मुद्दों के साथ CouchDB बैकएंड?

  1. स्केलेबिलिटी व्यूपॉइंट से मुझे कॉच ऐप के विचार से प्यार है।

    नकारात्मकता यह है कि सर्वर के साइड कोड के साथ कुछ चीजें हैं (जैसे ओथ प्रमाणीकरण) जो क्लाइंट साइड पर करना मुश्किल है। कुछ बिंदु पर मुझे यकीन है कि मुझे कुछ विवरण के कुछ सर्वर साइड कोड की आवश्यकता होगी - मुझे लगता है कि आप Node.js को देख सकते हैं लेकिन इस बिंदु पर नहीं बल्कि इसके बजाय।

  2. पूरी तरह से बैकएंड समाधान के रूप में कॉच डीबी का उपयोग करते हुए, जबकि आपके पृष्ठों को किसी अन्य सर्वर से परोसा जाता है, यह भी एक अच्छा फिट है लेकिन यहां नकारात्मकता यह है कि क्रॉस डोमेन समस्याएं आपको अंतर्निहित कॉच डीबी एपीआई का उपयोग करने से रोकती हैं।

तो क्या किसी के पास इन दो डाउनसाइड्स में से किसी एक का समाधान है?

क्या आप किसी भी तरह से सर्वर साइड कोड (यहां तक ​​कि PHP एक जीत होगी) को CouchApp से सेवा दे सकते हैं या आप किसी भी तरह से अपने पृष्ठों की सेवा के लिए एक अलग साइट का उपयोग कर सकते हैं लेकिन क्रॉस डोमेन समस्या से उबर सकते हैं?

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

आपकी राय का स्वागत है।

उत्तर

14

क्योंकि कॉच डीबी एक HTTP- आधारित एपीआई का उपयोग करता है, तो आपके CouchApp के साथ सर्वर-साइड कोड (node.js, PHP, आदि) को "मिश्रण और मिलान" करने के कई तरीके हैं।

मैं तीन श्रेणियों में नीचे विकल्प को तोड़ने: ब्राउज़र + CouchApp CouchDB से कार्य किया:

  1. सबसे पहले, एक 2 टीयर वास्तुकला तुम अब क्या करना है। यह उन ऐप्स के लिए एक अच्छा समाधान है, जिन्हें केवल ब्राउज़र और कॉच डीबी की पेशकश की आवश्यकता होती है, लेकिन जैसे ही आप ई-मेल भेजने, छवियों का आकार बदलने, या किसी अन्य डेटाबेस से डेटा प्राप्त करने की आवश्यकता को हिट करते हैं, तो आपको एक और स्तर की आवश्यकता होगी एक HTTP एपीआई (MySQL, MongoDB, आदि) है।
  2. अगला, 3 टायर आर्किटेक्चर है: ब्राउज़र + अपाचे/PHP (या समान स्टैक) + कॉच डीबी। यह अधिक "पारंपरिक" विकल्प है (यानी, एलएएमपी)। धीरे-धीरे CouchDB में माइग्रेट करने के लिए यह ठीक है, लेकिन दीर्घकालिक, यह किसी दूसरे HTTP सर्वर (प्रॉक्सी, शायद) या सर्वर-साइड स्क्रिप्टिंग भाषा जैसे PHP के माध्यम से सब कुछ रूट करने के लिए बोझिल हो सकता है।
  3. अंतिम, और मेरा पसंदीदा 2.5 टियर आर्किटेक्चर है: ब्राउज़र + कॉच डीबी + बाहरी या _changes फ़ीड-आधारित "क्रियाएं।" इस मामले में, PHP (या समान) CouchDB को प्रकार के सेवा प्रदाता के रूप में कार्य करता है। किसी भी प्रकार के दस्तावेजों और उनके परिवर्तनों (यानी, छवि अपलोड, ईमेल संदेश दस्तावेज़) के लिए PHP को _changes फ़ीड देखने के लिए या तो दस्तावेज़ पर आगे प्रसंस्करण करने के लिए एक बाहरी हैंडलर को "पिंग" करने के लिए सेट किया जा सकता है या तो कार्रवाई को ट्रिगर किया जा सकता है। या उसके अनुलग्नक। यह अनिवार्य रूप से कैसे होता है कि कैसे couchdb-lucene अद्यतनों को देखकर और नियमित अंतराल पर उनके ऊपर कार्रवाई करने के द्वारा काम करता है।

आप बाहर _changes के बारे में अधिक फ़ीड खोजने के लिए और नीचे _external संचालकों कर सकते हैं:

क्या इसके लायक है, मैं 'के लिए बुधवार को PHP and CouchDB Webcast में इन तीन विकल्पों पर चर्चा करेंगे। वेबकास्ट के अंत में चर्चा के लिए आपके प्रश्न एक मूल्यवान जोड़ होंगे।

मुझे यह जानना अच्छा लगेगा कि आपका कॉच ऐप कैसे निकलता है, और आप ऊपर बताई गई समस्याओं को कैसे हल करते हैं।

+0

उत्कृष्ट मैं बुधवार को निश्चित रूप से ट्यून करूँगा ... मैं वर्तमान में बहुत ही शुरुआती चरण में हूं लेकिन सोच रहा हूं कि सर्वर साइड विकल्प के बिना सोशल ओथ कैसे हो रहा है ... मैं शायद इस समय विकल्प 2 की तरफ झुक रहा हूं हालांकि विकल्प 3 निश्चित रूप से लाभ है। – dworrad

1

BigBlueHat से बहुत बढ़िया जवाब है, लेकिन मैं एक और अधिक संभव जोड़ने का विकल्प है:

क्रॉस-डोमेन समस्या पर काबू पाने, जिससे आप वेब सर्वर के किसी भी प्रकार से पृष्ठों की सेवा करने की इजाजत दी, और भी करने के लिए ब्राउज़र की इजाजत दी सीधे CouchDB (जो किसी अन्य सर्वर पर हो सकता है) के साथ बातचीत करें।

ब्राउज़र द्वारा लागू क्रॉस-डोमेन प्रतिबंध, चारों ओर घूमना मुश्किल नहीं है। 2 मुख्य विधियों जिन्हें मैं जानता हूं वे हैं: JSONP और CORS।

JSONP प्रत्येक अनुरोध को "स्क्रिप्ट" अनुरोध के रूप में छिपाता है (क्योंकि स्क्रिप्ट अनुरोध क्रॉस-डोमेन नियम से मुक्त हैं)। यह केवल जीईटी, पोस्ट या पुट या कुछ और के लिए काम करता है। आप इसे jQuery के साथ कर सकते हैं।

सीओआरएस "क्रॉस ओरिजिनल रिसोर्स शेयरिंग" है, और यह केवल एक विशेष HTTP शीर्षलेख है जिसे सर्वर पर लागू किया जाना चाहिए (इस मामले में couchdb), जो ब्राउज़र को बताता है कि यह ठीक है - यह सेवा करने में कोई फर्क नहीं पड़ता अनुरोध जो किसी अन्य डोमेन से आते हैं। मैंने इसका परीक्षण किया है, और यह काम करता है, लेकिन सुरक्षा समस्याएं हो सकती हैं - मुझे यकीन नहीं है।

तो ... मुझे नहीं पता कि यह एक अच्छा विचार है, लेकिन यह तकनीकी रूप से संभव है (कम से कम आंशिक रूप से) कोचडीबी के साथ क्रॉस-डोमेन प्रतिबंध पर काबू पाने के लिए। क्या किसी ने कभी इस प्रकार के सेटअप का उपयोग कर सिस्टम बनाया है?

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