2010-06-23 12 views
17

एक demo by IBM है जो दिखाता है कि रिवर्स AJAX का उपयोग डीडब्लूआर 2 के साथ कैसे किया जा सकता है। दूसरी ओर, स्कैला/एलआईएफटी अंतर्निहित रिवर्स AJAX क्षमता के साथ आता है।रिवर्स AJAX (धूमकेतु) और वसंत एमवीसी बनाम स्कैला/लिफ्ट?

  1. प्रश्न: यदि कोई स्प्रिंग एमवीसी के साथ ठीक काम करता है तो कोई अनुभव?

  2. प्रश्न: आप स्क्रैच से शुरू करते हैं, तो पेशेवरों और अधिक डीडब्ल्यूआर/स्प्रिंग MVC

  3. प्रश्न स्काला/LIFT पसंद करते हैं के लिए विपक्ष क्या हैं: स्काला/लिफ्ट में, सुरक्षा के रूप में के रूप में परिष्कृत से निपटने है वसंत सुरक्षा में?

उत्तर

11

लिफ्ट धूमकेतु वास्तुकला जो नोवेल द्वारा चयनित किया गया था उनकी पल्स उत्पाद बिजली के बाद वे विभिन्न प्रौद्योगिकियों के एक नंबर का मूल्यांकन किया।

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

लिफ्ट सत्र प्रबंधन के साथ लंबे मतदान को एकीकृत करता है ताकि यदि एक लंबे मतदान के दौरान एक अनुरोध यूआरएल में आता है जो कनेक्शन भुखमरी का कारण बनता है, तो लंबे समय तक मतदान कनेक्शन भुखमरी से बचने के लिए समाप्त हो जाता है (कुछ ब्राउज़रों में अधिकतम 2 HTTP कनेक्शन होते हैं प्रति नामित सर्वर, दूसरों के पास अधिकतम 6 है)। लिफ्ट लंबे मतदान अनुरोधों के लिए DNS जंगली-कार्ड वाले सर्वर का भी समर्थन करता है जैसे ब्राउज़र में प्रत्येक टैब एक अलग DNS वाइल्डकार्ड सर्वर के खिलाफ लंबे मतदान कर सकता है। यह कनेक्शन भुखमरी के मुद्दों से बचाता है।

लिफ्ट गतिशील रूप से कंटेनर का पता लगाता है कि सर्लेट चल रहा है और जेटी 6 & 7 और (जल्द ही) ग्लासफ़िश, लिफ्ट लंबे मतदान के दौरान धागे का उपयोग करने से बचने के लिए प्लेटफॉर्म के "निरंतरता" कार्यान्वयन का उपयोग करेगा।

लिफ्ट की जावास्क्रिप्ट jQuery और वाईयूआई के शीर्ष पर बैठ सकती है (और प्रोटोटाइप/स्क्रिप्टैकियस के शीर्ष पर भी बैठ सकती है।) वास्तविक मतदान कोड में कनेक्शन असफलताओं और क्षणिक कनेक्शन से निपटने के अन्य "सुंदर" तरीकों पर बैक-ऑफ शामिल है विफलताओं।

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

नोवेल खरोंच से शुरू हुआ और कुछ अच्छे कारणों से पल्स को सत्ता में लेफ्ट चुना।

सुरक्षा के मामले में, लिफ्ट वसंत + वसंत सुरक्षा हाथों को धड़कता है। http://www.mail-archive.com/[email protected]/msg13020.html

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

ओह ... और आप एक templating भाषा का उपयोग नहीं करना चाहते हैं, तो यहाँ एक पूरी लिफ्ट धूमकेतु चैट घटक है:

class Chat extends CometActor with CometListener { 
    private var msgs: List[String] = Nil 

    def registerWith = ChatServer 

    override def lowPriority = { 
    case m: List[String] => msgs = m; reRender(false) 
    } 

    def render = { 
    <div> 
    <ul> 
    { 
     msgs.reverse.map(m => <li>{m}</li>) 
    } 
    </ul> 
    <lift:form> 
    { 
     SHtml.text("", s => ChatServer ! s) 
    } 
    <input type="submit" value="Chat"/> 
    </lift:form> 
    </div> 
    } 
} 

और एक पेज में इस डालने के लिए: <lift:comet type="Chat"/>

+1

हे डेविड, बहुत उपयोगी उत्तर के लिए धन्यवाद। मुझे पहले से ही यह धारणा थी कि लिफ्ट के लिए कोई विकल्प नहीं है, और अब मुझे पता है कि यह धारणा सही थी। तो ... स्कैला ... मेरे लिए सीखने के लिए एक और भाषा ... :-( –

+0

आपको लिफ्ट Google समूह http://groups.google.com/group/liftweb पर देखने के लिए तत्पर हैं –

2
  1. देखने की मेरी बात से, वसंत MVC एक बहुत बुरा विकल्प Ajaxed/COMETed रिया निर्माण करना है। मॉडल एंड व्यू घटक का उद्देश्य एचटीएमएल फॉर्मों के साथ काम करना और पूरे पृष्ठ को एक साथ प्रस्तुत करना है, टैग लाइब्रेरीज़, सत्यापन दिनचर्या जेएसपी और टेम्पलेट्स के आधार पर पुरानी शैली के विकास के लिए बेहतर हैं। मेरे लिए, वसंत एमवीसी में AJAX/COMET प्लगिंग हमेशा एक हैक का एक प्रकार होगा। हालांकि, अगर आप @ एमवीसी (अपने जावास्क्रिप्ट यूआई के साथ JSON इंटरचेंजिंग) का उपयोग कर रीस्टफुल सेवाओं का निर्माण करने जा रहे हैं, तो यह काम कर सकता है (हालांकि मैं उन मामलों के लिए जर्सी/जेएक्सबी पसंद करूंगा)।
  2. एलआईएफटी मूल रूप से सीओएमईटी के साथ काम करने के लिए डिज़ाइन किया गया था, इसलिए यह बेहतर विकल्प होगा। हालांकि मैं एलआईएफटी की तुलना में कुछ अधिक हल्के और टेम्पलेट-कम का चयन करूंगा (मेरे लिए, यह उसी बीमारी से ग्रस्त है जो स्प्रिंग एमवीसी करता है)।
  3. दोनों सुरक्षा प्रणालियों में केवल बुनियादी परिदृश्य शामिल हैं, और वास्तविक दुनिया परियोजनाओं में उपयोग करने के लिए बहुत सारे अनुकूलन की आवश्यकता है।

    क्या मैं स्काला में COMETed रिया के निर्माण के लिए उपयोग करेंगे, यही कारण है कि: (एचटीटीपी/JSON से अधिक जे एस यूआई के साथ संवाद करने हल्के RESTful सेवाओं)

    • Jersey + Atmosphere (COMETed अनुप्रयोगों के निर्माण के लिए स्केलेबल समाधान) + किसी भी जेएस ढांचा (jquery, यूयूआई, ext जेएस, ...)। आपको Akka Framework पर भी एक नज़र डालना चाहिए, जो जर्सी और वायुमंडल दोनों के साथ एकीकृत है, और आपको बेवकूफ स्काला में आरआईए वेब-ऐप्स बनाने की अनुमति देता है। अक्का में pub-sub COMET example यहां है।
    • Vaadin + ICEPush। यदि आप जेएस के साथ अपना हाथ गंदे नहीं करना चाहते हैं तो यह आपके लिए बहुत आरामदायक संयोजन होगा (हालांकि ICEpush अभी तक एंटरप्राइज़-तैयार समाधान नहीं है)।
0

एक अन्य विकल्प, शुद्ध जावा (या स्कैला समेत किसी भी अन्य जेवीएम भाषा के साथ) केंद्रित ItsNat Comet है।

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