पर्ल ऑब्जेक्ट एनवायरनमेंट: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 7: Line 7:


==पीओई अर्कीटेक्चर: अब्स्ट्रैक्शन की लेयर्स ==
==पीओई अर्कीटेक्चर: अब्स्ट्रैक्शन की लेयर्स ==
पीओई, पर्ल ऑब्जेक्ट एनवायरनमेंट को एक छोटे मॉड्यूलर [[ऑपरेटिंग सिस्टम]] के रूप में सोचा जा सकता है। एक या अधिक पीओई प्रोग्राम या इंस्टेंसेस एक साथ चलाए जा सकते हैं और सामान्यतः [[सहकारी मल्टीटास्किंग|कोअपरेटिव मल्टीटास्किंग]] के लिए उपयुक्त होते हैं। पीओई पैकेज में [[ नाम स्थान |नेमस्पेस]] और एब्स्ट्रैक्शन (कंप्यूटर विज्ञान) सम्मिलित हैं जो ओपन-एंडेड [[सीपीएएन]]-शैली कन्वेंशन में पीओई के भविष्य के डेवलपमेंट को गाइड करते हैं।
पीओई, पर्ल ऑब्जेक्ट एनवायरनमेंट को एक लिटिल मॉड्यूलर [[ऑपरेटिंग सिस्टम]] के रूप में सोचा जा सकता है। एक या अधिक पीओई प्रोग्राम या इंस्टेंसेस एक साथ चलाए जा सकते हैं और सामान्यतः [[सहकारी मल्टीटास्किंग|कोअपरेटिव मल्टीटास्किंग]] के लिए उपयुक्त होते हैं। पीओई पैकेज में [[ नाम स्थान |नेमस्पेस]] और एब्स्ट्रैक्शन (कंप्यूटर विज्ञान) सम्मिलित हैं जो ओपन-एंडेड [[सीपीएएन]]-शैली कन्वेंशन में पीओई के भविष्य के डेवलपमेंट को गाइड करते हैं।


===इवेंट लेयर===
===इवेंट लेयर===
Line 20: Line 20:
सीपीएएन ने यह देखने के लिए निरंतर चेक किया है, कि कम्युनिटी ने संग्रह में कौन सी नई चीज़ें रखी हैं। (...और पर्ल का मोटो याद रखें: [[लैरी वॉल]] के अनुसार "ऐसा करने की एक से अधिक विधि हैं।")
सीपीएएन ने यह देखने के लिए निरंतर चेक किया है, कि कम्युनिटी ने संग्रह में कौन सी नई चीज़ें रखी हैं। (...और पर्ल का मोटो याद रखें: [[लैरी वॉल]] के अनुसार "ऐसा करने की एक से अधिक विधि हैं।")


रनिंग कर्नेल पीओई::सेशन आर्किटेक्चर द्वारा रुलड़ अब्स्ट्रैक्शन के दूसरे सेट से निर्मित प्राइमर्डियल फाइनाइट स्टेट मशीनों के माध्यम से संचालित होता है। एक पीओई::सैशन को लगभग ट्रिवियली रूप से फ़ंक्शंस, क्लास [[ विधि (कंप्यूटर प्रोग्रामिंग) |विधि (कंप्यूटर प्रोग्रामिंग)]] और/या ऑब्जेक्ट मेथड की इवेंट्स के मानचित्र के मैप में परिभाषित किया गया है जो उन्हें हैंडल करते है। पीओई::सैशन ऑब्जेक्ट में इसके सभी [[ईवेंट हैंडलर]] द्वारा साझा किया गया एक स्टोरेज स्पेस भी होता है, जिसे [[ ढेर (प्रोग्रामिंग) |हीप (प्रोग्रामिंग)]] कहा जाता है। आप उन्हें किसी भी तरह से स्लाइस करलें, स्टेट्स सॉलिड्ली रूप से पहचाने जाते हैं और स्पष्ट रूप से परिभाषित होते हैं।
रनिंग कर्नेल पीओई::सेशन आर्किटेक्चर द्वारा रुलड़ अब्स्ट्रैक्शन के दूसरे सेट से निर्मित प्राइमर्डियल फाइनाइट स्टेट मशीनों के माध्यम से ड्रिवेन होता है। एक पीओई::सैशन को लगभग ट्रिवियली रूप से फ़ंक्शंस, क्लास [[ विधि (कंप्यूटर प्रोग्रामिंग) |विधि (कंप्यूटर प्रोग्रामिंग)]] और/या ऑब्जेक्ट मेथड की इवेंट्स के मानचित्र के मैप में परिभाषित किया गया है जो उन्हें हैंडल करते है। पीओई::सैशन ऑब्जेक्ट में इसके सभी [[ईवेंट हैंडलर]] द्वारा साझा किया गया एक स्टोरेज स्पेस भी होता है, जिसे [[ ढेर (प्रोग्रामिंग) |हीप (प्रोग्रामिंग)]] कहा जाता है। आप उन्हें किसी भी तरह से स्लाइस करलें, स्टेट्स सॉलिड्ली रूप से पहचाने जाते हैं और स्पष्ट रूप से परिभाषित होते हैं।


एक फीचरफुल इवेंट हैंडलर एक पीओई::सैशन सबक्लास है जिसे पीओई::एनएफए कहा जाता है - एक इवेंट-ड्रिवेन [[नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन|नॉनडेटर्मिनिस्टिक फाइनाइट ऑटोमेटन]] (एक ''स्मार्ट'' फाइनाइट स्टेट मशीन), यह ईवेंट हैंडलर ईवेंट, पोल, यूज़र सैलेक्शन याअदर एक्सटर्नल ईवेंट की आवश्यकता के अनुसार एक स्ट्रिक्टली से परिभाषित स्टेट से दूसरे में चला जाता है। यह स्टेट मशीन रेलटीवीली इनफॉर्मल पीओइ::सैशन की तुलना में [[एक्सिक्यूशन पाथ]] पर अधिक टाइटर ट्रैकिंग की अनुमति देते हुए जेनरिक [[इवेंट-संचालित प्रोग्रामिंग|इवेंट-ड्रिवेन प्रोग्रामिंग]] [[थ्रेड (कंप्यूटिंग)]] की एक वाइड रेंज को एनकेप्सुलेटेड करने का कार्य करती है।
एक फीचरफुल इवेंट हैंडलर एक पीओई::सैशन सबक्लास है जिसे पीओई::एनएफए कहा जाता है - एक इवेंट-ड्रिवेन [[नॉनडेटर्मिनिस्टिक परिमित ऑटोमेटन|नॉनडेटर्मिनिस्टिक फाइनाइट ऑटोमेटन]] (एक ''स्मार्ट'' फाइनाइट स्टेट मशीन), यह ईवेंट हैंडलर ईवेंट, पोल, यूज़र सैलेक्शन याअदर एक्सटर्नल ईवेंट की आवश्यकता के अनुसार एक स्ट्रिक्टली से परिभाषित स्टेट से दूसरे में चला जाता है। यह स्टेट मशीन रेलटीवीली इनफॉर्मल पीओइ::सैशन की तुलना में [[एक्सिक्यूशन पाथ]] पर अधिक टाइटर ट्रैकिंग की अनुमति देते हुए जेनरिक [[इवेंट-संचालित प्रोग्रामिंग|इवेंट-ड्रिवेन प्रोग्रामिंग]] [[थ्रेड (कंप्यूटिंग)]] की एक वाइड रेंज को एनकेप्सुलेटेड करने का कार्य करती है।


===आई/ओ लेयर===
===आई/ओ लेयर===
कर्नेल की अगली आवश्यकता इनपुट-आउटपुट हैंडलर के लिए है जो व्हील्स नामक एकल I/O लेयर में मौजूद होते हैं। पहिए कार्रवाई शुरू करते हैं, उनके परिणामस्वरूप निम्न-स्तरीय इवेंटओं को संभालते हैं, और उनका उपयोग करने वाले सैशनों के लिए उच्च-स्तरीय इवेंटओं का उत्पादन करते हैं। सेशन और लूप्स की तरह पहिये, अमूर्त तत्वों के एक समान सेट से निर्मित होते हैं - 'पीओई::व्हील' - जो कर्नेल के शीर्ष पर स्थित होते हैं। पीओई के आधार वितरण में सात अत्यधिक विशिष्ट और अच्छी तरह से परिभाषित पहिये हैं:
कर्नेल की अगली आवश्यकता इनपुट-आउटपुट हैंडलर के लिए है जो व्हील्स नामक एकल I/O लेयर में उपस्थित होते हैं। व्हील्स एक्शन्स प्रारंभ करते हैं, उनके परिणामस्वरूप लो लेवल इवेंट्स को हैंडल करते है, और उनका उपयोग करने वाले सैशंस के लिए हाइयर लेवल इवेंट्स का उत्पादन करते हैं। सेशन और लूप्स की जैसे व्हील्स, यूनिफार्म अब्स्ट्रैक्शंस के एक समान सेट से निर्मित होते हैं - 'पीओई::व्हील' - जो कर्नेल के शीर्ष पर स्थित होते हैं। पीओई के बेस डिस्ट्रीब्यूशन में सात हाई-स्पेशलाइज्ड और वैल-डिफाइंड से परिभाषित व्हील्स हैं:
*पीओई::Wheel::Run - पाइप(), fork() और कभी-कभी exec() का उपयोग करके बाल प्रक्रियाओं को बनाता है और उनके साथ इंटरैक्ट करता है। बातचीत बच्चे के मानक इनपुट और आउटपुट के माध्यम से की जाती है।
*पीओई::व्हील::रन - पाइप(), फोर्क() और कभी-कभी एक्सेक() का उपयोग करके चाइल्ड प्रोसेसेस को बनाता है और उनके साथ इंटरैक्ट करता है। इंटरेक्शन, चाइल्ड के स्टैंडर्ड इनपुट और आउटपुट के माध्यम से की जाती है।
*पीओई::Wheel::SocketFactory - क्लाइंट और सर्वर सॉकेट को उनकी स्थापना की प्रतीक्षा किए बिना बनाने का एक तरीका।
*पीओई::व्हील::सॉकेटफेक्टरी - क्लाइंट और सर्वर सॉकेट को उनकी स्थापना की प्रतीक्षा किए बिना बनाने की एक विधि है।
*पीओई::Wheel::Curses - कर्सेस (प्रोग्रामिंग लाइब्रेरी) टेक्स्ट इंटरफ़ेस लाइब्रेरी से नॉन-ब्लॉकिंग इनपुट के लिए एक हैंडलर। सीपीएएन घटक जैसे कि कर्स::यूआई::पीओई और टर्म::विज़ुअल इस पर आधारित हैं।
*पीओई::व्हील::कर्सेस - कर्सेस (प्रोग्रामिंग लाइब्रेरी) टेक्स्ट इंटरफ़ेस लाइब्रेरी से नॉन-ब्लॉकिंग इनपुट के लिए एक हैंडलर, सीपीएएन कंपोनेंट्स जैसे कि कर्स::यूआई::पीओई और टर्म::विज़ुअल इस पर आधारित हैं।
*पीओई::व्हील::फॉलोटेल - लगातार बढ़ती फ़ाइल, जैसे लॉग या सहयोगी दस्तावेज़, को उसकी पूंछ पर एक हैंडल रखकर ट्रैक करता है।
*पीओई::व्हील::फॉलोटेल - एवर ग्रोइंग फ़ाइल, जैसे लॉग या कोलाबोरेटीव डाक्यूमेंट्स, को उसकी टेल पर एक हैंडल रखकर ट्रैक करता है।
*पीओई::Wheel::ListenAccept - पीओई::Wheel::SocketFactory का एक सबसेट जिसका उपयोग मौजूदा सर्वर सॉकेट पर सुनने और दूरस्थ क्लाइंट से कनेक्शन स्वीकार करने के लिए किया जाता है।
*पीओई::व्हील::लिसेनएक्सेप्ट - पीओई::व्हील::सॉकेटफेक्टरी का एक सबसेट जिसका उपयोग उपस्थित सर्वर सॉकेट पर सुनने और रिमोट क्लाइंट से कनेक्शन एक्सेप्ट करने के लिए किया जाता है।
*पीओई::Wheel::ReadLine - एक नॉन-ब्लॉकिंग, इवेंट संचालित टर्म::ReadLine का एनालॉग।
*पीओई::व्हील::रीडलाइन - एक नॉन-ब्लॉकिंग, इवेंट ड्रिवेन टर्म::रीडलाइन का एनालॉग है।
*पीओई::Wheel::ReadWrite - पीओई के लिए एक उच्च-प्रदर्शन अतुल्यकालिक I/O फ़ाइल हैंडलर जो पीओई के [[डिवाइस ड्राइवर]] और [[फ़िल्टर (सॉफ़्टवेयर)]] का उपयोग '[[फ़ाइलहैंडल]]' पर बफ़र्ड पढ़ने और लिखने के लिए करता है जो अगली लेयर पर आता है - पीओई's स्वयं की छोटी फ़ाइल प्रणाली।
*पीओई::व्हील::रीडराइट - पीओई के लिए एक उच्च-प्रदर्शन एनबीआईओ फ़ाइल हैंडलर जो '[[फ़ाइलहैंडल]]' पर बफ़र्ड रीड और राइट के लिए पीओई के [[डिवाइस ड्राइवर]] और [[फ़िल्टर (सॉफ़्टवेयर)]] का उपयोग करता है जो नेक्स्ट लेयर पर आती है - पीओइस का अपना एक लिटिल फाइल सिस्टम है।


===फ़ाइल लेयर्स===
===फ़ाइल लेयर्स===
ड्राइवर फ़ाइल हैंडल को पढ़ने और लिखने का वास्तविक कार्य करते हैं। वे पीओई::Driver मॉड्यूल में निहित कम अमूर्त परिलैंग्वेजओं के अनुसार बनाए गए हैं। इस लेखन के समय लागू किया गया मुख्य ड्राइवर पीओई::Driver::SysRW है - एक सार्वभौमिक फ़ाइलहैंडल रीडर/लेखक जो विशेष रूप से पीओई::Wheel::ReadWrite के लिए डिज़ाइन किया गया है।
ड्राइवर फ़ाइल हैंडल को रीड और राइट करने का वास्तविक कार्य करते हैं। वे पीओई::ड्राइवर मॉड्यूल में निहित लैस अब्स्ट्रैक्शन परिभाषाओं के अनुसार बनाए गए हैं। इसे राइट करने के समय इम्प्लिमेंटेड किया गया है, मेन ड्राइवर पीओई::ड्राइवर::सीसआडब्लू है - एक यूनिवर्सल फ़ाइलहैंडल रीडर/राइटर जो विशेष रूप से पीओई::व्हील::रीडराइट के लिए डिज़ाइन किया गया है।


अगली लेयर, पीओई::Filter से निर्मित और संभवत: अधिकांश पर्ल ऑबफस्केशन एफिशियानाडोस का फोकस (नीचे पीओई #पीओई हास्य देखें), पीओई::Filter सेट है:
नेक्स्ट लेयर, पीओइ::फ़िल्टर से निर्मित और संभवत: अधिकांश पर्ल ऑबफस्केशन एफिशियानाडोस का फोकस (नीचे पीओइ #पीओइ ह्यूमर देखें), पीओइ::फ़िल्टर सेट है:
  फ़िल्टर कच्ची धाराओं के बीच अनुवाद करते हैं
"फ़िल्टर रॉ स्ट्रीम्स के बीच ट्रांसलेट करते हैं
  और स्वादिष्ट दादा के पके हुए टुकड़े। प्रति मैट कैशनर|`सुंगो'
  और टेस्टी दादा के कुक्ड चंक्स" पर `सुंगो'
*पीओई::Filter::Block - इनपुट को निश्चित लंबाई वाले ब्लॉक के रूप में पार्स करता है। आउटपुट पक्ष पर, यह केवल डेटा को बिना किसी क्षति के पास करता है।
*पीओई::फ़िल्टर::ब्लॉक - इनपुट को फिक्स्ड लेंथ वाले ब्लॉक के रूप में पार्स करता है। आउटपुट साइड पर, यह केवल डेटा को बिना किसी अंसकैथेड़ के पास करता है।
*पीओई::Filter::HTTPD - इनपुट को HTTP अनुरोधों के रूप में पार्स करता है और उन्हें ''HTTP::Request'' ऑब्जेक्ट में अनुवादित करता है। आउटपुट पक्ष पर, यह ''HTTP::Response'' ऑब्जेक्ट लेता है और उन्हें वेब क्लाइंट/उपयोगकर्ता-एजेंट को भेजे जाने के लिए उपयुक्त चीज़ में बदल देता है।
*पीओई::फ़िल्टर::एचटीटीपीडी - इनपुट को एचटीटीपी रिक्वेस्ट्स के रूप में पार्स करता है और उन्हें ''एचटीटीपी::रिक्वेस्ट'' ऑब्जेक्ट में अनुवादित करता है। आउटपुट साइड पर, यह ''एचटीटीपी::रिस्पॉन्स'' ऑब्जेक्ट लेता है और उन्हें वेब क्लाइंट/यूज़र-एजेंट को भेजे जाने के लिए उपयुक्त ऑब्जेक्ट में परिवर्तित कर देता है।
*पीओई::Filter::Line - आने वाली स्ट्रीम को लाइनों में पार्स करता है और आउटगोइंग लाइनों को स्ट्रीम में बदल देता है। यह बहुत बुनियादी हुआ करता था, लेकिन हाल के सुधारों में न्यूलाइन ऑटोडिटेक्शन जैसी दिलचस्प सुविधाएँ जोड़ी गई हैं।
*पीओई::फ़िल्टर::लाइन - आने वाली स्ट्रीम को लाइनों में पार्स करता है और आउटगोइंग लाइनों को स्ट्रीम में परिवर्तित कर देता है। यह बहुत बेसिक हुआ करता था, लेकिन रीसेंट इम्प्रूवमेंट में न्यूलाइन ऑटोडिटेक्शन जैसी इंट्रेस्टिंग फीचर्स जोड़ी गई हैं।
*पीओई::Filter::Reference - पीओई प्रोग्रामों के बीच या पीओई और अन्य पर्ल प्रोग्रामों के बीच पर्ल संरचनाएं भेजने के लिए उपयोग किया जाता है। इनपुट पक्ष पर, जमे हुए डेटा (स्टोरेबल, फ्रीज़थॉ, वाईएएमएल, या कुछ अन्य क्रमबद्धता तंत्र के माध्यम से) को पर्ल डेटा संरचनाओं में पिघलाया जाता है। आउटपुट पर, फ़िल्टर को दिए गए संदर्भ फ़्रीज़ हो जाते हैं। यदि Compress::Zlib स्थापित है तो अनुरोध पर डेटा को संपीड़ित भी किया जा सकता है।
*पीओई::फ़िल्टर::रीफेरेंस - पीओई प्रोग्रामों के बीच या पीओई और अन्य पर्ल प्रोग्रामों के बीच पर्ल स्ट्रक्चर्स भेजने के लिए उपयोग किया जाता है। इनपुट साइड पर, फ्रोज़ेन डेटा (स्टोरेबल, फ्रीज़थॉ, वाईएएमएल, या कुछ अन्य सीरीएलाइज़ेशन मैकेनिज्म के माध्यम से) को पर्ल डेटा स्ट्रक्चरस को थावड किया जाता है। आउटपुट साइड पर, फ़िल्टर को दिए गए रिफेरेंस फ़्रीज़ हो जाते हैं। यदि कंप्रेस::ज़ेडलिब इंस्टॉल्ड है तो इसे रिक्वेस्ट पर डेटा को कंप्रेस्ड भी किया जा सकता है।
*पीओई::फ़िल्टर::स्ट्रीम - कुछ नहीं करता। यह बिना किसी बदलाव के केवल डेटा को पास करता है।
*पीओई::फ़िल्टर::स्ट्रीम - कुछ नहीं करता है। यह बिना किसी परिवर्तन के केवल डेटा को पास करता है।


पूरी सूची के लिए [http://metacpan.org/module/POE पीओई at CPAN] देखें
पूरी सूची के लिए [http://metacpan.org/module/POE पीओई at सीपीएएन] देखें


==पीओई घटक==
==पीओई कंपोनेंट्स==
पीओई::घटक दस्तावेज़ीकरण के अनुसार पीओई में कई बड़े [[मॉड्यूलर प्रोग्रामिंग]] लिखे गए हैं। ये इवेंट-संचालित मॉड्यूल हैं, जिनमें से कई छोटे [[डेमॉन (कंप्यूटिंग)]] के रूप में कार्य करते हैं जो बड़े पैकेजों को सर्विसेस प्रदान करते हैं जिनसे वे संबंधित हैं। उनमें से कुछ मॉड्यूल के बीच उच्च-स्तरीय संचार की सुविधा प्रदान करते हैं, विशेष रूप से स्टैंड-अलोन एप्लिकेशन जिन्हें पर्ल के मुख्य वितरण से स्वतंत्र रहने की आवश्यकता होती है।
पीओई::कंपोनेंट्स डॉक्यूमेंटेशन के अनुसार पीओई में सेवेरल लार्जर पैकेज [[मॉड्यूलर प्रोग्रामिंग|प्रोग्रामिंग]] लिखे गए हैं। ये इवेंट-ड्रिवेन मॉड्यूल हैं, जिनमें से कई लिटिल [[डेमॉन (कंप्यूटिंग)]] के रूप में कार्य करते हैं जो बड़े पैकेजों को सर्विसेस प्रदान करते हैं जिनसे वे संबंधित हैं। उनमें से कुछ मॉड्यूल के बीच हाइयर लेवल कम्युनिकेशन की सुविधा प्रदान करते हैं, विशेष रूप से स्टैंड-अलोन एप्लिकेशन जिन्हें पर्ल के मेन डिस्ट्रीब्यूशन से इंडिपेंडेंट रहने की आवश्यकता होती है।


सामान्य तौर पर, पीओई घटक तैयार उच्च स्तरीय प्रक्रियाएं हैं जो विशिष्ट बड़े कार्य करते हैं। कुछ उदाहरण:
सामान्यतः, पीओई कंपोनेंट्स रेडी-मेड हाइयर लेवल प्रोसीज़र्स हैं जो स्पेसिफिक लार्ज टास्क करते हैं। कुछ उदाहरण:


*घटक::सर्वर::टीसीपी - एक विशेष प्रयोजन टीसीपी सर्वलेट
*कंपोनेंट्स::सर्वर::टीसीपी - एक स्पेशल-पर्पस टीसीपी सर्वलेट
*घटक::क्लाइंट::टीसीपी - एक पीओई-जागरूक टीसीपी क्लाइंट
*कंपोनेंट्स::क्लाइंट::टीसीपी - एक पीओई-अवेयर टीसीपी क्लाइंट
*पीओई::घटक::आईआरसी - लगभग पूर्ण विशेषताओं वाला आईआरसी क्लाइंट।
*पीओई::कंपोनेंट्स::आईआरसी - एक नेअर्ली फुलफीचर्ड वाला आईआरसी क्लाइंट
*पीओई::Component::Server::IRC - एक RFC 2810 से RFC 2813 अनुरूप IRC सर्वर (विकासाधीन)
*पीओई::कंपोनेंट्स::सर्वर::आईआरसी - एक RFC 2810 से RFC 2813 अनुरूप आईआरसी सर्वर (अंडर डेवलपमेंट)
*पीओई::Component::UserBase - एक उपयोगकर्ता प्रमाणीकरण और डेटा दृढ़ता सर्वलेट।
*पीओई::कंपोनेंट्स::यूज़रबेस - एक यूज़र ऑथेंटिकेशन और पर्सिस्टेंस सर्वलेट सर्वलेट
  पीओई घटक अत्यधिक पुन: प्रयोज्य पुस्तकालय होते हैं जो कठिन कार्यों को संभालते हैं,
"पीओई कंपोनेंट्स हाइली रीयूजेबल ट्रेंड्स लाइब्रेरीज़ होती हैं जो टीडियस टास्क को हैंडल करते हैं,
  प्रोग्रामर को अधिक दिलचस्प चीज़ों पर ध्यान केंद्रित करने के लिए स्वतंत्र करना।
  फ्रीइंग प्रोग्रामर को अधिक इंट्रेस्टिंग थिंग्स पर ध्यान केंद्रित करना होता है।
  हालाँकि, यह किसी भी पुस्तकालय के लिए सच होना चाहिए।
  चूंकि, यह किसी भी लाइब्रेरी के लिए ट्रू होना चाहिए।"


==पीओई हास्य==
==पीओई ह्यूमर==
* CPAN पर Acme::पीओई::घुटना मॉड्यूल।
* सीपीएएन पर एक्मे::पीओई::नी मॉड्यूल
* पीओई क्या है के अंत में कई मूर्खतापूर्ण संक्षिप्तीकरण विस्तार।
* पीओई क्या है के अंत में कई सिली एक्रोनिम एक्सपेंशन


==यह भी देखें==
==यह भी देखें==
* इवेंट-संचालित प्रोग्रामिंग
* इवेंट-ड्रिवेन प्रोग्रामिंग
* [[ट्विस्टेड (सॉफ्टवेयर)]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन (प्रोग्रामिंग लैंग्वेज)]] के लिए एक तुलनीय स्ट्रक्चर
* [[ट्विस्टेड (सॉफ्टवेयर)]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन (प्रोग्रामिंग लैंग्वेज)]] के लिए एक कंपरेबल फ्रेमवर्क


==बाहरी संबंध==
==बाहरी संबंध==

Revision as of 20:14, 15 August 2023

मैच संस्करण के लिए, मैच (कर्नेल) देखें

'पर्ल ऑब्जेक्ट एनवायरनमेंट' या 'पीओई' रोक्को कैपुटो एट अल द्वारा पर्ल प्रोग्रामिंग लैंग्वेज में लिखी गई पर्ल मॉड्यूल की एक लाइब्रेरी (कंप्यूटिंग) है।

सीपीएएन से:

"पीओई मूल रूप से एक सतत ऑब्जेक्ट सर्वर और रनटाइम एनवायरनमेंट के मूल के रूप में विकसित किया गया था। यह एक जनरल पर्पस मल्टीटास्किंग और नेटवर्किंग फ्रेमवर्क के रूप में विकसित हुआ है, जो इवेंट और टीके (सॉफ़्टवेयर) और जीटीके टूलकिट जैसे अन्य इवेंट प्रोग्राम लूप्स के लिए एक कंसिस्टेंट इंटरफ़ेस प्रदान करता है।"

पीओई अर्कीटेक्चर: अब्स्ट्रैक्शन की लेयर्स

पीओई, पर्ल ऑब्जेक्ट एनवायरनमेंट को एक लिटिल मॉड्यूलर ऑपरेटिंग सिस्टम के रूप में सोचा जा सकता है। एक या अधिक पीओई प्रोग्राम या इंस्टेंसेस एक साथ चलाए जा सकते हैं और सामान्यतः कोअपरेटिव मल्टीटास्किंग के लिए उपयुक्त होते हैं। पीओई पैकेज में नेमस्पेस और एब्स्ट्रैक्शन (कंप्यूटर विज्ञान) सम्मिलित हैं जो ओपन-एंडेड सीपीएएन-शैली कन्वेंशन में पीओई के भविष्य के डेवलपमेंट को गाइड करते हैं।

इवेंट लेयर

इनफॉर्मल अर्कीटेक्चर में नीचे की तरफ कर्नेल (ऑपरेटिंग सिस्टम) के साथ लेयर्स का एक सेट होता है। यह छोटा कर्नेल ईवेंट लेयर को प्रतिनिधित्व करता है जो प्रत्येक चल रहे पीओई उदाहरण के मेन लूप के रूप में कार्य करता है। पहली कॉल इवेंट डिस्पैचर - पीओई::कर्नेल को होती है।

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

एक हाइयर लेवल पैकजिंग फ्रेमवर्क भी है - पीओई::मैक्रो और उनकी टैस्टिंग के लिए एक डिबगिंग उपयोगिता जिसे पीओई::प्रीप्रोसेसर कहा जाता है। इस फ्रेमवर्क से पीओई::मैक्रो::यूज़बाइट्स प्राप्त हुआ है।

नोट: जैसा कि पर्ल ट्रेडिशन का एक मैंडेट है, की पीओई भी एक मूविंग टार्गेर है।

सीपीएएन ने यह देखने के लिए निरंतर चेक किया है, कि कम्युनिटी ने संग्रह में कौन सी नई चीज़ें रखी हैं। (...और पर्ल का मोटो याद रखें: लैरी वॉल के अनुसार "ऐसा करने की एक से अधिक विधि हैं।")

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

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

आई/ओ लेयर

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

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

फ़ाइल लेयर्स

ड्राइवर फ़ाइल हैंडल को रीड और राइट करने का वास्तविक कार्य करते हैं। वे पीओई::ड्राइवर मॉड्यूल में निहित लैस अब्स्ट्रैक्शन परिभाषाओं के अनुसार बनाए गए हैं। इसे राइट करने के समय इम्प्लिमेंटेड किया गया है, मेन ड्राइवर पीओई::ड्राइवर::सीसआडब्लू है - एक यूनिवर्सल फ़ाइलहैंडल रीडर/राइटर जो विशेष रूप से पीओई::व्हील::रीडराइट के लिए डिज़ाइन किया गया है।

नेक्स्ट लेयर, पीओइ::फ़िल्टर से निर्मित और संभवत: अधिकांश पर्ल ऑबफस्केशन एफिशियानाडोस का फोकस (नीचे पीओइ #पीओइ ह्यूमर देखें), पीओइ::फ़िल्टर सेट है:

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

पूरी सूची के लिए पीओई at सीपीएएन देखें

पीओई कंपोनेंट्स

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

सामान्यतः, पीओई कंपोनेंट्स रेडी-मेड हाइयर लेवल प्रोसीज़र्स हैं जो स्पेसिफिक लार्ज टास्क करते हैं। कुछ उदाहरण:

  • कंपोनेंट्स::सर्वर::टीसीपी - एक स्पेशल-पर्पस टीसीपी सर्वलेट
  • कंपोनेंट्स::क्लाइंट::टीसीपी - एक पीओई-अवेयर टीसीपी क्लाइंट
  • पीओई::कंपोनेंट्स::आईआरसी - एक नेअर्ली फुलफीचर्ड वाला आईआरसी क्लाइंट
  • पीओई::कंपोनेंट्स::सर्वर::आईआरसी - एक RFC 2810 से RFC 2813 अनुरूप आईआरसी सर्वर (अंडर डेवलपमेंट)
  • पीओई::कंपोनेंट्स::यूज़रबेस - एक यूज़र ऑथेंटिकेशन और पर्सिस्टेंस सर्वलेट सर्वलेट
"पीओई कंपोनेंट्स हाइली रीयूजेबल ट्रेंड्स लाइब्रेरीज़ होती हैं जो टीडियस टास्क को हैंडल करते हैं,
फ्रीइंग प्रोग्रामर को अधिक इंट्रेस्टिंग थिंग्स पर ध्यान केंद्रित करना होता है।
चूंकि, यह किसी भी लाइब्रेरी के लिए ट्रू होना चाहिए।"

पीओई ह्यूमर

  • सीपीएएन पर एक्मे::पीओई::नी मॉड्यूल
  • पीओई क्या है के अंत में कई सिली एक्रोनिम एक्सपेंशन

यह भी देखें

बाहरी संबंध