दिलचस्प पोस्ट
सी # में एक सार वर्ग के कन्स्ट्रक्टर पिछले और अगले पृष्ठ सीमाओं के साथ ViewPager एक स्ट्रिंग में सबप्रोसेस का पॉप आउट कॉल करें एजेक्स सबमिट करने से पहले jQuery के फॉर्म मान्यकरण एक स्लेटेड साइड के साथ आकार (उत्तरदायी) सी। सीपीपी फ़ाइल में सी ++ टेम्पलेट फ़ंक्शन परिभाषाओं को संग्रहीत करना <Html> और / या <body> पर पृष्ठभूमि को लागू करना एक UITableView में चुटकी बहु स्पर्श इशारों को देखकर Windows PowerShell पथ चर सेट करना कैसे Excel में DataTable निर्यात करने के लिए एजीएक्स का उपयोग कर एक वसंत MVC नियंत्रक के लिए @ अनुरोध में एकाधिक चर पास करना ओपनसीवी 3.0 में गैर-मुक्त मॉड्यूल गायब है किसी अशक्त वस्तु संदर्भ पर आभासी विधि 'डबल एंड्रॉइड। स्थान। स्थान .getLatitude ()' को शुरू करने में त्रुटि कंसोल के बीच अंतर। पढ़ें () और कंसोल.रिडलाइन ()? क्यों Jquery केवल पहली div तत्व को प्रभावित करता है?

एंड्रॉइड के लिए जेडीबीसी बनाम वेब सेवा

क्या कोई मेरी दुविधा पर जवाब देता है जो कि एंड्रॉइड डिवाइस को MySQL या Postgresql से कनेक्ट करने के लिए उपयोग करने का तरीका है?

मैं इसे किसी भी त्रुटि और समस्याओं के बिना दोनों तरफ कर सकता हूं, कोई अंतर नहीं के साथ, लेकिन सभी jdbc ड्राइवर और प्रत्यक्ष कनेक्शन के उपयोग के बजाय वेब सेवा की सिफारिश करते हैं,

क्या कोई कुछ तथ्यों के साथ क्यों समझा सकता है?

संपादित करें: मैंने यह उल्लेख नहीं किया कि यह अधिक सरल है और इसे जेडीबीसी पर कम समय की आवश्यकता है। तो, क्यों वेब सेवा, या क्यों नहीं?

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड के लिए जेडीबीसी बनाम वेब सेवा"

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

वेब सेवा का मुख्य लाभ यह है कि:

  • न्यूनतम राज्य के साथ अल्पकालिक कनेक्शन हैं, इसलिए डिवाइस पर वाईफाई नेटवर्क को स्विच करते समय, सेलुलर से कनेक्ट होने, कनेक्टिविटी थोड़े समय तक खोने, आदि पर वापस जाना आसान है; तथा

  • सभी के माध्यम से लेकिन सबसे भयानक और कठोर वेब परदे के पीछे पारित कर सकते हैं

आप सीधे डायरेक्ट जेडीबीसी कनेक्शन के साथ समस्याओं का सामना करेंगे। एक चुनौती मज़बूती से मृत कनेक्शन का समय है, पुराने सत्रों को पुन: स्थापित करने और रिलीज़ करने वाले ताले (जैसा कि सर्वर तय नहीं कर सकता है कि वह ग्राहक को उसी समय मर चुका है)। एक और पैकेट नुकसान है जिसके कारण बहुत धीमी गति से संचालन, लंबे समय से चलने वाले डाटाबेस लेनदेन, और लॉक ड्यूरेशन और ट्रांजेक्शनल क्लीनअप कार्यों के साथ परिणामी समस्याएं हैं। आप सूरज के नीचे पागल और टूटी हुई प्रॉक्सी और फायरवॉल की हर किस्म को भी पूरा करेंगे – CONNECT समर्थन करने वाले परदे के पीछे, लेकिन फिर सभी ट्रैफ़िक मान सकते हैं कि यह HTTP है और इसे उलझाएँ यदि यह नहीं है; गड़बड़ राज्यपूर्ण कनेक्शन ट्रैकिंग के साथ फ़ायरवॉल जिससे कनेक्शन विफल हो सकते हैं या आधे-खुले ज़ोंबी राज्य पर जा सकते हैं; हर एनएटी समस्या आप कल्पना कर सकते हैं; कैरियर "helpfully" विलंबता को कम करने के लिए टीसीपी एसीके उत्पन्न, पैकेट नुकसान की खोज और खिड़की के आकार के साथ समस्याओं का कारण कभी नहीं; निराला बंदरगाह अवरुद्ध; आदि।

क्योंकि हर कोई HTTP का उपयोग करता है, आप अपेक्षा कर सकते हैं कि वह काम करे – कम से कम, किसी और चीज़ की तुलना में बहुत अधिक बार। यह विशेष रूप से सच है कि आम वेबसाइटों को मोबाइल वेब एप्लिकेशन में भी अभी भी + JSON संचार शैली का उपयोग किया जाता है।

आप अद्वितीय अनुरोध टोकन का इस्तेमाल करते हुए idempotent होने के लिए अपनी वेब सेवा कॉल भी लिख सकते हैं। इससे आपके ऐप को डर नहीं है कि यह दो बार डेटाबेस के खिलाफ एक कार्रवाई करने के बाद संशोधन अनुरोधों को फिर से भेज देगा। Idempotence देखें और idempotence परिभाषित ।

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

मैं कुछ कारणों के बारे में सोच सकता हूँ

  1. आपके डेटाबेस के लिए JDBC एंड्रॉइड ड्राइवर समर्थन
  2. विभिन्न एंड्रॉइड डिवाइसों में कनेक्शन पूलिंग उन्हें मॉनीटर और टोपी करना मुश्किल बनाता है।
  3. डीबी से एंड्रॉइड पर भेजे गए परिणाम सेट बहुत बैंडविड्थ और बैटरी पावर का उपभोग करेगा।
  4. प्रॉक्सी आपके डिवाइस पर HTTP पहुंच की अनुमति देते हैं।
  5. ग्राहक को सीधे अपने डेटाबेस को खोलना सुरक्षा संबंधी निहितार्थ है

वेब सेवा जेडीबीसी कनेक्शन के शीर्ष पर अतिरिक्त सुविधाएं प्रदान कर सकती हैं जैसे प्रमाणीकरण / सेवा की गुणवत्ता / प्राधिकरण / सशर्त प्राप्त अनुरोध / त्रुटि प्रबंधन आदि। इनमें से कोई भी JDBC नहीं कर सकता है।

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

किसी वेबसर्वा या रीस्टाइम एपीआई का इस्तेमाल करना आपके ऐप्लीकेशन को सुरक्षित बनाने के लिए जाने का तरीका है।

एक अन्य विकल्प, सिम्मुट्रिक्स जैसी डेटाबेस सिंक टूल का उपयोग करना होगा।

यह आपको अपने सर्वर पर एक पोस्टग्रेज़ डेटाबेस, और अपने टेबलेट पर एक SQLite डेटाबेस को कहने देगा।

कनेक्शन उपलब्ध होने पर, सममितिक HTTP पर मौजूद डेटाबेस को सिंक्रनाइज़ करेगा। आपको पाठ्यक्रम के पूरे डीबी को सिंक्रनाइज़ करने की ज़रूरत नहीं है, केवल प्रासंगिक भागों

(मैं सममितिकों से संबद्ध नहीं हूं)