स्टेटलेस इंटरनेट को समझना [बंद]


15

मैं एक डेस्कटॉप डेवलपर होने से एक वेब डेवलपर के रूप में परिवर्तित हो रहा हूं, और मुझे यह समझने में परेशानी हो रही है कि HTTP स्टेटलेस क्यों है। इसके क्या कारण हैं? एक डेस्कटॉप डेवलपर अपने आप में कुछ तरीके क्या कर सकता है जो एक सांविधिक विकास वातावरण में परिवर्तन कर सकते हैं?


3
हाय ब्रायन, प्रोग्रामर्स । एस एक चर्चा बोर्ड नहीं है । क्या कोई विशिष्ट समस्या है जिसका आपको सामना करना पड़ रहा है? यदि हां, तो क्या आप अपने प्रश्न को फिर से बता सकते हैं?

आमतौर पर आप सर्वर को सत्र कुकीज़ सामग्री के विवरण को संभालने देते हैं।
FrustratedWithFormsDesigner

मुझे लगता है कि इसे फिर से खोल दिया जाना चाहिए, अब इसके पास एक दर्जन "पर्याप्त उत्तर" हैं। विशेष रूप से क्योंकि यह एक और हालिया प्रश्न द्वारा इंगित किया गया था जिसे इस एक को नकल करने के लिए कहा जाता है। यह किसी भी दिशा में एक डुप्लिकेट नहीं हो सकता है अगर यह पहली जगह में यहां नहीं होना चाहिए। चलो यहाँ कुछ पवित्रता है।

जवाबों:


18

यह मेरे द्वारा देखे गए स्टेटलेस इंटरनेट का सबसे अच्छा विवरण है:

मैं  अपनी पत्नी को कैसे समझाऊं
http://www.looah.com/source/view/2284

पत्नी: रॉय फील्डिंग कौन है?

रयान: कोई लड़का। वह होशियार है।

पत्नी: ओह? उसने क्या किया?

रयान: उन्होंने पहले वेब सर्वर लिखने में मदद की और फिर एक टन शोध करके बताया कि वेब किस तरह से काम करता है। उनका नाम उस प्रोटोकॉल के विनिर्देशन पर है जिसका उपयोग सर्वर से आपके ब्राउज़र में पृष्ठों को प्राप्त करने के लिए किया जाता है।

पत्नी: यह कैसे काम करता है?

रयान: वेब?

पत्नी: हाँ।

रयान: हम्म। खैर, यह सब वास्तव में बहुत अद्भुत है। और मजेदार बात यह है कि यह सब बहुत ही कमज़ोर है। मैं जिस प्रोटोकॉल के बारे में बात कर रहा था, वह HTTP का है, यह सभी प्रकार के साफ-सुथरे सामानों में सक्षम है, जिन्हें लोग किसी कारण से नजरअंदाज कर देते हैं।

पत्नी: आपका मतलब है कि ब्राउज़र में आई टाइप की शुरुआत की तरह http?

रयान: हाँ। वह पहला भाग ब्राउज़र को बताता है कि किस प्रोटोकॉल का उपयोग करना है। आपके द्वारा टाइप किया गया सामान कंप्यूटिंग के इतिहास की सबसे महत्वपूर्ण सफलताओं में से एक है।

पत्नी: क्यों?

रयान: क्योंकि यह दुनिया में कहीं से भी दुनिया में कहीं भी किसी चीज के स्थान का वर्णन करने में सक्षम है। यह वेब की नींव है। आप इसके बारे में सोच सकते हैं जैसे जीपीएस ज्ञान और सूचना के लिए समन्वय करता है।

पत्नी: वेब पेजों के लिए?

रयान: वास्तव में कुछ के लिए। वह आदमी, रॉय फील्डिंग, वह उन बातों के बारे में बहुत बात करता है जो उस शोध में इंगित करते हैं जिसके बारे में मैं बात कर रहा था। वेब एक वास्तु शैली पर बनाया गया है जिसे REST कहा जाता है। REST एक संसाधन की परिभाषा प्रदान करता है, जो कि उन बातों को इंगित करता है।

पत्नी: एक वेब पेज एक संसाधन है?

रयान: की तरह। एक वेब पेज एक संसाधन का एक प्रतिनिधित्व है। संसाधन सिर्फ अवधारणाएं हैं। URL - वे चीजें जो आप ब्राउज़र में टाइप करते हैं ...

पत्नी: मुझे पता है कि URL क्या होता है ..

रयान: ओह, ठीक है। वे ब्राउज़र को बताते हैं कि कहीं एक अवधारणा है। एक ब्राउज़र तब अवधारणा के एक विशिष्ट प्रतिनिधित्व के लिए जा सकता है। विशेष रूप से, ब्राउज़र अवधारणा के वेब पेज प्रतिनिधित्व के लिए पूछता है।

पत्नी: और किस तरह के नुमाइंदे हैं?

रयान: वास्तव में, प्रतिनिधित्व इन चीजों में से एक है जो बहुत अधिक उपयोग नहीं करता है। ज्यादातर मामलों में, एक संसाधन में केवल एक ही प्रतिनिधित्व होता है। लेकिन हम उम्मीद कर रहे हैं कि भविष्य में अभ्यावेदन का उपयोग अधिक किया जाएगा क्योंकि सभी स्थानों पर पॉपिंग के नए स्वरूपों का एक समूह है।

पत्नी: जैसे क्या?

रयान: हम्म। खैर, यह अवधारणा है कि लोग वेब सेवाओं को कॉल कर रहे हैं। यह बहुत सारे अलग-अलग लोगों के लिए बहुत सी अलग-अलग चीजों का मतलब है लेकिन मूल अवधारणा यह है कि मशीनें वेब का उपयोग कर सकती हैं जैसे लोग करते हैं।

पत्नी: क्या यह दूसरी रोबोट चीज है?

रयान: नहीं, वास्तव में नहीं। मेरा मतलब यह नहीं है कि मशीनें डेस्क पर बैठकर वेब ब्राउजिंग करेंगी। लेकिन कंप्यूटर एक ही प्रोटोकॉल का उपयोग करके एक-दूसरे को संदेश भेज सकते हैं। हम लंबे समय से ऐसा कर रहे हैं लेकिन आज हम जिन तकनीकों का उपयोग करते हैं उनमें से कोई भी अच्छी तरह से काम नहीं करता है जब आपको पूरी दुनिया में सभी मशीनों से बात करने में सक्षम होना चाहिए।

पत्नी: क्यों नहीं?

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

पत्नी: और अब आपको सभी मशीनों से बात करने की जरूरत है?

रयान: हाँ - और अधिक। हमें उन सभी मशीनों के बारे में बात करने में सक्षम होना चाहिए जो अन्य सभी मशीनों पर हैं। इसलिए हमें किसी एक मशीन के संसाधन के बारे में किसी अन्य मशीन को बताने की आवश्यकता है जो अभी तक किसी अन्य मशीन पर हो सकती है।

पत्नी: क्या?

रयान: मान लीजिए कि आप अपनी बहन से बात कर रहे हैं और वह स्वीपर या कुछ उधार लेना चाहता है। लेकिन आपके पास यह नहीं है - आपकी माँ के पास है। इसलिए आप अपनी बहन से कहें कि वह इसे आपकी माँ से प्राप्त करें। यह वास्तविक जीवन में हर समय होता है और यह हर समय होता है जब मशीनें भी बात करना शुरू कर देती हैं।

पत्नी: तो मशीनें एक-दूसरे को कैसे बताती हैं कि चीजें कहाँ हैं?

रयान: यूआरएल, बिल्कुल। यदि उन सभी चीजों के बारे में जिनके बारे में मशीन को बात करनी है, तो उनके पास एक URL है, आपने मशीन को संज्ञा के बराबर बनाया है। आप और मैं और दुनिया के बाकी लोग एक निश्चित तरीके से संज्ञा के बारे में बात करने पर सहमत हुए हैं, यह बहुत महत्वपूर्ण है, एह?

पत्नी: हाँ।

रयान: मशीनों में एक सार्वभौमिक संज्ञा नहीं है - यही कारण है कि वे चूसते हैं। हर प्रोग्रामिंग लैंग्वेज, डेटाबेस या अन्य तरह के सिस्टम में संज्ञाओं के बारे में बात करने का एक अलग तरीका होता है। इसलिए URL इतना महत्वपूर्ण है। आइए हम इन सभी प्रणालियों को एक-दूसरे की संज्ञाओं के बारे में बताते हैं।

पत्नी: लेकिन जब मैं किसी वेब पेज को देख रही होती हूं, तो मुझे ऐसा नहीं लगता।

रयान: कोई नहीं करता है। फील्डिंग और मुट्ठी भर अन्य लोगों को छोड़कर। इसलिए मशीनें अभी भी चूसती हैं।

पत्नी: क्रिया और सर्वनाम और विशेषण के बारे में क्या?

रयान: मजेदार तुमने पूछा क्योंकि यह REST का एक और बड़ा पहलू है। वैसे, क्रियाएं वैसे भी होती हैं।

पत्नी: मैं तो मजाक कर रही थी।

रयान: यह एक अजीब मजाक था लेकिन यह वास्तव में मजाक नहीं है। क्रिया महत्वपूर्ण हैं। प्रोग्रामिंग और सीएस सिद्धांत में एक शक्तिशाली अवधारणा है जिसे बहुरूपता कहा जाता है। यह कहने का एक अजीब तरीका है कि विभिन्न संज्ञाएं उन पर लागू होने वाली एक ही क्रिया हो सकती हैं।

पत्नी: मुझे नहीं मिला।

रयान: अच्छा .. कॉफी टेबल पर देखो। संज्ञा क्या हैं? कप, ट्रे, अखबार, रिमोट। अब, आप इन सभी चीजों में से क्या कर सकते हैं?

पत्नी: मुझे नहीं मिलता ...

रयान: आप उन्हें प्राप्त कर सकते हैं, है ना? आप उन्हें उठा सकते हैं। आप उन्हें खटखटा सकते हैं। आप उन्हें जला सकते हैं। आप उन्हीं सटीक क्रियाओं को वहां बैठे किसी भी वस्तु पर लागू कर सकते हैं।

पत्नी: ठीक है ... तो?

रयान: ठीक है, यह महत्वपूर्ण है। क्या होगा अगर मेरे बजाय आपको यह कहने में सक्षम होने के लिए, "कप प्राप्त करें," और "अखबार प्राप्त करें," और "रिमोट प्राप्त करें"; क्या होगा अगर इसके बजाय हमें संज्ञा में से प्रत्येक के लिए विभिन्न क्रियाओं के साथ आने की आवश्यकता है? मैं सार्वभौमिक रूप से "प्राप्त" शब्द का उपयोग नहीं कर सका, लेकिन इसके बजाय प्रत्येक क्रिया / संज्ञा संयोजन के लिए एक नया शब्द सोचना पड़ा।

पत्नी: वाह! वह अजीब है।

रयान: हाँ, यह है। हमारे दिमाग किसी तरह से यह जानने के लिए पर्याप्त स्मार्ट हैं कि एक ही क्रिया को कई अलग-अलग संज्ञाओं पर लागू किया जा सकता है। कुछ क्रियाएं दूसरों की तुलना में अधिक विशिष्ट हैं और केवल संज्ञा के एक छोटे समूह पर लागू होती हैं। उदाहरण के लिए, मैं एक कप नहीं चला सकता और मैं एक कार नहीं पी सकता। लेकिन कुछ क्रियाएं GET, PUT और DELETE जैसी लगभग सार्वभौमिक हैं।

पत्नी: आप एक कप नहीं खरीद सकते।

रयान: ठीक है, ठीक है, लेकिन आप इसे फेंक सकते हैं। यह एक और मजाक था, है ना?

पत्नी: हाँ।

रयान: तो वैसे भी, HTTP - इस प्रोटोकॉल क्षेत्ररक्षण और उसके दोस्तों बनाया - संज्ञाओं के लिए क्रियाओं को लागू करने के बारे में है। उदाहरण के लिए, जब आप किसी वेब पेज पर जाते हैं, तो ब्राउज़र आपके द्वारा टाइप किए गए URL पर HTTP GET करता है और एक वेब पेज आता है।

वेब पृष्ठों में आमतौर पर छवियां होती हैं, है ना? वे अलग संसाधन हैं। वेब पेज केवल छवियों और ब्राउज़र में URL को निर्दिष्ट करता है और जब तक सभी संसाधन प्राप्त नहीं हो जाते हैं और उन पर अधिक HTTP GETs करता है और वेब पेज प्रदर्शित होता है। लेकिन यहाँ महत्वपूर्ण बात यह है कि विभिन्न प्रकार की संज्ञाओं को एक ही माना जा सकता है। चाहे संज्ञा एक छवि, पाठ, वीडियो, एक एमपी 3, एक स्लाइड शो, जो भी हो। मैं उन सभी चीजों को प्राप्त कर सकता हूं, जिस तरह से एक यूआरएल दिया गया है।

पत्नी: लगता है GET एक बहुत महत्वपूर्ण क्रिया है।

रयान: यह है। खासकर जब आप वेब ब्राउज़र का उपयोग कर रहे हों क्योंकि ब्राउज़र बहुत अधिक सामान रखते हैं। वे संसाधनों के साथ कई अन्य प्रकार की बातचीत नहीं करते हैं। यह एक समस्या है क्योंकि इसने कई लोगों को यह मान लिया है कि HTTP सिर्फ GETing के लिए है। लेकिन HTTP वास्तव में संज्ञाओं के लिए क्रियाओं को लागू करने के लिए अग्निमय उद्देश्य प्रोटोकॉल है।

पत्नी: मस्त। लेकिन मैं अभी भी नहीं देखता कि यह कैसे बदलता है। आप किस प्रकार की संज्ञा और क्रिया चाहते हैं?

रयान: वैसे संज्ञाएं हैं लेकिन सही प्रारूप में नहीं।

जब आप क्रिसमस के लिए मुझे खरीदने के लिए चीजों की तलाश में amazon.com के आसपास ब्राउज़ कर रहे हों, तो सोचें। संज्ञाओं के रूप में प्रत्येक उत्पाद की कल्पना करें। अब, यदि वे एक प्रतिनिधित्व में उपलब्ध थे जिसे एक मशीन समझ सकती थी, तो आप बहुत सी साफ-सुथरी चीजें कर सकते थे।

पत्नी: कोई मशीन एक सामान्य वेब पेज को क्यों नहीं समझ सकती?

रयान: क्योंकि वेब पेज लोगों द्वारा समझे जाने के लिए डिज़ाइन किए गए हैं। एक मशीन लेआउट और स्टाइल के बारे में परवाह नहीं करती है। मशीनों को मूल रूप से सिर्फ डेटा की जरूरत होती है। आदर्श रूप से, प्रत्येक URL में एक मानव पठनीय और एक मशीन पठनीय प्रतिनिधित्व होगा। जब एक मशीन संसाधन प्राप्त करती है, तो वह मशीन को पठनीय के लिए कहेगी। जब एक ब्राउज़र एक मानव के लिए एक संसाधन प्राप्त करता है, तो यह मानव के लिए पठनीय एक के लिए पूछेगा।

पत्नी: तो क्या लोगों को अपने सभी पृष्ठों के लिए मशीन के प्रारूप बनाने होंगे?

रयान: यदि यह मूल्यवान थे।

देखिए, हम इस बारे में बहुत सारे अमूर्त तरीके से बात कर रहे हैं। कैसे के बारे में हम एक वास्तविक उदाहरण लेते हैं। आप एक शिक्षक हैं - स्कूल में मैं शर्त लगाता हूं कि आपके पास एक बड़ी कंप्यूटर प्रणाली है, या तीन या चार कंप्यूटर सिस्टम अधिक संभावना है, जो आपको छात्रों का प्रबंधन करने देते हैं: वे किस कक्षा में हैं, उन्हें कौन से ग्रेड मिल रहे हैं, आपातकालीन संपर्क, जानकारी उन किताबों के बारे में, जिन्हें आप पढ़ाते हैं, आदि। यदि सिस्टम वेब-आधारित हैं, तो संभवतः यहाँ शामिल प्रत्येक संज्ञा के लिए एक URL है: छात्र, शिक्षक, कक्षा, पुस्तक, कमरा, आदि। अभी, के माध्यम से URL प्राप्त करना ब्राउज़र आपको एक वेब पेज देता है। यदि प्रत्येक URL के लिए एक मशीन पठनीय प्रतिनिधित्व था, तो यह सिस्टम पर नए टूल को लागू करने के लिए तुच्छ होगा क्योंकि यह सभी जानकारी एक मानक तरीके से उपभोग्य होगी। प्रत्येक सिस्टम के लिए एक दूसरे से बात करना भी काफी आसान होगा। या, आप एक राज्य या देशव्यापी प्रणाली का निर्माण कर सकते हैं जो परीक्षण स्कोर एकत्र करने के लिए प्रत्येक व्यक्तिगत स्कूल प्रणाली से बात करने में सक्षम था। संभावनाएं अनंत हैं।

प्रत्येक सिस्टम एक सरल HTTP GET का उपयोग करके एक दूसरे से जानकारी प्राप्त करेगा। यदि एक सिस्टम को दूसरे सिस्टम में कुछ जोड़ने की जरूरत है, तो वह HTTP POST का उपयोग करेगा। यदि कोई सिस्टम किसी अन्य सिस्टम में कुछ अपडेट करना चाहता है, तो वह HTTP PUT का उपयोग करता है। केवल यह जानने के लिए कि डेटा कैसा दिखना चाहिए।

पत्नी: तो यह क्या आप और सभी कंप्यूटर के लोग अभी काम कर रहे हैं? यह तय करना कि डेटा कैसा दिखना चाहिए?

रयान: अफसोस की बात है, नहीं। इसके बजाय, अधिकांश लोग इस सामान को एक अलग तरीके से करने के लिए जटिल विनिर्देशों की परतों को लिखने में व्यस्त हैं जो लगभग उपयोगी या स्पष्ट नहीं है। संज्ञाएं सार्वभौमिक नहीं हैं और क्रियाएं पॉलीमॉर्फिक नहीं हैं। हम वास्तविक क्षेत्र उपयोग और सिद्ध तकनीक के दशकों से बाहर फेंक रहे हैं और कुछ के साथ शुरू कर रहे हैं जो अन्य प्रणालियों की तरह दिखता है जो अतीत में विफल रहे हैं। हम HTTP का उपयोग कर रहे हैं, लेकिन केवल इसलिए कि यह हमारे नेटवर्क और सुरक्षा लोगों से कम बात करने में हमारी मदद करता है। हम आकर्षक उपकरण और जादूगरों के लिए सादगी का व्यापार कर रहे हैं।

पत्नी: क्यों?

रयान: मुझे कोई पता नहीं है।

पत्नी: आप कुछ क्यों नहीं कहते?

रयान: शायद मैं करूँगा।


1
यह एक महान पढ़ा है। इसलिए, http का उपयोग सम्मेलन के कारण किया जा रहा है यह आसान है। केवल एक चीज जो मैं जोड़ूंगा, वह है मेमोरी की कमी के बारे में, जैसा कि स्लावेक ने बताया है, हम बड़ी वेबसाइटों के लिए संसाधनों से तेजी से बाहर निकलेंगे। हो सकता है कि एक दिन जब किसी मशीन के संसाधन हमारे उपयोगकर्ताओं की जरूरतों की तुलना में बड़े हों तो हमारे पास स्टेटफुल इंटरनेट हो सकता है।
पी। ब्रायन। मैके

5
मैं स्टेटलेस होने से भी नहीं डरता; यह चीजों को देखने का एक अलग तरीका है। समय के साथ, आप पा सकते हैं कि यह वास्तव में अधिक समझदार तरीका है, विशेष रूप से बड़े, स्केलेबल अनुप्रयोगों के लिए। वैसे भी, आप हमेशा अपने डेटाबेस में राज्य को स्टोर कर सकते हैं, और बाद के पेज अनुरोधों पर उस स्थिति को पुनः प्राप्त कर सकते हैं। स्टेटलेस बिट्स स्टेट्स के छोटे-छोटे अपडेट के बजाय आपको लेन-देन के संदर्भ में अधिक सोचने देता है।
रॉबर्ट हार्वे

2
मैं प्रोग्रामिंग के लिए अपने राज्य के दृष्टिकोण से इतना अंधा हो गया था कि मैंने लेख में एक अंतर्निहित बिंदु को याद किया। मुझे कुछ सौ बार मेरे आदर्श वाक्य "स्टेटलेस नॉट्स ए डिफेक्ट" को मेरे दिमाग में डालने की ज़रूरत है ... महान टिप्पणी और उत्तर के लिए धन्यवाद।
पी। ब्रायन। मैके

अंतिम पैराग्राफ (अंत से 5 लाइनें) का संदर्भ क्या है? मेरे पास एक विचार था, लेकिन मैं किसी भी अनुमान लगाने वाले मूर्ख की तरह महसूस नहीं करना चाहता था।
स्टीवन

1
@ उत्तर: मेरा मानना ​​है कि अनुच्छेद SOAP , या संभवतः CORBA (कंपकंपी) जैसी चीजों का जिक्र है ।
रॉबर्ट हार्वे

6

आपको क्या लगता है कि अरबों-अरबों के अरबों के कनेक्शनों की स्थिति को स्टोर करना कैसे संभव होगा? :) तो आप केवल उस राज्य को स्टोर करें जहां सत्रों में जरूरत हो।

BTW: HTTP कनेक्शन रहित नहीं है।


1
@P। जब आपके द्वारा उद्धृत संदर्भ खुल जाता है तो यह शायद ही आश्वस्त होता है: इस लेख में वेसल शब्द, अस्पष्ट वाक्यांश शामिल हैं जो अक्सर पक्षपाती या असत्य जानकारी के साथ होते हैं।

3
HTTP कनेक्शन रहित है। आप एक HTTP अनुरोध भेजते हैं, कुछ वापस प्राप्त करते हैं, जहां तक ​​HTTP का संबंध है कनेक्शन खत्म हो गया है। सर्वर के लिए सत्र बनाने के लिए विभिन्न अनुरोधों को जोड़ना संभव है, लेकिन यह HTTP की एक अंतर्निहित संपत्ति नहीं है।
डेविड थॉर्नले

2
HTTP टीसीपी / आईपी को परिवहन (यूडीपी नहीं) के रूप में उपयोग कर रहा है, लेकिन यह एक और आईएसओ ओएसआई परत है, और आपके पास persistent connectionsरख सकते हैं , जिसे कीप-ज़िंदा कहा जाता है। मैं एक नेटवर्क विशेषज्ञ नहीं हूँ, लेकिन आपके पास HTTP में ज्यादातर समय एक वास्तविक संबंध है :)
Slawek

2
ठीक है, इसलिए मुझे जो मिल रहा है, वह यह है कि आम धारणा है कि कनेक्शनहीन को स्टेटलेस के साथ समानता दी जा सकती है। मुझे लगता है कि हम सहमत हो सकते हैं कि http स्टेटलेस है, या अपने आप को देखने के लिए स्पेसिफिकेशन को w3.org/TR/html401/interact/forms.html (सर्च स्टेटलेस) देखें। Http ietf.org/rfc/rfc2616.txt के स्टेटलेसनेस के लिए RFC2616 भी देखें । कनेक्शन हैं, लेकिन कनेक्शन "अंधा रिले" हैं।
पी। ब्रायन। मैके

2
कनेक्शन वेब पर आभासी हैं। तकनीकी रूप से बोलते हुए, एक सच्चे कनेक्शन के लिए, आपको एक समर्पित तार होना चाहिए जो आपको दूसरी तरफ से जोड़ता है, जैसे टेलीफोन तार (कम से कम <90 के दशक में)। यदि एक पक्ष 'डिस्कनेक्ट' करता है, तो दूसरे को तब तक पता नहीं चलेगा जब तक उसे यह कहते हुए पैकेट प्राप्त नहीं हो जाता कि दूसरा पक्ष अब नहीं सुन रहा है। सिद्धांत रूप में, वह पैकेट कभी नहीं आ सकता है। समय समाप्त होने के बाद, सर्वर भी 'डिस्कनेक्ट' हो जाता है। हालाँकि इस कारण से कनेक्शन हमेशा आभासी होते हैं।
नील १

4

एक डेस्कटॉप डेवलपर के रूप में आप समृद्ध यूआई अनुभवों के साथ अधिक सहज हो सकते हैं। वेब पर जाना एक कदम पीछे लेने जैसा महसूस कर सकता है। वेब दुनिया में, रचनात्मकता की कम स्वतंत्रता है और यह आपको बाधा की भावना दे सकती है। ऐसा मत करो कि तुम नीचे जाओ! वहाँ कई चीजें हैं जो आपको संक्रमण बनाने में मदद कर सकती हैं और यहाँ उनकी एक छोटी सूची है:

  1. राज्य साझा किया जा सकता है लेकिन अक्सर सर्वर पर रखा जाता है और सत्र आईडी, URL पैरामीटर, छिपे हुए फ़ील्ड या कुकिंग मान जैसे टोकन का उपयोग करके संदर्भित किया जाता है।
  2. स्टेटलेस मॉडल लेनदेन प्रसंस्करण के लिए अच्छी तरह से अनुकूल हैं। अपने मॉडल को इस तरह से बनाने की कोशिश करें जिससे आवश्यक राज्य की मात्रा कम हो सके। एसिड लेनदेन प्रसंस्करण के सिद्धांतों आप इस लक्ष्य को हासिल कर सकते हैं।
  3. एमवीसी पैटर्न से परिचित हों (यदि आप पहले से नहीं हैं)। यह चिंताओं को अलग करने के लिए आपके डिजाइन को बेहतर बनाने में मदद करेगा। कुछ लोकप्रिय फ्रेमवर्क जैसे स्ट्रट्स (जावा) और एमवीसी (.NET) इस अवधारणा के आसपास बनाए गए हैं।
  4. सुपर-रिच यूआई अनुभवों के लिए जावा , फ्लैश या सिल्वरलाइट जैसे प्लगइन का उपयोग करने पर विचार करें । अर्ध-समृद्ध अनुभवों के लिए, लोकप्रिय जावा-स्क्रिप्ट आधारित पुस्तकालयों जैसे कि JQuery या AJAX का उपयोग करने पर विचार करें ।

हैप्पी प्रोग्रामिंग!


1
बस एक साइड नोट: MVC के संक्षिप्त विवरण के साथ सावधान रहें; इसे मूल रूप से GUI ऐप्स के लिए OO डिज़ाइन के रूप में परिभाषित किया गया था, बाद में इसे वेब ऐप्स के लिए एक लेयर आर्किटेक्चर में शामिल किया गया। ये दो बहुत अलग चीजें हैं।
जेवियर

आप ओपी को उन तकनीकों में सीधे गोता लगाने का सुझाव दे रहे हैं जो पहले मूल बातें सीखने के बजाय स्टेटलेस मधुमक्खी के वेब पर कुछ समाधान प्रदान करते हैं?
ट्यूलेंस कोरडोवा

3

क्योंकि एक समय ऐसा था जहाँ लाखों वेबपेज पर लाखों नहीं थे। क्योंकि एक समय था जब केवल विश्वविद्यालयों और शोध सुविधाओं में एक दो पृष्ठ होते थे। एक समय था जब ब्रॉडबैंड नहीं था, और डेस्क टेलीफोन के शीर्ष पर 1200 बॉड मॉडेम के साथ http का संचार किया गया था। एक समय था जब "समृद्ध वेब ऐप्स" को उनके विचार में बैंडविड्थ की एक हास्यास्पद राशि की आवश्यकता होती थी। और याद रखें, टीसीपी / आईपी बनाया गया था क्योंकि शुरुआती इंटरनेट बहुत अविश्वसनीय था।

HTTP 1.0 1990 के दशक की शुरुआत में था। इस बारे में सोचें कि तब का इंटरनेट कैसा था, और उन्होंने इसे जिस तरह से डिजाइन किया था।


"लेट" इंटरनेट अभी भी अविश्वसनीय है।
पेमदास

@ पेमदास - आप "लेट" इंटरनेट का क्या मतलब है?
पी। ब्रायन। मैके

सिर्फ नाइट पिकिंग। टीसीपी जैसे प्रोटोकॉल के बिना डेटा ट्रांसमिशन अभी भी अविश्वसनीय है और यहां तक ​​कि टीसीपी कनेक्शन उपलब्ध नहीं होने के लिए भी जिम्मेदार नहीं हो सकता है।
पेमदास

3

यह सभी तरह से विकसित हुआ। वेब ब्राउज़र और वेब से पहले इंटरनेट मौजूद था। यह एफ़टीपी, टेलनेट, गोफर, पिंग, उंगली और कुछ अन्य बिट्स और बोब्स का बुदबुदाती बर्तन था। पहला वेब ब्राउज़र, मोज़ेक (मुझे लगता है कि, एक लंबे समय से पहले था, 1991 मुझे लगता है, मैं कॉलेज में था) एफ़टीपी और एक दस्तावेज़ दर्शक के बीच एक प्रकार का मिषम के रूप में काम किया। जादू हुआ कि आप दस्तावेज़ में लिंक दे सकते हैं जो एक नया दस्तावेज़ तैयार करेगा।

सभी अन्तरक्रियाशीलता अब हम निम्नलिखित 20 वर्षों के दौरान विकसित हुए हैं। यह या तो एक खुश विकास नहीं था। हमारे पास ब्राउज़र युद्ध थे, IE और नेटस्केप ने इसे मानकों के नियंत्रण के लिए बाहर निकाल दिया (बिट का एक सरलीकरण;)), और विभिन्न अन्य 3 पार्टियों ने रिच सामग्री की अनुमति देने के लिए प्लग इन की शुरुआत की। जावा मैजिक बुलेट और निश्चित रूप से फ्लैश होने जा रहा था। क्या किसी को वीआरएमएल प्लग इन याद है जिसने 3 डी दुनिया का वादा किया था और स्टार वार्स मॉडल के ठीक आधा दर्जन 3 डी मॉडल दिए थे?

मैं अंत की ओर थोड़ा सा दूर हो गया, लेकिन आपको यह विचार मिल गया :)


यह ठीक है, बहुत से अन्य लोग भी दूर हो गए, मुख्य रूप से विपणन लोग। कच्चे लाभ के उद्देश्य को छोड़कर अब हम कहां होंगे? अभी भी कुछ geeks "कुछ कंप्यूटरों को जोड़ने" मुझे लगता है।

3

प्राथमिक कारणों का एक संयोजन के साथ क्या करना है एकेडेमिया का मानना ​​था कि HTTP का उद्देश्य और स्केलेबिलिटी के कारणों के लिए था। HTML मूल रूप से शैक्षणिक सीमाओं के बारे में जानकारी या शोध को साझा करने के लिए डिज़ाइन किया गया था। यह विशुद्ध रूप से शैलीबद्ध पाठ था। यह तब तक नहीं था जब तक कि पहले ब्राउज़र ने आपको उन चित्रों की सेवा करने की अनुमति नहीं दी थी जो लोग उस मॉडल से परे सोचने लगे थे।

निम्नांकित विचारणों ने सांविधिक निर्णय को ठोस बनाया:

  • ठेठ इंटरैक्शन एक त्वरित डाउनलोड और पढ़ने वाला होने जा रहा था। अगले अनुरोध तक देरी के दौरान, सॉकेट बेकार बैठा होगा।
  • सॉकेट्स कीमती सिस्टम संसाधनों को लेते हैं। अगर हमें SMTP के साथ बातचीत करने की आवश्यकता नहीं है, तो आप हजारों ग्राहकों को एक मशीन को संभालने के लिए बहुत कुछ कर सकते हैं।
  • उन्होंने दूरस्थ शेल खातों, एनएफएस, एसएमटीपी और अन्य स्टेटफुल कनेक्शन प्रोटोकॉल के प्रबंधन से पहले ही अनमोल सीख ली।

जैसे-जैसे वेब पेज अधिक जटिल होते गए और इसमें बहुत सारे ग्राफिक्स और स्टाइलशीट शामिल होते गए, HTTP को "की-लाइव" ध्वज के साथ संशोधित कर दिया गया। यह सॉकेट को जीवित रखेगा और क्लाइंट को एक ही बातचीत के साथ कई संसाधनों का अनुरोध करने की अनुमति देगा।

इंटरनेट के वर्तमान उपयोग मॉडल को ध्यान में रखते हुए, मूल निर्णय अभी भी मान्य है। यह कई बार असुविधाजनक हो सकता है, लेकिन निष्क्रिय सॉकेट की तुलना में सर्वर तराजू के साथ कई छोटी, मात्रात्मक बातचीत।


3

यदि आपका मतलब द्वि-दिशात्मक ब्राउज़रों से है।

सुरक्षा को ध्यान में रखते हुए।

उदाहरण के लिए SPAM !.

अगले स्तर पर वेब पर द्विदिश संचार ले रहा है

अन्यथा इंटरनेट टीसीपी / आईपी (दो प्रोटोकॉल) और यूडीपी चलाता है।

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

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


3

एक डेस्कटॉप एप्लिकेशन में, उपयोगकर्ता को परिभाषित शुरुआत और अंत के साथ कार्यों की कुछ श्रृंखलाओं का प्रदर्शन करने के लिए माना जाता है। ऐसे एप्लिकेशन में, यह उपयोगकर्ताओं के लिए कुछ समझदारी (बहुत कुछ नहीं, वास्तव में) बनाता है जो भी सर्वर अपना डेटा प्रदान करता है, और जब तक वे काम नहीं करते तब तक लॉग इन रहते हैं।

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

स्थायी कनेक्शन संसाधनों का उपभोग करते हैं। शायद सिर्फ एक नेटवर्क सॉकेट, शायद पार्स डेटाबेस के प्रश्नों का एक पूल; यह सब आवेदन पर निर्भर करता है। किसी भी समय गायब होने वाले उपयोगकर्ता को देखते हुए, यह उन संसाधनों को रखने के लिए बहुत मायने नहीं रखता है।

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


2

इंटरनेट अनिवार्य रूप से स्टेटलेस नहीं है - वास्तव में जब आप जावा ईई को देखते हैं - उनके पास स्टेटफुल ईजेबी और स्टेटलेस ईजेबी हैं।

मुख्य कारण क्यों डेवलपर्स एक स्टेटलेस आर्किटेक्चर का उपयोग करने की सलाह देते हैं क्योंकि यह स्केलेबिलिटी की वजह से है। अपने ट्रैफ़िक का समर्थन करने के लिए सर्वर जोड़ने और छोड़ने के बाद अपने सभी उपयोगकर्ताओं की स्थिति को बनाए रखने की कोशिश करें।

यह वास्तव में एक कठिन वास्तुकला विकसित करने के लिए मुश्किल नहीं है। मुख्य बिंदु यथासंभव कम स्थिति (आमतौर पर एक उपयोगकर्ता आईडी - अधिमानतः एक कुकी में) रख रहा है और डेटाबेस को आवश्यकतानुसार बदल रहा है।


1

मुझे लगता है कि यह उस तरह से शुरू हुआ और बस उसी तरह से जारी रहा। अब जब इसके चारों ओर इतना बुनियादी ढांचा निर्मित हो गया है, तो इसे बदलना असंभव है।

शायद यह स्टेटलेस शुरू हुआ क्योंकि कनेक्शन पहले कम विश्वसनीय थे, और बैंडविड्थ भी छोटा था। यदि आपके पास बहुत सारे सक्रिय कनेक्शन नहीं हैं, तो आप अधिक ट्रैफ़िक को अधिक आसानी से संभाल सकते हैं।

यदि आपके पास बेहतर जानकारी है, या बेहतर अभी तक कोई टिप्पणी संपादित करें या छोड़ें, तो अपना जवाब पोस्ट करें!


1

क्योंकि सर्वर एक सेवा प्रदान करते हैं (नाम में इसका)। आप एक निवेदन करते हैं और उत्तर प्राप्त करते हैं - यही सब कुछ है।

वेब विकास के लिए एक संक्रमण बनाने के संबंध में मेरा मानना ​​है कि ASP.NET वेब फ़ॉर्म इसे इस तरह से करेगा जो आपके लिए अधिक समझने योग्य होगा - लेकिन केवल इसलिए कि यह छुपाता है कि वास्तव में क्या abstraction की परतों के तहत हो रहा है।


मैं एक Winforms डेवलपर था जिसने एक बार ASP.NET वेबफॉर्म को संक्रमण करने की कोशिश की थी। अनुभव सुखद नहीं था। मैं ASP.NET MVC को बहुत पसंद करता हूं।
रॉबर्ट हार्वे

ठीक है - ठीक है, मैं बाहर PHP में शुरू कर दिया तो खत्म हो गया। मुझे छोरों में HTML उत्पन्न करने से रोकने के लिए लगभग 6 महीने लग गए
bill.bob

1

HTTP (HyperText Transfer Protocol) के नाम का विश्लेषण करके बहुत कुछ समझा जा सकता है। यह कभी भी एक समृद्ध यूआई प्रोटोकॉल नहीं बनाया गया था। मूल विचार दस्तावेजों को उनके बीच लिंक के साथ साझा करना था। मैं आपसे एक दस्तावेज माँगता हूँ, आप उस दस्तावेज़ की एक प्रति के साथ उत्तर देते हैं।

मूलतः HTTP में केवल एक क्रिया GET थी। उस संबंध में, यह स्थिर सामग्री के लिए डिज़ाइन किया गया था। आपको उस समय राज्य की आवश्यकता क्यों है जब आप जो कुछ भी कर रहे हैं, वह एक दस्तावेज़ का अनुरोध कर रहा है जिसे कोई साझा कर रहा है? और यही कारण है कि HTTP स्टेटलेस है ... इसकी उत्पत्ति के कारण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.