2010-05-29 11 views
5

मैं रेल फ्रेम, ग्रेल्स इत्यादि जैसे वेब ढांचे को देख रहा हूं। मुझे स्प्रिंग फ्रेमवर्क में हाइबरनेट के साथ अनुप्रयोग करने के लिए उपयोग किया जाता है ... और मुझे कुछ और उत्पादक चाहिए।मेरे लिए कौन सा वेब प्लेटफ़ॉर्म सही है?

मुझे पता चला कि चीजों में से एक यह है कि Grails में कुछ चीजें सेक्सी है, इसके साथ कुछ गंभीर समस्याएं हैं। Grails 'नियंत्रक:

1) बहुत लागू किया गया है। वे रनटाइम पर सुपर क्लास से विस्तार करने में सक्षम नहीं लगते हैं। मैंने बेस क्रियाओं और सहायक तरीकों को जोड़ने की कोशिश की, और ऐसा लगता है कि अंगूर उड़ाते हैं।

2) एक अप्रचलित अनुरोध पैरामीटर मॉडल (फॉर्म बैकिंग ऑब्जेक्ट्स के बजाय, जो बहुत अच्छे हैं) पर आधारित हैं।

3) परीक्षण करना मुश्किल है। कमांड ऑब्जेक्ट्स का पूरी तरह से अलग व्यवहार किया जाता है ... और यह वास्तव में नियंत्रक कोड लिखने के लिए परीक्षण लिखना बहुत मुश्किल है।

4) कमांड ऑब्जेक्ट्स पूरी तरह से अलग-अलग काम करते हैं। वे पूर्व-मान्य और बाध्य हैं, जो मूल पैरामीटर मॉडल की तुलना में बहुत अधिक असंगतता का कारण बनता है।

5) कमांड ऑब्जेक्ट्स पुन: प्रयोज्य नहीं हैं, और डोमेन की कक्षाओं, बाधाओं और क्षेत्रों जैसे अधिकांश सामानों का पुन: उपयोग करने के लिए पीछे की ओर दर्द होता है। बुनियादी वसंत में ऐसा करने के लिए यह सच है। Grails में क्या करना मुश्किल नहीं था?

6) जेनरेट की गई मचान शुद्ध बकवास है। यह आवेषण और अद्यतन को सामान्यीकृत नहीं करता है ... और यह वास्तव में कोड के ढेर को दो दृश्यों में कॉपी/पेस्ट करता है: create.gsp और edit.gsp। विचार खुद कुत्ते डू-डू के gargantuan ढेर हैं। यह इस तथ्य से आगे बढ़ाया गया है कि यह निम्न स्तर के पैरामीटर का उपयोग करता है न कि वस्तुओं।

एकीकरण परीक्षण वसंत एकीकरण परीक्षण से 30x धीमी है। यह घृणित है।

कुछ नकली परीक्षण लिखना बहुत कठिन है और तैनात होने पर काम करने की गारंटी नहीं है, मुझे लगता है कि यह तेजी से, tdd परीक्षण चक्र को हतोत्साहित करता है।

अधिकांश चीजें चलने के दौरान grails को खराब करने लगती हैं, जैसे टैगलिब जोड़ने, या वास्तव में कुछ भी। सर्वर पुनरारंभ समस्या बिल्कुल हल नहीं हुई थी।

मुझे लगता है कि स्प्रिंग/हाइबरनेट/जावा के साथ जाने का एकमात्र तरीका है। स्टार्टअप पर एक बहुत बड़ी लागत है, लेकिन मुझे पता है कि यह अंततः चिकनी हो जाएगा।

यह बेकार है कि मैं स्कैला जैसी भाषा का उपयोग नहीं कर सकता ... क्योंकि मूर्खता से, यह हाइबरनेट के साथ इतना असंगत है।

यह ऐप डेटाबेस पर रन-ऑफ-द-मिल यूआई भी नहीं है। इसमें से कुछ मिल गया है, लेकिन यह एक स्लच नहीं होने वाला है। मैं अब Grails के डर से डर रहा हूँ क्योंकि यह नियंत्रक परत में कैसे बकवास है।

मैं क्या कर सकता हूं पर सुझाव?

+0

"यह बेकार है कि मैं स्कैला जैसी भाषा का उपयोग नहीं कर सकता ... क्योंकि मूर्खता से, यह हाइबरनेट के साथ इतना असंगत है।" - दिलचस्प, क्या आप विस्तारित करेंगे? –

+0

असल में, क्योंकि बहुत से वसंत/हाइबरनेट विधियां ऑब्जेक्ट लेती हैं या लौटती हैं, आपको अपने कोड में इन्स्टेंसऑफ [ब्लेह] के रूप में बहुत कुछ करना होगा। स्कैला संग्रह और जावा संग्रह के बीच एक विसंगति भी है, इसलिए आपको उन्हें बदलने के लिए कुछ अतिरिक्त ब्लोट जोड़ना होगा। यह भी एक प्रदर्शन है। एनोटेशन का उपयोग करते समय, स्कैला को हर पैरामीटर के आस-पास ऐरे (...) का उपयोग करने की आवश्यकता होती है क्योंकि इसमें सिस्टैक्स में कोई भी तत्व तत्व अपवाद नहीं होता है ... जो कुछ चीजों को थोड़ा और अधिक फुलाता है। – egervari

+0

उदाहरण का उपयोग क्यों करें? ऑब्जेक्ट प्रकार पर कोई जानकारी क्यों नहीं जोड़ें? –

उत्तर

3

All abstractions leak। आप grails के लिए अनुबंध पक्ष पर छह आइटम नाम। वसंत के लिए एक। ऐसा लगता है, आप वसंत पसंद करेंगे, तो।

4

आप Play! framework चेकआउट कर सकते हैं। मैं वर्तमान में ऐसे अंगूरों में एक आवेदन पर काम कर रहा हूं जो अच्छी तरह से चल रहा है और वास्तव में नाटक ढांचे के साथ बहुत कुछ नहीं किया है, इसलिए यह आपके लिए काम कर सकता है या नहीं। नाटक ढांचे के हालिया जोड़ों में से एक स्कैला मॉड्यूल है जो आपको स्कैला में कोड करने की अनुमति देता है।

1

मुझे लगता है कि स्प्रिंग/हाइबरनेट/जावा के साथ जाने का एकमात्र तरीका है। स्टार्टअप पर एक बहुत बड़ी लागत है, लेकिन मुझे पता है कि यह अंततः चिकनी हो जाएगा।

तो शायद Spring Roo पर भी देखें (Grails vs Roo - why SpringSource is pushing two very similar technologies? भी पढ़ें)।

+1

हाँ, लेकिन प्रदर्शनों में भी चीजें विफल रहीं ... इसलिए मुझे पता नहीं चला। मैं ग्रहण से भी नफरत करता हूं, और मुझे पता है कि मुझे ग्रहण का उपयोग करने की आवश्यकता नहीं है, लेकिन आखिरी बार मैंने रूई को आईडीईए के साथ काम करने की कोशिश की, यह कोई रास्ता नहीं था। मुझे कच्चे जेएसपी भी पसंद नहीं है। मैं फिलहाल इस परियोजना को स्केल में करने का विचार मनोरंजन कर रहा हूं। – egervari

1

मैं पिछले कुछ वर्षों में कुछ परियोजनाओं पर Grails का उपयोग कर रहा हूं और पाया है कि विकास उत्पादकता लाभ विपक्ष से कहीं अधिक है, और मुझे यह नहीं मिला कि मैं चारों ओर काम नहीं कर सका।

अपने विशिष्ट आपत्तियों में से कुछ के बारे में:

1) बहुत लागू किया जाता है। वे रनटाइम पर सुपर कक्षाओं से विस्तार करने में सक्षम होने लगते हैं। मैंने पर बेस क्रियाओं और सहायक विधियों को जोड़ने की कोशिश की, और ऐसा लगता है कि ऊपर उड़ने के लिए grails का कारण बनता है।

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

2) एक अप्रचलित अनुरोध मानकों मॉडल (बल्कि प्रपत्र समर्थन वस्तुओं से, जो कर रहे हैं पर आधारित होते हैं ज्यादा अच्छे)।

फिर से, एफडब्ल्यूआईडब्ल्यू यह मेरे लिए कोई मुद्दा नहीं रहा है। Grails सभी पैराम अच्छी तरह से एक मानचित्र में संकुल, जो मुझे आमतौर पर जरूरत है। अगर मुझे और चाहिए, तो मैं एक कमांड ऑब्जेक्ट बनाता हूं, जो कि बहुत सरल है।

3) परीक्षण करना मुश्किल है। कमांड ऑब्जेक्ट्स पूरी तरह से अलग तरीके से इलाज किया जाता है ... और परीक्षण लिखने के लिए यह वास्तव में बहुत कठिन है नियंत्रक कोड लिखना है।

grails में Yep- परीक्षण इसके निम्न बिंदुओं में से एक है। मैंने Grails परीक्षण harnesses पूरी तरह से छोड़ दिया है और जीयूआई के माध्यम से परीक्षण स्वचालित करने के लिए सेलेनियम का उपयोग करें। आदर्श नहीं है, लेकिन यह हमारे लिए ठीक काम करता है।

6) उत्पन्न होने वाली मचान शुद्ध बकवास है। यह प्रविष्टियों और अपडेट को सामान्यीकृत नहीं करता है ... और यह वास्तव में दो दृश्यों में कोड का ढेर कॉपी/पेस्ट करता है: create.gsp और edit.gsp। विचार स्वयं doggie do-do के gargantuan ढेर हैं। यह इस तथ्य से मिश्रित है कि यह निम्न-स्तर पैरामीटर का उपयोग करता है और ऑब्जेक्ट्स नहीं।

मुझे वास्तव में मचान को शुरू करने में बहुत मददगार पाया गया है। यह इसे अपने मूल रूप में कभी भी उत्पादन में नहीं बनाता है (कभी-कभी आंतरिक ऐप्स के लिए), लेकिन यह आपके ऐप के मूल बिल्डिंग ब्लॉक विकसित करने में एक टन बचाता है। साथ ही, यदि आप प्रदान किए गए लोगों को पसंद नहीं करते हैं तो आप हमेशा अपने स्वयं के मचान टेम्पलेट्स बना सकते हैं।

एकीकरण परीक्षण से वसंत एकीकरण परीक्षण से 30x धीमी है। यह घृणित है।

कुछ मजाक परीक्षण तो लिखने के लिए कड़ी मेहनत कर रहे हैं और कार्य करने की गारंटी नहीं कर रहे हैं जब यह तैनात है, मुझे लगता है कि यह तेज, TDD परीक्षण चक्र हतोत्साहित करता है।

फिर, हाँ- परीक्षण Grails मजबूत सूट नहीं है।

अधिकांश चीजें grails अप पेंच है, जबकि यह वास्तव में एक taglib, या कुछ भी जोड़ने की तरह, चल रहा है लग रहे हैं। सर्वर पुनरारंभ समस्या को हल नहीं किया गया था।

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

मैं स्प्रिंग/हाइबरनेट/जावा के साथ जा रहा सोचने के लिए शुरू कर एक ही रास्ता जाना है। स्टार्टअप पर एक बहुत बड़ी लागत है, मुझे पता है कि यह अंततः चिकनी हो जाएगी।

न केवल स्टार्टअप पर, बल्कि विकास प्रक्रिया के माध्यम से। मैं अनुमान लगा रहा हूं कि जिन टीमों के साथ मैं काम कर रहा हूं वे 3-5x की दर से उत्पादन-तैयार सुविधाओं का उत्पादन कर रहे हैं क्योंकि हम "पारंपरिक" ढांचे का उपयोग कर सकते थे। यह निश्चित रूप से सभी और प्रत्येक प्रोजेक्ट के लिए नहीं है, और यह सही नहीं है, लेकिन यदि आप प्रोजेक्ट Grails शक्तियों में फिट बैठते हैं तो यह एक बड़ा त्वरक हो सकता है। उस तथ्य को जोड़ें कि आप बड़े पैमाने पर चुन सकते हैं और चुन सकते हैं कि आप कितने Grails का उपयोग करना चाहते हैं (यदि आप चाहते हैं तो वसंत/जे 2 ईई परतों में बनाम बनाम), और मैं इसे "अपना केक लेना और इसे भी खा सकता हूं" विकल्प के रूप में देखता हूं। मेरा 2 सी

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