पूरी तरह से कदम पीछे के बिंदु से, Blankman, यहाँ वेब सेवाओं के प्रवेश द्वार इंटरफ़ेस के लिए मेरा "परिचय पृष्ठ" है:
भाग एक: वेब सर्वर
वेब सर्वर प्रतिक्रियाओं की सेवा करते हैं। वे चारों ओर बैठते हैं, धैर्यपूर्वक प्रतीक्षा कर रहे हैं, और फिर अचानक बिना किसी चेतावनी के:
- एक ग्राहक प्रक्रिया एक अनुरोध भेजता है। ग्राहक प्रक्रिया एक वेब सर्वर, एक बॉट, एक मोबाइल ऐप, जो कुछ भी हो सकती है। यह बस "ग्राहक" है
- वेब सर्वर यह अनुरोध प्राप्त करता है
- जानबूझकर की जाने वाली विभिन्न चीजें होती हैं (नीचे देखें)
- वेब सर्वर क्लाइंट को कुछ वापस भेजता है
- वेब सर्वर फिर से बैठता है
वेब सर्वर (कम से कम, बेहतर वाले) इस पर बहुत अच्छे हैं। वे मांग के आधार पर प्रसंस्करण को ऊपर और नीचे करते हैं, वे वास्तव में बहुत कठिन नेटवर्क पर ग्राहकों के साथ बातचीत करते हैं और हमें कभी भी इसके बारे में चिंता करने की ज़रूरत नहीं है। वे बस सेवा करते रहते हैं।
यह मेरा मुद्दा है: वेब सर्वर बस हैं: सर्वर। वे सामग्री के बारे में कुछ भी नहीं जानते हैं, उपयोगकर्ताओं के बारे में कुछ भी नहीं, वास्तव में कुछ भी नहीं है कि बहुत इंतजार कैसे करें और मज़बूती से जवाब दें।
वेब सर्वर की आपकी पसंद को आपकी डिलीवरी प्राथमिकता को प्रतिबिंबित करना चाहिए, न कि आपके सॉफ़्टवेयर को। आपका वेब सर्वर सेवा के प्रभारी होना चाहिए, प्रसंस्करण या तार्किक सामान नहीं।
भाग दो: (अजगर) सॉफ़्टवेयर
सॉफ्टवेयर आसपास नहीं बैठता है। सॉफ़्टवेयर केवल निष्पादन समय पर मौजूद है। सॉफ्टवेयर अपने वातावरण में अप्रत्याशित परिवर्तन (जब यह उम्मीद नहीं की जा रही है, तो मापदंडों का नाम बदला जा रहा है आदि) के लिए सॉफ्टवेयर बहुत अनुकूल नहीं है। हालाँकि ऑप्टिमाइज़ेशन आपके डिज़ाइन का केंद्रीय सिद्धांत होना चाहिए (बेशक), सॉफ़्टवेयर स्वयं को ऑप्टिमाइज़ नहीं करता है। डेवलपर्स अनुकूलन करते हैं। सॉफ्टवेयर निष्पादित करता है। सॉफ्टवेयर ऊपर दिए गए 'जानबूझकर गड़गड़ाहट' अनुभाग में सभी सामान करता है। कुछ भी हो सकता है।
आपकी पसंद या सॉफ़्टवेयर का डिज़ाइन आपके एप्लिकेशन, कार्यक्षमता की आपकी पसंद और वेब सर्वर की आपकी पसंद को नहीं दर्शाता है।
यह वह जगह है जहाँ वेब सर्वर के लिए भाषाओं में "संकलन" की पारंपरिक विधि दर्दनाक हो जाती है। आप अंत में भौतिक सर्वर वातावरण से निपटने के लिए अपने आवेदन में कोड डालते हैं या, कम से कम, वेब सर्वर पर एकरूपता का भ्रम देने के लिए, रनटाइम में शामिल करने के लिए एक उपयुक्त 'रैपर' लाइब्रेरी चुनने के लिए मजबूर किया जाता है।
WSGI क्या है?
तो, आखिरकार, WSGI क्या है? डब्ल्यूएसजीआई नियमों का एक समूह है , जिसे दो हिस्सों में लिखा गया है। उन्हें इस तरह से लिखा जाता है कि उन्हें एकीकरण का स्वागत करने वाले किसी भी वातावरण में एकीकृत किया जा सकता है।
वेब सर्वर साइड के लिए लिखा गया पहला भाग कहता है, "ठीक है, अगर आप एक WSGI एप्लिकेशन से निपटना चाहते हैं, तो यहां पर लोड होने पर सॉफ्टवेयर कैसे सोच रहा होगा। यहां वो चीजें बताई गई हैं जो आपको एप्लिकेशन को उपलब्ध करानी चाहिए, और यहां। वह इंटरफ़ेस (लेआउट) है जिसके बारे में आप हर एप्लिकेशन से अपेक्षा कर सकते हैं। इसके अलावा, अगर कुछ भी गलत होता है, तो यहां बताया गया है कि ऐप कैसे सोच रहा है और आप इसे कैसे व्यवहार कर सकते हैं। "
पायथन एप्लिकेशन सॉफ़्टवेयर के लिए लिखा गया दूसरा भाग कहता है, "ठीक है, अगर आप एक WSGI सर्वर से निपटना चाहते हैं, तो यहां सर्वर कैसे सोच रहा होगा जब यह आपसे संपर्क करता है। यहां वे चीजें हैं जो आपको सर्वर को उपलब्ध कराना चाहिए, और यहाँ इंटरफ़ेस (लेआउट) है जिसे आप हर सर्वर से होने की उम्मीद कर सकते हैं। इसके अलावा, अगर कुछ भी गलत होता है, तो यहां आपको कैसे व्यवहार करना चाहिए और यहां आपको सर्वर को बताना चाहिए। "
तो आपके पास यह है - सर्वर सर्वर होगा और सॉफ्टवेयर सॉफ्टवेयर होगा, और यहां एक तरीका है कि वे बिना किसी महान को प्राप्त कर सकते हैं बिना दूसरे की बारीकियों के लिए कोई भत्ता बनाने के लिए। यह डब्ल्यूएसजीआई है।
mod_wsgi, दूसरी ओर, Apache के लिए एक प्लगइन है जो इसे WSGI- अनुरूप सॉफ़्टवेयर से बात करने देता है, दूसरे शब्दों में, mod_wsgi एक कार्यान्वयन है - Apache में - ऊपर नियम पुस्तिका के एक भाग के नियमों का।
CGI के लिए .... किसी और से पूछें :-)