2012-01-19 12 views
7

प्रमुख वेब ढांचे (जैसे डीजेगो, पिरामिड, रेल, इत्यादि) लगातार सर्वर के रूप में चलते हैं, एक अलग वेब सर्वर जैसे nginx एक अग्रभाग के रूप में सेवा करते हैं। वेब सर्वर फास्टसीजीआई या एससीजीआई जैसे प्रोटोकॉल के माध्यम से जुड़ता है:वेब फ्रेमवर्क HTTP की बजाय फास्टसीजीआई/एससीजीआई के माध्यम से क्यों काम करते हैं?

browser --[http]--> nginx --[fastcgi]--> flup -> django 

यह मुझे समझा जाता है; अनुरोध पूरी तरह से अलग प्रोटोकॉल में क्यों परिवर्तित हो गया है, जब बैकएंड सिर्फ अपना HTTP सर्वर चला सकता है?

browser --[http]--> nginx --[http]--> wsgiref -> django 

यह दृष्टिकोण केवल एक परिवहन प्रोटोकॉल नहीं है और यह एक RFC है के बाद से, दोनों सरल और अधिक लचीला हो गया लगता है।

हालांकि, मुझे नहीं लगता कि मेरे पास है एक वेब ढांचा http-only डिज़ाइन को प्रोत्साहित करता है, इसलिए मुझे लगता है कि इसके लिए एक कारण होना चाहिए।

फास्टसीजीआई/एससीजीआई जैसे प्रोटोकॉल का उपयोग करने के क्या फायदे हैं?

+2

सी ++/सी शायद किसी भी दिन उन डीबगिंग सर्वर से बेहतर प्रदर्शन करता है। उन वेब ढांचे के अधिकांश (सभी?) को पायथन या रूबी में कोडित किया जाता है, जिन्हें भाषाएं दी जाती हैं। – Blender

+0

@ ब्लेंडर: जबकि सच है, यह शायद प्रासंगिक नहीं है। मैं डीजेगो को फास्टसीजीआई के माध्यम से सेवा करने की अपेक्षा नहीं करता हूं ताकि डीजेगो HTTP के माध्यम से सेवा कर सके। इसके अलावा, न तो पायथन और न ही रूबी का अर्थ है। वे जावा के समान तरीके से बाइटकोड वीएम का उपयोग करते हैं। –

+1

अच्छा बिंदु। मैं लाइट के साथ काम करने के लिए फ्लास्क प्राप्त करने वाली दीवार के खिलाफ अपना सिर मार रहा हूं ... इसके अलावा, नाइटपिकिंग, लेकिन पायथन होमपेज पर यह '... एक व्याख्या, इंटरैक्टिव, ऑब्जेक्ट उन्मुख ...' – Blender

उत्तर

7

HTTP large, complex protocol है। इंटरफ़ेस को फास्टसीजीआई या डब्लूएसजीआई द्वारा प्रदान की गई क्षमताओं पर निर्भर करते हुए फ्रेमवर्क को मूल से निपटने के लिए अनुरोधों को तेज़ी से संभालने की अनुमति मिलती है।