2012-02-04 12 views
8

सर्वश्रेष्ठ उत्तर टिप्पणी अनुभाग में है (इसलिए मैं नहीं उन्हें जवाब :(के लिए अंक दे सकते हैं)।playframework वास्तव में असीमित है?

अगर playframework इस फैशन में अतुल्यकालिक (जो वास्तव में अतुल्यकालिक, या पूरी तरह से अतुल्यकालिक होगा) था मैं सोच रहा था हां, खेल 100 अंतराल पर 1000 ग्राहकों को अनुमति देने के सामने असीमित है, लेकिन बैकएंड पर, इसे हासिल करने का कोई तरीका नहीं है, या मैं गलत हूं (जो मुझे उम्मीद है) .....

public static void someRequest(String id) { 

    //This method adds listener to a nio socket listener so it returns 
    //IMMEDIATELY and page can't be rendered at this point 
    fetchRemoteDataFromOtherSystem(id, new MyListener()); 

    // DO NOT RENDER PAGE YET but return so thread can be used for other requests 
} 

public class MyListener extends SomeListener { 
    public void fireResponse(Response response) { 
     renderPage(response); 
    } 
} 

नोटिस कि यह चरम असीमित व्यवहार होगा और यह भी ध्यान दें कि यदि आपके पास बैकएंड सिस्टम है जो प्रत्येक अनुरोध का जवाब देने में सेकंड लेता है, तो अब आपको समान मात्रा में उपयोगकर्ताओं की सेवा करने के लिए लगभग 100 कम मशीनों की आवश्यकता होती है। सामान्य संदर्भ जहां बैकएंड सिस्टम बहुत तेज है, पाठ्यक्रम का कोई प्रदर्शन अंतर नहीं होगा।

धन्यवाद, डीन

+3

क्या आपने यह http://www.playframework.org/documentation/1.2.4/asynchronous पढ़ा है? विशेष रूप से वादे के बारे में सामान। यह भी ब्याज का हो सकता है: http://caffeinelab.net/2010/06/29/asynchronous-http-client-in-play-framework/ – nylund

+0

ठीक है, यह कमाल था, इसे उत्तर के रूप में पोस्ट करें .... कि दूसरा लिंक बेहद स्पष्ट है !!!! महान जवाब !!!! (मैं टिप्पणियों को सही उत्तर के रूप में कैसे चिह्नित नहीं कर सकता :() –

+0

हम्म, वह उदाहरण एक भविष्य दिखाता है जिसमें श्रोता जोड़ने की कोई क्षमता नहीं है, इसलिए भविष्य में एक सर्वेक्षण करना चाहिए और पूछ रहा है, क्या खत्म हो गया है ???? उस तरह की बदबू आ रही है .... क्यों न केवल प्रतिक्रिया धागा का उपयोग नाटक को सूचित करने के लिए करें, जो दूसरी बार नियंत्रक विधि में कॉल करेगा? –

उत्तर

6

Play 2.0 पर एक नज़र डालें। यह अभी भी एक बीटा संस्करण है, लेकिन इसमें some nice asynchronous stuff है।

पहले प्ले के लिए, this documentation page पर एक नज़र डालें, जिसमें Play की एसिंक्रोनस विशेषताएं शामिल हैं, और Play Akka module (और जब आप इसमें हों, Akka itself :))।

+0

प्रश्न: यह कहता है कि यह निलंबित ऑपरेशन .... इसका क्या मतलब है? अगर मैं एक निओ अनुरोध कर रहा हूं, तो मैं तुरंत एक वादा वापस कर सकता हूं और इसे प्रतीक्षा विधि पर भेज सकता हूं ... क्या यह कुछ बाइटकोड जादू कर रहा है ताकि कॉल स्टैक वापस कर सके और जब मैं वादा ऑब्जेक्ट को प्रतिक्रिया के साथ बुलाता हूं, तो यह जारी रहता है? मैं इसे देख सकता था और यदि ऐसा है, तो बहुत सुन्दर मीठा है कि आप सिंक्रोनस कोड लिख सकते हैं और यह असीमित हो जाता है। –

+0

हम 2.0 खेलने के लिए गए थे और यह 1.2.x खेलने से बहुत धीमी विकास उत्पादकता-वार था। हमने अंततः हमारे सभी 2.0 स्कैला कोड को 1.2.x जावा कोड पर वापस कर दिया। (हम स्कैला की तरह करते हैं लेकिन एक एचटीएमएल पेज पर भी बदलाव करते हैं जो पूरे रीकंपाइल का कारण बनता है जो वास्तव में परेशान था)। –

+0

यदि आप एक ही ब्राउज़र में अलग-अलग टैब में एक ही अनुरोध करते हैं, तो वे तुल्यकालिक लगते हैं। – Rafael

1

प्ले 2 ग्राउंड अप से कुल असीमित है और यह अक्का और नेटटी का उपयोग करता है। आप अपने सामने वाले अंत और सेवाओं दोनों के लिए खेल का उपयोग कर सकते हैं (उदाहरण: बाकी के रूप में)। यह भी स्टेटलेस है, इसलिए, सर्वर जोड़कर इसे स्केल करना बहुत आसान है।

+0

इस पर अधिक जानकारी होगी हालांकि ..... यह उपरोक्त की तरह है। क्या इस पर कोई डॉक्टर है? –

+0

यहां एसिंक व्यवहार की व्याख्या करने वाले स्कैला दिनों से एक वीडियो है http://days2011.scala-lang.org/node/138/296 यह दस्तावेज़ एक अच्छा संसाधन है https://github.com/playframework/Play20/wiki/ScalaHome – sirmak

0

यहां कुछ विवरण जोड़ना। ऐसा लगता है कि प्ले ने आविष्कार किया है जिसे वादा ऑब्जेक्ट कहा जाता है जो भविष्य को बढ़ाता है और श्रोता जोड़ने का एक तरीका है, इसलिए मुझे लगता है कि प्ले आपके अनुरोध को भेजने के बाद वादे ऑब्जेक्ट पर श्रोता जोड़ता है और जब आपका प्रतिक्रिया थ्रेड Promise.setResponse (xxx) को कॉल करता है), वह विधि जांच करेगी कि श्रोता अभी तक जोड़ा गया है और यदि ऐसा है तो श्रोताओं को यह बताने के लिए आमंत्रित किया जाएगा कि प्रतिक्रिया प्राप्त हो गई है और खेलेंगे, इसके बाद इसे अपने कतार में संसाधित करने के लिए इसे कतार में डंप कर दिया जाएगा।

यदि आपकी प्रतिक्रिया कॉल श्रोताओं को जोड़ते समय फ्रेमवर्क को बजाती है, तो मैं कॉल कर रहा हूं, मैं मानता हूं कि उस कोड में कोड पहले ही ऑब्जेक्ट पर सेट किया गया था और यदि ऐसा है, तो श्रोता को प्लेफ्रेमवर्क मौजूदा थ्रेड का उपयोग करके कॉल करें जिसे बूंदें यह playframework की कतार में (या कम से कम मुझे आशा है कि यह मामला है)।

मुझे नहीं पता कि क्या वादा 1.2.x खेलने के लिए वापस पोर्ट किया गया था, हालांकि उदाहरण एक भविष्य का उपयोग कर रहा था, जिसे खेलने के लिए मतदान करना होगा जब प्रतिक्रिया वापस आती है ... ick .... मैं हमेशा सोचते थे कि क्यों इन भविष्य वस्तुओं पर कोई addResponseListener नहीं था ... इसे कभी पसंद नहीं आया।

संबंधित मुद्दे