2012-01-13 7 views
5

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

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

अन्य दृष्टिकोण (जो मुझे लगता है बेहतर है), Google को उनके आरपीसी विधि कॉल को क्रमबद्ध करने और deserialize करने के लिए उपयोग किया गया विनिर्देश पता करना होगा और कुछ प्रकार की लाइब्रेरी को लागू करना होगा जो आईओएस के लिए एक ही चीज करता है (उद्देश्य-सी में) और एंड्रॉइड। समस्या यह है कि मैं इस एन्कोडिंग मानक के बारे में अच्छा दस्तावेज नहीं ढूंढ पा रहा हूं, न ही मुझे पुस्तकालयों को मिला है जो इसे आईओएस या एंड्रॉइड के लिए कार्यान्वित करते हैं (हालांकि मुझे www.gwtphp.com पर PHP के लिए ऐसा कुछ मिला)।

क्या कोई मुझे किसी विनिर्देश की ओर अग्रसर कर सकता है कि कैसे जीडब्ल्यूटी ने आईओएस और/या एंड्रॉइड के लिए पुस्तकालयों को आरपीसी इंटरफेस को कार्यान्वित करने के लिए उनके ऑब्जेक्ट्स को सीरियलाइज़/डिसेरियलाइज़ किया है?

उत्तर

4

एक "सेवा" परत बनाएं, यानी पीओजेओ वापस करने वाले व्यावसायिक वर्गों का एक सेट बनाएं।

फिर आप आसानी से GWT-RPC और REST सेवा परत को कॉल कर सकते हैं।

यह बहुत आसान और सीधा है। आपकी समस्या यह होगी कि एक व्यापार परत कैसे बनाएं जो केवल पीओजेओ लौटाए। लेकिन यह एक और कहानी है।

2

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

इसके अंत में, डेटा को एन्कोड करने के लिए या तो JSON या XML के साथ एक विश्वसनीय इंटरफेस, आपकी सबसे समर्थित शर्त होगी।

इस रास्ते पर जा रहा का मुख्य लाभ यह है कि वहाँ पहले से ही कर रहे हैं कि बहुत सारे पुस्तकालयों कि serializing/JSON और एक्सएमएल deserializing से निपटने के, और तुम संभव के रूप में लचीला आपकी सेवा रख रहे हैं, जिसका अर्थ है कि आप नहीं हैं पाठ के साथ सौदा करने और वेब अनुरोध (सबसे बुनियादी स्तर पर) बनाने के अलावा उन्हें बहुत अधिक करने की आवश्यकता के द्वारा अपने ग्राहक आधार को सीमित करना।

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

2

जीडब्ल्यूटी-आरपीसी वास्तव में एक खराब विकल्प है जब आप ग्राहकों की तैनाती को नियंत्रित नहीं करते हैं, क्योंकि प्रत्येक बार जब आप अपनी कक्षाओं में बदलाव करते हैं तो ग्राहकों को अपडेट किया जाना चाहिए। यह उन कारणों में से एक है जिसने RequestFactory को विकसित किया है। और यह एंड्रॉइड पर काम करेगा।

उसने कहा, मैं पीटर केनगो से सहमत हूं: एकल सेवा परत के शीर्ष पर प्रोटोकॉल-विशिष्ट सार्वजनिक एपीआई बनाएं।

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

+0

JSON क्रमबद्धरण पर अनुशंसाओं के लिए धन्यवाद। – depthfirstdesigner

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