2008-09-18 7 views
8

मेरी वर्तमान परियोजना पर, हम पिछले कुछ सालों से स्ट्रूट्स 1 का उपयोग कर रहे हैं, और ... आह ... स्ट्रूट्स अपनी उम्र दिखा रहा है। हम धीरे-धीरे हमारे फ्रंट-एंड कोड को अजाक्स क्लाइंट में माइग्रेट कर रहे हैं जो सर्वर से एक्सएमएल का उपभोग करता है। मैं सोच रहा हूं कि आप में से कोई भी एक विरासत स्ट्रैट्स एप्लिकेशन को एक अलग ढांचे में माइग्रेट कर चुका है, और ऐसा करने में आपको क्या चुनौतियों का सामना करना पड़ा।क्या कोई स्ट्रैट्स 1 से दूसरे वेब फ्रेमवर्क में माइग्रेट हुआ है?

उत्तर

7

निश्चित रूप से। स्ट्रैट्स से एजेक्स फ्रेमवर्क में स्थानांतरित करना एक बहुत ही स्वतंत्र अनुभव है। (हालांकि हमने XML के बजाय JSON का उपयोग किया था। पार्स करना बहुत आसान है।) हालांकि, आपको यह पता होना चाहिए कि यह प्रभावी रूप से आपके एप्लिकेशन का पूर्ण पुनर्लेखन है।

एमवीसी के लिए क्लासिक डाटाबेस/जेएसपी/एक्शन योजना के बजाय, आप स्वयं को सर्वलेट/जावास्क्रिप्ट योजना में ले जायेंगे, जिससे मॉडल HTTP जीईटी अनुरोधों द्वारा प्रतिनिधित्व किया जाता है, कार्यों को POST/PUT/DELETE अनुरोधों द्वारा दर्शाया जाता है, और दृश्य वेब ब्राउज़र द्वारा फ्लाई पर प्रदान किया जाता है। इससे प्रत्येक क्षेत्र में दिलचस्प चुनौतियों का कारण बनता है:

सर्वर साइड - सर्वर पक्ष पर आपको क्लाइंट को डेटा उजागर करने के लिए मानक विकसित करने की आवश्यकता होगी। सबसे आसान और आसान तरीका REST पद्धति को अपनाना है जो आपके डेटा के पदानुक्रम से सर्वोत्तम मेल खाता है। यह सर्वलेट्स के साथ कार्यान्वित करने के लिए काफी सरल है, लेकिन सूर्य ने बहुत अच्छे लगने वाले विशेषताओं का उपयोग करके Java 1.6 scheme विकसित किया है।

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

JSON विश्लेषण करना और इसके परिणामों में अधिक संगत होना बहुत आसान है। जावास्क्रिप्ट और एक्शनस्क्रिप्ट (फ्लैश) दोनों जेएसओएन को ऑब्जेक्ट्स पर सीधे अनुवाद कर सकते हैं। यह डेटा को x.y या x [y] का एक साधारण मामला एक्सेस करता है। कल्पना की जाने वाली प्रत्येक भाषा में JSON को संभालने के लिए बहुत सारे एपीआई भी हैं। क्योंकि यह पार्स करना इतना आसान है, यह लगभग एक्सएमएल की तुलना में बेहतर है!

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

निम्नतम स्तर से, आपकी टीम को जावास्क्रिप्ट विकास पर उपचारात्मक प्रशिक्षण की आवश्यकता होगी। Javascript Client Guide से शुरू करें। यह डी फैक्टो भाषा पर जानकारी का स्रोत है। जावास्क्रिप्ट पर अगला स्टॉप Douglas Crockford's videos है। मैं जो कुछ कहना चाहता हूं उससे सहमत नहीं हूं, लेकिन वह भाषा के कुछ विशेषज्ञों में से एक है।

एक बार जब आप इसे प्राप्त कर लेंगे, तो विचार करें कि क्या फ्रेमवर्क, यदि कोई है, तो आप इसका उपयोग करना चाहते हैं। आम तौर पर, मैं प्रोटोटाइप और मुट्टूल जैसी चीजों को नापसंद करता हूं। वे एक साधारण समस्या लेते हैं और इसे और भी खराब करते हैं। कोई भी कम नहीं, आप इन उपकरणों का मूल्यांकन करने के लिए स्वतंत्र महसूस कर सकते हैं और यह तय कर सकते हैं कि वे आपके लिए काम करेंगे या नहीं।

यदि आपको बिल्कुल लगता है कि आप ढांचे के बिना नहीं जी सकते हैं क्योंकि आपकी टीम बहुत अनुभवहीन है, तो GWT बिल फिट हो सकता है। जीडब्ल्यूटी आपको जावा कोड में डीएचटीएम वेब ऐप्स को जल्दी से लिखने की अनुमति देता है, फिर उन्हें जावास्क्रिप्ट में संकलित करता है। समस्या यह है कि आप ऐसा करके लचीलापन की भारी मात्रा में छूट दे रहे हैं। जावास्क्रिप्ट भाषा जीडब्ल्यूटी एक्सपोज़ की तुलना में कहीं अधिक शक्तिशाली है।हालांकि, जीडब्ल्यूटी ने जावा डेवलपर्स को तेजी से गति देने की अनुमति दी है। तो अपनी लड़ाई चुनें।

वे प्रमुख क्षेत्र हैं जिनके बारे में मैं सोच सकता हूं। मैं कह सकता हूं कि एक बार जब आप अपने आवेदन से बाहर निकल जाएंगे तो आप राहत का आह्वान करेंगे। यह एक जानवर का थोड़ा सा हो सकता है। विशेष रूप से यदि आपके अनुभवहीन डेवलपर आपके स्ट्रूट मॉडल पर काम कर रहे हैं। :-)

कोई प्रश्न?

संपादित करें 1: मैं यह जोड़ना भूल गया कि आपकी टीम को W3C specs धार्मिक रूप से अध्ययन करना चाहिए। ये आधुनिक ब्राउज़र में आपके लिए उपलब्ध एपीआई हैं। यदि आप डीओएम 0 एपीआई (जैसे दस्तावेज़ .forms ['myform'] का उपयोग कर किसी को पकड़ते हैं। Bl.valElementById ("blah") के बजाय blah.value। मूल्य) उन्हें पूरे डोम 1 विनिर्देश को ट्रांसक्रिप्ट करने के लिए मजबूर करें जब तक कि वे इसे शीर्ष न समझें नीचे तक।

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

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

डीएचटीएम कोड इसके दस्तावेज़ीकरण में थोड़ा और शास्त्रीय है। JavaDoc-style दस्तावेज़ बनाने के लिए आप JSDoc जैसे टूल का उपयोग कर सकते हैं। केवल एक चेतावनी है। जावास्क्रिप्ट कोड कोड में दस्तावेज होने के लिए खुद को उधार नहीं देता है। यदि किसी अन्य कारण के लिए यह तथ्य नहीं है कि यह डाउनलोड को फटकारता है। हालांकि, आप नियमित रूप से कोड लिख सकते हैं जो एक समेकित वस्तु के रूप में कार्य करता है, लेकिन दृश्यों के पीछे इस तरह की वस्तु के रूप में कोडित नहीं किया जाता है। इस प्रकार सबसे अच्छा समाधान जेएसडीओसी कंकाल फाइलें बनाना है जो जावास्क्रिप्ट ऑब्जेक्ट्स का प्रतिनिधित्व और दस्तावेज करते हैं।

यदि आप जीडब्ल्यूटी का उपयोग कर रहे हैं, तो दस्तावेज़ एक ब्रेनर होना चाहिए।

+0

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

2

Stripes Framework देखें। यदि आप स्ट्रेट्स से परिचित हैं तो पट्टियां आपको समझ में आ जाएंगी, लेकिन यह बहुत बेहतर है। उनके पास उनकी वेबसाइट पर Stripes vs Struts अनुभाग है। आप इसे देख सकते हैं और देख सकते हैं कि यह आपकी रूचि रखता है या नहीं। यह आपको किसी भी AJAX फ्रेमवर्क के साथ काम करने की अनुमति देता है, और मुझे नहीं लगता कि स्ट्रैट्स से पट्टियों तक माइग्रेट करने में लंबा समय लगेगा।

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