2012-12-04 14 views
18

पृष्ठभूमि

मैं का उपयोग कर GWT, जावा, और EclipseLink एक वेब अनुप्रयोग विकसित करने के बीच में हूँ। इनमें से प्रत्येक चयन वे विकल्प हैं जिन्हें मैंने इस कार्यक्रम को लागू करने के लिए किया है। जीडब्ल्यूटी एकमात्र विकल्प है जहां वसंत की तरह कुछ की तुलना में इसकी दृढ़ धारणा नहीं है। अभी मैं क्लाइंट और GWT RequestFactory को लागू करने के लिए GWT विजेट का उपयोग करता हूं ताकि ग्रहण लिंक से इकाइयों के सर्वर-क्लाइंट संचार को कार्यान्वित किया जा सके।स्प्रिंग + GWT या वसंत बनाम GWT

दृश्य

तो मैं सर्वर-ग्राहक संचार के लिए एक सरल ढांचे के साथ विजेट की मुख्य रूप से एक पुस्तकालय के रूप में GWT देखने। यह स्प्रिंग, सर्वर-क्लाइंट संचार को नियंत्रित करने के लिए बहुत अधिक उन्नत और जटिल ढांचे के साथ विगेट्स की एक लाइब्रेरी है, जिस तरह से यह एजेक्स को आसानी से जीडब्ल्यूटी के रूप में लागू नहीं करता है।

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

प्रश्न

  1. वहाँ GWT और स्प्रिंग पर दृश्यों के बारे में एक गलत धारणा है? यदि हां, तो इसके बारे में कुछ संक्षिप्त मार्गदर्शन बिंदुओं की बहुत सराहना की जाएगी!
  2. स्प्रिंग फ्रेमवर्क में जीडब्ल्यूटी विजेट्स के प्रति काउंटर-पार्ट क्या होगा?
  3. स्प्रिंग फ्रेमवर्क में जीडब्ल्यूटी अनुरोध फैक्ट्री के लिए काउंटर-पार्ट क्या होगा?
+0

क्या यह प्रोग्रामर स्टैकएक्सचेंज के तहत कोई प्रश्न नहीं होगा? – SSR

+0

1. मुझे लगता है कि आप विशेष रूप से स्प्रिंग एमवीसी के बारे में बात कर रहे हैं। स्प्रिंग कोर लाइब्रेरी एक निर्भरता इंजेक्शन कंटेनर प्रदान करती है जो कि गुइस के बराबर है। – Vikdor

+0

@ सचिनशेखरर मेरा एक हिस्सा था जिसे लगा कि यह प्रोग्रामर.स्टैकएक्सचेंज के तहत जाना था, लेकिन यह सुनिश्चित नहीं था क्योंकि यह प्रोग्रामर पर पोस्ट की गई पोस्ट की तुलना में थोड़ा अधिक विशिष्ट है। – hulkmeister

उत्तर

24

यह वास्तव में इस बात पर निर्भर करता है कि आप अपने आवेदन में GWT का उपयोग करने की योजना कैसे बनाते हैं।

GWT एकल होस्ट पेज वेब-एप्लिकेशन के लिए सबसे अच्छा उपयोग किया जाता है।
इसका मतलब है कि GWT का उपयोग कर क्लाइंट साइड पर सभी प्रवाह सिंक्रनाइज़ेशन और व्यावसायिक तर्क किया जाता है।
यह वह जगह है जहां GWT वास्तव में चमकता है (अधिक जानकारी के लिए here देखें)।

हालांकि यदि आप इस सड़क पर जाते हैं, तो आप मूल रूप से दो अलग-अलग अनुप्रयोगों के साथ समाप्त हो जाएंगे। आपके पास GWT और उदाहरण के लिए वसंत का उपयोग करके बैकएंड के साथ एक फ्रंटेंड विकसित होगा। आपका बैकएंड (स्प्रिंग या जो कुछ भी आप उपयोग करते हैं) केवल "डेटा स्टोरेज" के रूप में कार्य करेगा जो आपको वह डेटा प्रदान करेगा जो आप अपने जीडब्ल्यूटी फ्रंटेंड में प्रदर्शित करने जा रहे हैं। तो आपकी इच्छा शायद Spring MVC's कार्यक्षमता का उपयोग नहीं कर रही है।

बेशक आप Spring MVC का भी उपयोग कर सकते हैं और अपनी साइट पर वेब 2.0ish कार्यक्षमता जोड़ने के लिए केवल जीडब्ल्यूटी का उपयोग कर सकते हैं, लेकिन उस उपयोग के मामले में मैं jQuery, क्लोजर या अन्य जावास्क्रिप्ट फ्रेमवर्क का उपयोग करने की सलाह दूंगा।

आपके प्रश्नों के लिए:

वहाँ GWT और स्प्रिंग पर दृश्यों के बारे में एक गलत धारणा है? यदि ऐसा है, तो इसके बारे में कुछ संक्षिप्त मार्गदर्शक बिंदुओं की बहुत सराहना की जाएगी!

यदि आप GWT का उपयोग करते हैं, तो इसका उद्देश्य है (एकल होस्ट पेज वेब-एप्लिकेशन) तो आप स्प्रिंग के एमवीसी भाग का उपयोग नहीं करेंगे। आप अभी भी प्रमाणीकरण, प्रमाणीकरण, ORM और वसंत ढांचे के कई अन्य घटक का उपयोग कर सकते हैं, हालांकि जीडब्ल्यूटी सभी विचारों को संभालता है।
वसंत आपके जीडब्ल्यूटी फ्रंटएंड ऐप के लिए डेटा संग्रहण के रूप में केवल कम या कम कार्य करता है। यह दो अलग-अलग और अलग-अलग ऐप्स होने जैसा है जो एक संचार प्रोटोकॉल (RequestFactory, REST, RPC, आदि) के माध्यम से जुड़े हुए हैं।

स्प्रिंग फ्रेमवर्क में जीडब्ल्यूटी विजेट्स के प्रति काउंटर-पार्ट क्या होगा?

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

क्या वसंत में GWT RequestFactory को जवाबी हिस्सा होगा फ्रेमवर्क

RequestFactory अपने दृश्यपटल एप्लिकेशन (GWT) और अपने बैकएंड एप्लिकेशन के बीच संचार प्रोटोकॉल है (स्प्रिंग) । जब आप Spring MVC का उपयोग करते हैं तो आपको किसी भी संचार प्रोटोकॉल की आवश्यकता नहीं होती है क्योंकि सर्वर सर्वर पर विचार उत्पन्न होते हैं जहां आपके पास पहले से डेटा होता है।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद! मैंने आपकी दूसरी पोस्ट भी पढ़ी है और यह मुझे एक और सवाल की ओर ले जाती है, जिसे मुझे इस मंच पर किसी अन्य पृष्ठ में तोड़ना पड़ सकता है। मैं इसे पहले आपको पेश करूंगा: मुझे डेस्कटॉप जैसी एप्लिकेशन चाहिए। मैं जीडब्ल्यूटी अनुप्रयोगों के बीच स्विच करने के लिए प्रत्येक जीडब्ल्यूटी पृष्ठ पर आम मेनू तंत्र का उपयोग करना चाहता हूं। क्या यह संभव है? यह जीडब्ल्यूटी का उपयोग करने के बारे में आपके नोट से आता है: सिंगल-होस्ट पेज। – hulkmeister

+0

अलग-अलग जीडब्ल्यूटी ऐप्स के साथ आपका क्या मतलब है? क्या आप एक डेस्कटॉप जैसे ऐप बनाना चाहते हैं जिसमें विभिन्न जीडब्ल्यूटी ऐप्स शामिल हैं? मैं एक जीडब्ल्यूटी ऐप बनाना चाहता हूं जिसमें विभिन्न जीडब्ल्यूटी घटक/विजेट शामिल हैं। लेकिन यदि आपको वास्तव में अलग-अलग GWT ऐप्स की आवश्यकता है तो ऐसा करने के कई तरीके हैं। एक तरीका है कई जीडब्ल्यूटी ऐप्स बनाना (उनमें से प्रत्येक में एंट्रीपॉइंट है) और उनमें से प्रत्येक के पास एक एकल होस्ट पृष्ठ होगा। प्रत्येक जीडब्ल्यूटी ऐप के अंदर आपके पास एक मेनू हो सकता है जिसमें मेन्यू इटम्स शामिल हैं जो मूल रूप से संबंधित एकल होस्ट पृष्ठों (जो कि अनुरूप जीडब्ल्यूटी ऐप्स लोड करते हैं) के लिए हाइपरलिंक्स हैं। –

+0

अलग-अलग जीडब्ल्यूटी ऐप्स द्वारा मेरा मतलब यह है कि आपने 'लेकिन' के बाद इसका वर्णन किया है - जैसा कि इस विचार के लिए मेरे पास है। मैं आपसे सहमत हूं कि मेरे पास एक ही जीडब्ल्यूटी ऐप होगा जिसमें विभिन्न घटक/विजेट होंगे। मेरे पास वर्तमान स्थिति है जो मेरे पृष्ठ पर एक बटन है जो वर्तमान में प्रदर्शित होने वाले सभी विजेट मिटा देता है, और उपयोगकर्ता को भरने के लिए एक फॉर्म (या घटकों/विगेट्स का एक नया सेट) लोड करता है। आपके अनुभव में, क्या यह सामान्य रूप से जीडब्ल्यूटी डेवलपर्स जीडब्ल्यूटी एप्लीकेशन के विभिन्न हिस्सों या 'पृष्ठों' के बीच नेविगेट करते हैं? – hulkmeister

2

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

ने कहा कि, अपने GWT एप्लिकेशन के आधार पर, आप कम या ज्यादा तर्क सर्वर साइड में और ddbb, वसंत, आदि

जब GWT या किसी अन्य ढांचे का चयन करने के बारे में निर्णय की तरह अन्य तत्वों की जरूरत सकता है, इस पर निर्भर करता है कि आपको ब्राउज़र में चल रहे एक समृद्ध (डेस्कटॉप जैसे) एप्लिकेशन की आवश्यकता है या नहीं।

तार्किक रूप से आप किसी भी स्तर की जटिलता में जीडब्ल्यूटी और वसंत को मिश्रित कर सकते हैं, लेकिन तार्किक तरीका वसंत को डेटा मॉडल और उसके व्यावसायिक तर्क की जिम्मेदारी देना है, और जीडब्ल्यूटी बाकी कर रहा है।

इस संयोजन को सीखने का सबसे अच्छा तरीका Spring-roo से उत्पन्न एक छोटी परियोजना की खोज कर रहा है। यह मैवेन, वसंत, जीडब्ल्यूटी, एमवीपी और आरएफ के लिए सभी सेट के साथ एक पूरी परियोजना बना सकता है। बस 1.2 1.2 स्थापित करें।2 और Roo कंसोल में आदेशों के इस सेट चलाएँ:

project --topLevelPackage com.project.contacts 
persistence setup --provider ECLIPSELINK --database HYPERSONIC_PERSISTENT 
database properties set --key database.url --value jdbc:hsqldb:/var/tmp/contacts.db 
entity jpa --class com.project.contacts.domain.Contact --testAutomatically 
field string name --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact 
field string surname --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact 
field string phone --notNull --sizeMin 1 --sizeMax 15 --class ~.domain.Contact 
web gwt setup 
web gwt all --proxyPackage ~.client.proxy --requestPackage ~.client.request 
quit 

फिर

mvn gwt:run 

मुख्य समस्या मैं Roo के साथ देख निष्पादित कि यह AspectJ 'का उपयोग करता है प्रबंधित वर्गीकृत अद्यतन करने के लिए जब आप संशोधित है मॉडल, लेकिन एक बार आपकी प्रोजेक्ट की स्थापना के बाद ग्रहण का उपयोग करके आप आरयू निर्भरता और पहलू फाइलों को हटा सकते हैं।

+0

धन्यवाद! मैं इसे आज़माउंगा और देख सकता हूं कि मैं क्या समझता हूं। – hulkmeister

+0

उदाहरण बहुत ही निर्देशक है, मैं 'gwt all' लाइन ढूंढ रहा था जिसे कहीं भी दस्तावेज नहीं किया गया है। धन्यवाद। –

0

अपने बैकएंड के लिए ऑब्जेक्टिफ़ देखें। रास्ता आसान है।