RequestFactory के विपरीत जिसमें खराब त्रुटि से निपटने और परीक्षण क्षमताएं हैं (चूंकि यह GWT के हुड के तहत अधिकांश सामान की प्रक्रिया करता है), RPC आपको अधिक सेवा उन्मुख दृष्टिकोण का उपयोग करने की अनुमति देता है। RequestFactory एक और अधिक आधुनिक निर्भरता इंजेक्शन स्टाइल दृष्टिकोण को लागू करता है जो कि एक उपयोगी दृष्टिकोण प्रदान कर सकता है यदि आपको जटिल पॉलीमॉर्फिक डेटा संरचनाओं को लागू करने की आवश्यकता है। आरपीसी का उपयोग करते समय आपकी डेटा संरचनाओं को अधिक सपाट होना होगा, क्योंकि इससे आपके मार्शलों को आपके जसन / xml और जावा मॉडल के बीच अनुवाद करने की सुविधा मिलेगी। RPC का उपयोग करने से आप Google की वेबसाइट पर gwt dev सेक्शन के हवाले से अधिक मजबूत आर्किटेक्चर को लागू कर सकते हैं।
"सरल क्लाइंट / सर्वर परिनियोजन
सेवा परिभाषाओं के बारे में सोचने का पहला और सबसे सरल तरीका यह है कि आप उन्हें अपने एप्लिकेशन के संपूर्ण बैक एंड के रूप में मानें। इस दृष्टिकोण से, क्लाइंट-साइड कोड आपका "फ्रंट एंड" है और सर्वर पर चलने वाला सभी सर्विस कोड "बैक एंड" है। यदि आप इस दृष्टिकोण को लेते हैं, तो आपकी सेवा कार्यान्वयन अधिक सामान्य-उद्देश्य वाले एपीआई होंगे जो एक विशिष्ट अनुप्रयोग के साथ युग्मित नहीं हैं। आपकी सेवा परिभाषाओं में संभवतः JDBC या हाइबरनेट या सर्वर फाइल सिस्टम में मौजूद फ़ाइलों के माध्यम से सीधे डेटाबेस तक पहुँचने की संभावना होगी। कई अनुप्रयोगों के लिए, यह दृश्य उपयुक्त है, और यह बहुत कुशल हो सकता है क्योंकि यह स्तरों की संख्या को कम करता है।
मल्टी-टीयर तैनाती
अधिक जटिल, बहु-स्तरीय आर्किटेक्चर में, आपकी जीडब्ल्यूटी सेवा परिभाषाएं हल्के गेटवे हो सकती हैं जो जे 2 ईई सर्वर जैसे बैक-एंड सर्वर वातावरण के माध्यम से कॉल करती हैं। इस दृष्टिकोण से, आपकी सेवाओं को आपके एप्लिकेशन के उपयोगकर्ता इंटरफ़ेस के "सर्वर आधा" के रूप में देखा जा सकता है। सामान्य प्रयोजन के बजाय, सेवाएं आपके उपयोगकर्ता इंटरफ़ेस की विशिष्ट आवश्यकताओं के लिए बनाई गई हैं। आपकी सेवाएं "बैक एंड" वर्गों के लिए "फ्रंट एंड" बन जाती हैं, जो कि एक साथ कॉल करके लिखी जाती हैं, जो सेवाओं के अधिक सामान्य-उद्देश्य बैक-एंड लेयर पर कॉल की जाती हैं, उदाहरण के लिए, J2EE सर्वर के क्लस्टर के रूप में। यदि आपके HTTP सर्वर से शारीरिक रूप से अलग कंप्यूटर पर चलने के लिए आपको अपनी बैक-एंड सेवाओं की आवश्यकता है, तो इस तरह की वास्तुकला उपयुक्त है। "
यह भी ध्यान दें कि एकल अनुरोध सेवा की स्थापना के लिए लगभग 6 या जावा वर्ग बनाने की आवश्यकता होती है, जहाँ RPC के लिए केवल 3. आवश्यकता होती है 3. अधिक कोड == मेरी पुस्तक में अधिक त्रुटियाँ और जटिलता।
रिक्वेस्ट प्रोसेसिंग के दौरान रिक्वेस्ट फैक्ट्री में भी थोड़ा अधिक ओवरहेड होता है, क्योंकि इसमें डेटा प्रॉक्सि और वास्तविक जावा मॉडल्स के बीच मार्शलाइजेशन होता है। यह जोड़ा इंटरफ़ेस अतिरिक्त प्रसंस्करण चक्र जोड़ता है जो वास्तव में एक उद्यम या उत्पादन वातावरण में जोड़ सकता है।
मैं यह भी नहीं मानता कि RequestFactory सेवाएँ RPC सेवाओं की तरह क्रमबद्धता हैं।
सभी कुछ समय के लिए दोनों का उपयोग करने के बाद, मैं हमेशा अपने अधिक हल्के, परीक्षण और डिबग के रूप में आरपीसी के साथ जाता हूं, और फिर एक RequestFactory का उपयोग करके। हालाँकि RequestFactory अधिक सुरुचिपूर्ण और एक्स्टेंसिबल हो सकता है फिर इसका RPC काउंटर भाग। जोड़ा जटिलता यह एक बेहतर उपकरण आवश्यक नहीं है।
मेरी राय है कि सबसे अच्छा आर्किटेक्चर दो वेब ऐप, एक क्लाइंट और एक सर्वर का उपयोग करना है। सर्वर एक साधारण हल्का जेनेरिक जावा वेबप है जो सर्वलेट.जर लाइब्रेरी का उपयोग करता है। ग्राहक GWT है। आप क्लाइंट वेब एप्लिकेशन के सर्वर साइड में GWT-RPC के माध्यम से RESTful अनुरोध करते हैं। क्लाइंट का सर्वर साइड सिर्फ एक पास है, हालांकि http क्लाइंट को अपाचे करने के लिए जो आपके सर्वर सर्वलेट वेब एप्लिकेशन में सिंगल सर्वलेट के रूप में चल रहा है। सर्वलेट वेब एप्लिकेशन में आपके डेटाबेस एप्लिकेशन की परत (हाइबरनेट, सेयेन, एसक्यूएल आदि शामिल होनी चाहिए।) यह आपको वास्तविक क्लाइंट से डेटाबेस ऑब्जेक्ट मॉडल को पूरी तरह से तलाक देने की अनुमति देता है जो आपके एप्लिकेशन को विकसित करने और इकाई परीक्षण करने के लिए बहुत अधिक व्यापक और मजबूत तरीका प्रदान करता है। दी कि इसके लिए प्रारंभिक सेटअप समय की एक बिट की आवश्यकता होती है, लेकिन अंत में आपको GWT के बाहर बैठकर एक गतिशील अनुरोध कारखाना बनाने की अनुमति मिलती है। यह आपको दोनों दुनिया के सर्वश्रेष्ठ का लाभ उठाने की अनुमति देता है। Gwt क्लाइंट को संकलित या बनाने के लिए बिना अपने सर्वर साइड में परीक्षण करने और परिवर्तन करने में सक्षम होने का उल्लेख नहीं है।