एंड्रॉइड ऐप के लिए रिलेशनल डेटाबेस तक सीधे पहुंच के बजाय वेब सेवाओं का उपयोग क्यों करें?


19

मैंने एक दूरस्थ स्थान पर एक केंद्रीय डेटाबेस के लिए एक कुशल तरीके से उपयोग करने के लिए वेब पर खोज की और मुझे डेटाबेस तक सीधे पहुंच (यानी JDBC आदि) के बजाय वेब सेवाओं का उपयोग करने के लिए सुझाव मिले। मुझे आश्चर्य है कि इसका कारण और कोई अन्य सुझाव ।

जवाबों:


25

एक वेब सेवा परत को जोड़ने से आपको अपने ग्राहक को आवश्यक सीपीयू शक्ति और प्रसंस्करण के दौरान उपयोग किए जाने वाले बैंडविड्थ के संदर्भ में अधिक हल्का बनाने का अवसर मिलता है। दोनों कारक अंतिम उपयोगकर्ताओं के लिए अत्यंत महत्वपूर्ण हैं:

  • कम CPU का उपयोग करने से बैटरी की लाइफ बढ़ जाती है,
  • कम बैंडविड्थ का उपयोग करने से मेटार्ड योजनाओं वाले उपयोगकर्ताओं के लिए मासिक भुगतान कम हो जाता है

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

लेकिन रुकिए, आपके लिए भी इसमें कुछ है: सिस्टम को विभाजित करने से आपको अपने व्यावसायिक नियमों, अपने डेटाबेस की संरचना और वहां से बाहर होने वाले संस्करणों पर अधिक नियंत्रण मिलता है। एक बार जब आप एक मोबाइल क्लाइंट को सीधे डेटाबेस से जुड़ने देते हैं, तो आपका डिज़ाइन उस डेटाबेस संरचना से "विवाहित" होता है: लगभग किसी भी परिवर्तन से एक ग्राहक की पिछड़ी संगतता टूट जाएगी जो उसके ऐप को अपग्रेड करने में अनिच्छुक हो सकती है।

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

यदि आप अपनी वेब सेवा को डिज़ाइन करते समय कुछ बहुत ही बुनियादी डिज़ाइन सिद्धांतों का पालन करते हैं, तो आप परिपक्व सर्वर-साइड इन्फ्रास्ट्रक्चर का पुन: उपयोग करके महत्वपूर्ण लाभ प्राप्त कर सकते हैं जो कि:

अंत में, यह आपके डेवलपर्स को उन प्लेटफार्मों पर आपके एप्लिकेशन को उजागर करने के लिए दरवाजा खोल देगा जो आप स्वयं सेवा नहीं कर सकते थे, अंततः आपकी कंपनी के लाभ के लिए खेल रहे थे।


1
"आवश्यक CPU शक्ति और प्रसंस्करण के दौरान उपयोग किए जाने वाले बैंडविड्थ दोनों के संदर्भ में" मैं देख रहा था कीपॉइंट था। धन्यवाद
Yesildal

4
इसके अलावा, यदि आपका ऐप सीधे डेटाबेस से संपर्क करता है, तो आप अपने डेटाबेस में हर तालिका को छोड़ने वाले व्यक्ति से बस एक रिवर्स-कंपाइलर हैं। एक वेब-ऐप के साथ, आप बहुत अधिक महीन
दाने

1
@ एर्लज़: ऐसा नहीं है कि मैं कभी भी इसे वेबप के लिए तैयार नहीं करूंगा, लेकिन अधिकांश डेटाबेस सर्वरों में ठोस और बारीक अनुमति है। ड्रॉप टेबल की अनुमति वाले वेब उपयोगकर्ता के लिए कोई बहाना नहीं।
वायट बार्नेट

1
@YattBarnett ठीक है ... बिना संग्रहीत प्रक्रियाओं और इस तरह, आप किसी उपयोगकर्ता को अपनी उपयोगकर्ता-प्रोफ़ाइल अपडेट करने की अनुमति कैसे देंगे? USERS टेबल के लिए पढ़ने / लिखने की अनुमति ... उन पंक्तियों को हटाने या संपादित करने से क्या रोकेंगे जो उनकी नहीं हैं .. या उन पंक्तियों को भी पढ़ना जो उनकी नहीं हैं। मुझे पूरा यकीन है कि किसी भी डेटाबेस सर्वर में इस तरह का महीन दाना नहीं है, बिना संग्रहीत प्रक्रियाओं या कुछ इस तरह का उपयोग किए बिना
अर्लज़

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

13

यह ऐप और डीबी के बीच अमूर्तता की एक परत डालता है। इससे आपको बहुत सारे लाभ मिलते हैं जैसे:

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

1
एक और फायदा यह है कि आप कैश को या तो क्लाइंट-साइड या सर्वर-साइड (या दोनों, अलग-अलग उद्देश्यों के लिए) जोड़ सकते हैं।
TMN

@TMN - अच्छी बात है!
सिस्टम डाउन

ठीक है, लेकिन ये तथ्य किसी भी प्रकार के वेब अनुप्रयोगों के लिए भी मान्य हैं, क्या वे नहीं हैं? क्या एक परत (वेब ​​सेवाओं) को सम्मिलित करने से मोबाइल ऐप के लिए प्रतिक्रिया समय बढ़ जाता है जो जल्दी से प्रतिक्रिया की उम्मीद करता है?
Yesildal

1
@yesildal - हाँ वे अभी भी मान्य हैं। वास्तव में, वे सभी प्रकार के आवेदन के लिए मान्य हैं। हालाँकि, वेब एप्लिकेशन में आपको वेब सेवाओं का उपयोग करने के लिए नहीं रहना पड़ता है और बस इन कार्यों को अपनी विधानसभा (उदाहरण के लिए) में अलग कर सकते हैं। दूरस्थ एप्लिकेशन (जैसे फ़ोन एप्लिकेशन) के लिए वेब सेवाओं का उपयोग करने का कारण यह है कि DB सर्वर निकटता में नहीं है।
सिस्टम डाउन

@yesildal - पुनः प्रदर्शन: वास्तव में नहीं, यदि आपके पास 1 उपयोगकर्ता है, तो हाँ, परिणाम को वापस करने में एक अतिरिक्त विलंब होगा, लेकिन अगर आपके पास एक लाख उपयोगकर्ता हैं तो चीजें अलग-अलग हैं, और कोड को 2 सर्वर में विभाजित करने से आप बना सकते हैं समग्र प्रदर्शन तेजी से।
gbjbaanb

4

एक और कारण सीधे डीबी को उजागर नहीं करना है - परिवहन। अधिकांश संबंधपरक डेटाबेस, JDBC के साथ एक तरह की बातें जो सार्वजनिक इंटरनेट के लिए डिज़ाइन नहीं की जाती हैं। वायरलेस इंटरनेट उक्त सार्वजनिक इंटरनेट का एक भयानक अविश्वसनीय अंत है। अपवाद हैंडलिंग बुरे सपने होंगे और आप लेन-देन से बचने के लिए अपने ऐप के अंदर वेब सेवाओं की परत को उल्टा लिखना चाहेंगे।

कुछ नए प्रकार के डेटाबेस हैं जो HTTP बोलते हैं और इस तरह की चीज़ के लिए उपयुक्त हो सकते हैं। वे डेटाबेस में एप्लीकेशन कोड ऑफ सॉर्ट करने के तरीके भी बताते हैं। आप काउचडब या रेवेनडब देखना चाह सकते हैं - दोनों ऐसे दस्तावेज़ हैं जो मानचित्र / क्षमताओं को कम करते हैं जो कि कई आधुनिक वेब सेवाओं की तरह, json और http पर काम करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.