मुझे अपने आप को कुछ हद तक मिल गया है। मैं एक नया, आधुनिक, वेब-आधारित एप्लिकेशन बना रहा हूं और न केवल मुझे एक तकनीक चुननी है, मुझे एक आर्किटेक्चर चुनना है। मुझे लगता है कि यह कहना उचित है कि इन दिनों यह एक कठिन विकल्प है क्योंकि हमारे पास 5 साल पहले की तुलना में अधिक विकल्प हैं।लिफ्ट, प्ले! या ब्लूईज (जावास्क्रिप्ट फ्रेमवर्क के समूह के साथ)
पहली चीजें पहले, मैंने निर्णय लिया है कि स्कैला सर्वर-साइड भाषा होगी। मेरे पास मेरे कारण हैं, और यह XYZ पोस्ट बनाम स्कैला नहीं है - वह विकल्प बनाया गया है। मैंने इस तथ्य को भी सफल कर दिया है कि हम क्लाउड में वेब पर हैं, इसलिए मैं जावास्क्रिप्ट से कोशिश करने और दूर जाने के लिए भी नहीं जा रहा हूं। शायद मैं कॉफीस्क्रिप्ट के साथ करूंगा, लेकिन मैं ब्राउज़र-होस्टेड कोड लिखूंगा।
अब, स्कैला मानते हुए, अधिकांश लोग शायद Play! या Lift पर कूदेंगे। शायद खेलें! इसे endorsement from Typesafe दिया गया है, लेकिन मुझे लगता है कि मेरे पास एक और महत्वपूर्ण सवाल है जिसे पहले जवाब देने की आवश्यकता है। आर्किटेक्चर क्या है? अगर मैं एक बहुत समृद्ध ग्राहक चाहता हूं, तो क्या मुझे वास्तव में इस तथ्य के आधार पर एक साधारण स्टेटलेस सेवा परत से अधिक की आवश्यकता है कि हमारे पास जावास्क्रिप्ट का एक टन होगा? मुझे यकीन नहीं है कि यह एक सिंगल पेज वेबपैप होगा, लेकिन BlueEyes की तरह कुछ सही विकल्प है? लिफ्ट और प्ले! वे अधिक हेवीवेट हैं कि वे अधिक ज़िम्मेदारी लेते हैं। वे HTML उत्पन्न करते हैं और इन ढांचे के लिए, ब्राउज़र बहुत गूंगा है। रूटिंग, सत्यापन, अजाक्स और धूमकेतु समर्थन जैसी चीजें सभी सर्वर-साइड चिंताओं हैं। चूंकि ब्राउजर आज अधिक सक्षम है, इसलिए समृद्ध, इंटरैक्टिव फीचर्स सामान्य रूप से सर्वर से जावास्क्रिप्ट उत्पन्न और इंजेक्शन द्वारा कार्यान्वित किए जाते हैं।
मेरा प्रश्न इस पर उबलता है। क्या मैं पारंपरिक लिफ्ट/प्ले के साथ जाता हूं! ढांचा जहां सर्वर क्लाइंट और सर्वर ज़िम्मेदारी दोनों पर लेता है या क्या मैं एक समृद्ध ग्राहक + रीस्ट-स्टाइल सेवा परत के साथ जाता हूं जहां ग्राहक आवेदन में एक और प्रमुख भूमिका निभाता है? एक आर्किटेक्चर जहां क्लाइंट रूटिंग, सत्यापन, बाध्यकारी इत्यादि से संबंधित है। मैं KnockOut.js, Sammy.js, Sproutcore, Sproutcore, Backbone.js, जैसे फ्रेमवर्क देख रहा हूं ... ... मैं उन सभी को सूचीबद्ध करने के लिए पर्याप्त नहीं हूं लेकिन यह कहने के लिए पर्याप्त है कि वे सभी क्लाइंट-साइड परिप्रेक्ष्य से इनमें से कुछ ढांचे की विशेषताएं।
यदि मैं Play चुनता हूं !, क्या मैं उस समृद्ध यूआई को छोड़ रहा हूं? उन स्थितियों के बारे में क्या है जहां मैं एकीकरण/मैशप/मोबाइल उद्देश्यों के लिए सेवा API प्रदान करना चाहता हूं? कैसे खेलेंगे! मेरी मदद करो? स्पष्ट रूप से ब्लूईस यहाँ अच्छी तरह से खेलता है। मुझे लगता है कि मुझे एक सेवा परत की परवाह किए बिना चाहिए।
यदि मैं ब्लूईस चुनता हूं, तो मेरा ग्राहक कोड कैसा दिखता है? इनमें से कितने जावास्क्रिप्ट-आधारित ढांचे को मुझे मुझे देने की ज़रूरत है? मैं अभी भी अपनी सेवा परत में अपने अधिकांश व्यवसाय-तर्क चाहता हूं, लेकिन रूटिंग, बाध्यकारी .. सभी यूआई सामान क्लाइंट की चिंता होगी।
मुझे यकीन नहीं है कि कोई सही या गलत जवाब है, लेकिन मुझे लगता है कि यह समुदाय शायद मुझे सही दिशा में इंगित कर सकता है।
मैं भी http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228
आपको स्कैला से बाहर नहीं रखना है, लेकिन आपको [हास्केल और यसोड] (http://www.yesodweb.com/) पसंद आएगा। यसोड स्पष्ट रूप से बहुत ही भरोसेमंद है। –