2013-02-08 52 views
7

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

क्योंकि मेरा अधिकांश अनुभव PHP ढांचे के साथ रहा है, इसलिए मुझे किसी वेब रूट निर्देशिका में index.php फ़ाइल से शुरू करने और किसी भी शामिल कॉन्फ़िगर/बूटस्ट्रैपिंग स्क्रिप्ट्स, निर्भरता इंजेक्शन हैंडलिंग, अनुरोध रूटिंग, क्रिया के माध्यम से पढ़ने के लिए उपयोग किया जाता है प्रेषण, और अंत में प्रतिक्रिया/प्रतिक्रिया प्रतिपादन।

मैं स्कैला/प्ले के लिए प्रविष्टि के समान बिंदु की पहचान करने में सक्षम नहीं हूं! आवेदन, और मैं सही दिशा में एक धक्का की सराहना करता हूं। अनुरोध जीवनशैली की एक यात्रा निश्चित रूप से बहुत उदार होगी, लेकिन मुझे वास्तव में प्रवेश बिंदु दिखाना है।

उत्तर

3

डिफ़ॉल्ट रूप से प्ले फ्रेमवर्क अंतर्निहित HTTP सर्वर का उपयोग करता है (Netty पर आधारित)। तो PHP के साथ निकटतम समानता यह होगी कि Play Apache और PHP दोनों है।

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

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

यह अधिक लचीलापन की भी अनुमति देता है, उदाहरण के लिए पृष्ठभूमि प्रक्रिया को वेब ऐप के अंदर शुरू किया जा सकता है, बाहरी सर्वर प्रक्रियाओं की आवश्यकता नहीं है। Play में अक्का लाइब्रेरी है जो इसके लिए बहुत सुविधाजनक है।

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

लेकिन अगर डेवलपर के दृष्टिकोण से PHP एमवीसी ढांचे की तुलना में विचार, मॉडल और नियंत्रक बनाता है, तो प्ले बहुत समान है। PHP एमवीसी फ्रेमवर्क और प्ले फ्रेमवर्क दोनों नियंत्रक विधि या फ़ंक्शन को कॉल करते हैं और इस विधि को प्रतिक्रिया वापस करनी चाहिए, विचार आमतौर पर टेम्पलेट्स होते हैं और मॉडल आमतौर पर डेटाबेस के संबंध में ओआरएम बाइंडिंग होते हैं।

1

प्ले एक जीवनशैली अवधारणा के साथ जेएसपी जेएसएफ आदि जैसे विशिष्ट टेम्पलेट आधारित ढांचे के बजाय एक आरामदायक फ्रेमवर्क (http://en.wikipedia.org/wiki/Representational_state_transfer पढ़ें) के बजाय अधिक है, हालांकि इसमें टेम्पलेटिंग समर्थन भी है। मूल विचार भी जेसन जैसे शुद्ध डेटा के आधार पर सर्वर के साथ बातचीत है और डोम संरचना के अद्यतन के लिए अधिकांश कोड जावास्क्रिप्ट में लिखा गया है और केवल क्लाइंट पर किया जाता है जो वास्तव में अधिक लचीला और बहुत सरल और प्रभावशाली होता है।

नाटक में आप केवल अपने स्कैला वर्ग में एक विधि को परिभाषित करके और मार्ग फ़ाइल में मैप करके ब्राउज़र पर डेटा भेजने के लिए अपनी विधियां बनाते हैं। एक सामान्य वेब विकास प्रक्रिया की तरह आप भी सार्वजनिक संसाधन फ़ोल्डर (या एक टेम्पलेट बनाते हैं) में एचटीएमएल फाइलें डालते हैं जो आम तौर पर ब्राउज़र में निष्पादित होने पर उस विधि को AJAX कॉल करेगा।

2

मुझे लगता है कि इस फाइल को क्या आपका मतलब है:

https://github.com/playframework/playframework/blob/master/framework/src/play-netty-server/src/main/scala/play/core/server/NettyServer.scala

प्ले एक जावा अनुप्रयोग है कि किसी भी बंदरगाह पर सुन रहा शुरू होता है। नेटटी लाइब्रेरी का उपयोग करके सुनवाई की जाती है जो विभिन्न प्रकार के नेटवर्क प्रोटोकॉल (सबसे महत्वपूर्ण रूप से HTTP) को समझती है। एक बार नेटी जानता है कि क्या हो रहा है यह प्ले फ्रेमवर्क पर नियंत्रण देगा।

प्ले फ्रेमवर्क फिर से रूट के साथ संयोजन में वैश्विक फ़ाइल का उपयोग करेगा ताकि यह निर्धारित किया जा सके कि कौन सी कार्रवाई का आह्वान किया जाए।

+0

अब ऊपर के लिंक निम्न को https://github.com/playframework/playframework/blob/master/framework/src/play-netty-server/src/main/scala/play/core/server ले जाया जाता है /NettyServer.scala – hiren

+0

@hiren धन्यवाद, मैंने लिंक अपडेट किया है – EECOLOR