2011-04-30 8 views
8

ऑफ़लाइन काम करने के लिए एप्लिकेशन लिखते समय और ऑनलाइन ऑफ़लाइन काम करने के लिए इसे लिखना सबसे अच्छा है और ऑनलाइन मोड ऑफलाइन के समान काम करेगा?ऑफ़लाइन काम करने के लिए एक एप्लिकेशन लिखना (वेब ​​एप्लिकेशन)

उदाहरण के लिए देखते हैं कि हमारे पास एक सामान्य शॉपिंग कार्ट उदाहरण है। एक शॉपिंग कार्ट में आइटम और ग्राहक होते हैं।

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

उत्तर

7

किसी ऑनलाइन/ऑफ़लाइन मोड में काम करने के लिए एक वेब-एप लिखना वास्तव में किसी भी "सामान्य" सर्वर-संचालित वेब ऐप को लिखने जैसा है, अपवाद के साथ कि आपके पास डेटा एक्सेस लेयर (डीएएल) है जो आपके बीच बैठती है ऐप और डेटा सर्वर (ऑनलाइन मोड) या ब्राउज़र के डेटा (ऑफ़लाइन मोड) पर रह रहे डेटा।

एप्लिकेशन और इसकी ज़रूरतों के आधार पर, आप 2 मोड में से एक में चला सकते हैं: ए।) एक कैश-एंड-ट्राई-अप-बेस्ट मोड या बी।) लोड-सब कुछ-एंड-चेक-फॉर- अपडेट मोड

इन दो तरीकों में से प्रत्येक में कुछ अच्छे और कुछ बुरे हिस्से हैं, और आप निश्चित रूप से अपने आवेदन के विभिन्न हिस्सों को एक तरफ या दूसरे को दुबला कर सकते हैं।

कैश-एंड-की कोशिश-your-सबसे अच्छा मोड

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

लोड-सब कुछ और जाँच के लिए अद्यतन मोड

इस मामले में, दाल भार डेटा एप्लिकेशन ब्राउज़र जब अनुप्रयोग शुरू होता है में की जरूरत के सभी। यदि ऐप पहले ही लोड हो चुका है, तो यह सुनिश्चित करने के लिए कि कैश खराब नहीं है, सभी डेटा को अपडेट किया जाना चाहिए। ऊपर की तरफ, उपयोगकर्ता को चीजों को करने के लिए बहुत लंबा इंतजार नहीं करना पड़ता है, क्योंकि सब कुछ एक स्थानीय ऑपरेशन है, लेकिन नीचे की तरफ, यदि बहुत सारे डेटा हैं, तो स्टार्ट-अप समय हो सकता है बल्कि लंबे समय।

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

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

सामान्य रूप से, यदि आपके पास एक ऐप है जो ऑन-ऑफ़-लाइन दोनों हो सकता है, तो ऐप लिखें ताकि ऐप को स्वयं परवाह करने की आवश्यकता न हो। एक निम्न-स्तरीय डेटा परत सभी समस्याओं को दूर करता है, और आपके ऐप को केवल यह जानने की आवश्यकता होती है कि वह किस जानकारी को प्राप्त करने में सक्षम नहीं है (जो कि कोई भी अच्छा ऐप, ऑन-ऑफ़लाइन या ऑफ़लाइन करना चाहिए)।

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

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