मुझे क्षमा करें यदि निम्नलिखित बहुत सामान्य लगता है, लेकिन मैंने इसे उच्च स्तर रखने की कोशिश की ताकि यह आपके प्रश्न के अनुरूप हो। मुझे नहीं पता कि आप जो खोज रहे हैं उसे प्रति "डिजाइन पैटर्न" कहा जाएगा। ऐसा लगता है कि आप सिंक्रनाइज़ेशन पैराडाइम/सिस्टम की तलाश में हैं। नोट, इस प्रतिक्रिया में मेरी धारणा यह है कि आपको अपने आवेदन के लिए ऑनलाइन और ऑफलाइन क्षमता दोनों की आवश्यकता है (क्योंकि आपने स्पष्ट रूप से सिंक्रनाइज़ेशन का उल्लेख किया है।) यदि मुझे गलत है, तो कृपया मुझे बताएं।
विशेष रूप से, जो आप शायद खोज रहे हैं वह आम तौर पर दो चीजों का उपयोग करके लागू किया जाता है: 1) एक "वितरित" डेटाबेस, (जो क्लाइंट अनुप्रयोगों जैसे ऑफ़लाइन मोबाइल ऐप्स के साथ-साथ किसी भी सर्वर पर ऑफ़लाइन काम करता है) और 2) एक सिंक्रनाइज़ेशन और संघर्ष संकल्प तंत्र।
इसका एक बहुत अच्छा उदाहरण स्रोत कोड प्रबंधन उपकरण गिट है। गिट में उपर्युक्त दोनों विशेषताएं हैं। सबसे पहले, यह एक डेटाबेस (उदाहरण के लिए एक गिट प्रोजेक्ट की फाइल सिस्टम) का उपयोग करता है जो वितरित करने योग्य है (उदाहरण के लिए प्रोजेक्ट को एक डेवलपर के वर्कस्टेशन से दूसरे पर क्लोन किया जा सकता है और स्वतंत्र रूप से काम किया जा सकता है।) दूसरा, इसमें सिंक्रनाइज़ेशन और टकराव रिज़ॉल्यूशन तंत्र के लिए एक तंत्र है। ऐसा कहने के लिए, यदि मैं एक सहयोगी के वर्कस्टेशन से सिंक्रनाइज़ करने (जैसे परिवर्तनों को खींचने) का प्रयास करता हूं, तो उसके कोड और मेरे कोड के बीच अंतर विलय हो सकता है (या तो स्वचालित रूप से या हाथ से।)
एक और उदाहरण, और शायद अधिक प्रासंगिक आपका आवेदन, Evernote है। अगर मुझे गलत नहीं लगता है, तो Evernote दस्तावेजों को सिंक्रनाइज़ करने के लिए समान प्रकार के प्रतिमान (एक फ्लैट फ़ाइल डेटाबेस) का उपयोग करता है, और इसमें डेस्कटॉप क्लाइंट, एक वेब साइट और मोबाइल क्लाइंट हैं।
यह कहना नहीं है कि आपको एक फ्लैट फ़ाइल डेटाबेस का उपयोग करने की आवश्यकता है। आप बस एक रिलेशनल या अन्य डेटाबेस का आसानी से उपयोग कर सकते हैं। साथ ही, आप किस प्रकार के डेटा को स्टोर और सिंक्रनाइज़ करने का प्रयास कर रहे हैं, इस पर निर्भर करते हुए, आप बहुत ही सरल संघर्ष समाधान से दूर हो सकते हैं। (उदाहरण के लिए, यदि आप केवल स्टेटस अपडेट्स, वोट काउंटर इत्यादि संग्रहीत कर रहे हैं, तो शायद आप डेटाबेस में नवीनतम प्रविष्टि का चयन करें।)
संक्षेप में, मेरे द्वारा उल्लेखित टूल इस तरह का पालन करने लगते हैं वर्कफ़्लो:
- क्लाइंट एप्लिकेशन पर सत्र प्रारंभ करते समय, ऑनलाइन जाकर और नया डेटा खींचकर ग्राहक को सिंक्रनाइज़ या "अपडेट" करें। यह वह जगह है जहां आप क्लाइंट के डेटा और सर्वर या "क्लाउड" पर डेटा के बीच संघर्षों की पहचान और समाधान करते हैं।
- संपादित करें या, ग्राहक पर डेटा "ऑफ़लाइन" बनाने यह हो वेबसाइट, मोबाइल एप्लिकेशन, आदि
- सिंक्रनाइज़ या "अद्यतन" ऑनलाइन जा रहा है और डेटा धक्का द्वारा बादल आप
पर विवरण देता है क्या आपका मतलब है कि एप्लिकेशन के लिए * एप्लिकेशन सेटिंग्स * जो ऑनलाइन उपलब्ध है और विभिन्न उपकरणों पर मूल आवेदन?यदि नहीं, तो आप किस प्रकार की * सेटिंग्स * के बारे में बात कर रहे हैं? यदि हां, तो यह किस प्रकार का एप्लिकेशन है, और क्या आप बस 'सेटिंग्स' को सिंक्रनाइज़ करना चाहते हैं (सामान्य डेटा ऑब्जेक्ट्स की एक छोटी संख्या माना जाता है) या अधिक जटिल एप्लिकेशन डेटा? – Ergwun
हां एप्लिकेशन सेटिंग्स जैसे विभिन्न 'पसंद' और 'नापसंद' विभिन्न चीजों की मूल बातें स्ट्रिंग मूल रूप से होती हैं। एक उपभोक्ता ऐप में विभिन्न ऑनलाइन और ऑफलाइन उपकरणों पर उपलब्ध है। MobileMe की तरह बिट या यहां तक कि Google सिंक भी करता है। गारंटी नहीं दे सकता कि किसी भी डिवाइस को ऑनलाइन और समन्वयित किया जाएगा और प्रत्येक डिवाइस – Dan