पत्नी: रॉय फील्डिंग कौन है?
रयान: कोई लड़का। वह होशियार है।
पत्नी: ओह? उसने क्या किया?
रयान: उन्होंने पहले वेब सर्वर लिखने में मदद की और फिर एक टन शोध करके बताया कि वेब किस तरह से काम करता है। उनका नाम उस प्रोटोकॉल के विनिर्देशन पर है जिसका उपयोग सर्वर से आपके ब्राउज़र में पृष्ठों को प्राप्त करने के लिए किया जाता है।
पत्नी: यह कैसे काम करता है?
रयान: वेब?
पत्नी: हाँ।
रयान: हम्म। खैर, यह सब वास्तव में बहुत अद्भुत है। और मजेदार बात यह है कि यह सब बहुत ही कमज़ोर है। मैं जिस प्रोटोकॉल के बारे में बात कर रहा था, वह 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 का उपयोग कर रहे हैं, लेकिन केवल इसलिए कि यह हमारे नेटवर्क और सुरक्षा लोगों से कम बात करने में हमारी मदद करता है। हम आकर्षक उपकरण और जादूगरों के लिए सादगी का व्यापार कर रहे हैं।
पत्नी: क्यों?
रयान: मुझे कोई पता नहीं है।
पत्नी: आप कुछ क्यों नहीं कहते?
रयान: शायद मैं करूँगा।