ठीक है, मैं खुद का जवाब दे सकता हूं।
CalDAV
CalDAVWebDAV के शीर्ष पर एक प्रोटोकॉल है जो HTTP प्रोटोकॉल का ही विस्तार है। CalDAV का वर्णन RFC 4791 में किया गया है। यह डेटा प्रारूप के रूप में iCalendar का उपयोग करता है। बहुत सारे कार्यान्वयन हैं।
विवादों के बारे में CalDAV 409 Conflicts
स्थिति कोड (HTTP 1.1) का उपयोग करता है। जहां तक मुझे पता है, क्लाइंट को इस त्रुटि कोड से निपटना है, iCal (मैक क्लाइंट) बस स्थानीय परिवर्तनों को उलट देता है। फिर, सर्वर में नियमों को परिभाषित करना काफी आसान है कि अगर संघर्ष हो तो क्या करना है, यदि आप उनमें से किसी एक को हल नहीं कर सकते हैं, तो हमें केवल 409
स्थिति कोड भेजने की आवश्यकता है।
मानक के रूप में, CalDAV कैलेंडर डेटा प्रबंधित करने के लिए समर्पित है, और बहुत से ग्राहक हैं।
दुर्भाग्य से, एंड्रॉयड, किसी भी देशी समाधान इस प्रोटोकॉल का उपयोग करने के प्रदान नहीं करता है वास्तव में यह Exchange ActiveSync (गूगल द्वारा उपयोग) की तुलना में कुछ और प्रदान नहीं करता है। लेकिन एंड्रॉइड मार्केट पर कई CalDAV क्लाइंट हैं।
आईओएस का CalDAV का मूल समर्थन है।
SyncML
तुल्यकालन Mrkup भाषा डेटा, नोकिया, आईबीएम, जैसी प्रमुख कंपनियों द्वारा बनाई प्रबंधन करने के लिए एक मंच स्वतंत्र तुल्यकालन भाषा है ... यह एक खुला मानक है। यह सूचना का वर्णन करने के लिए HTTP और परिवहन के रूप में एक्सएमएल का उपयोग करता है। उदाहरण के लिए एक विभिन्न सर्वर कार्यान्वयन, Funambol एक अच्छी तरह से पता है।
SyncML सात सिंक्रनाइज़ेशन में बताता है:
- दो-तरफा सिंक: परिवर्तन के बारे में दोनों सर्वर और ग्राहक की जानकारी साझा करता है, लेकिन ग्राहक पहले जो परिवर्तन भेज है,
- धीमी सिंक: ग्राहक अपना सभी डेटा भेजता है। सर्वर अपने डेटा और क्लाइंट के डेटा के बीच डेल्टा निर्धारित करता है, तो सर्वर इस डेल्टा भेजता है। यह अक्सर पहले सिंक्रनाइज़ेशन पर प्रयोग किया जाता है;
- एक तरफा सिंक, क्लाइंट केवल: क्लाइंट सर्वर में परिवर्तन भेजता है;
- क्लाइंट से सिंक रीफ्रेश करें: क्लाइंट अपना सभी डेटा भेजता है, सर्वर अपना सभी डेटा भेजता है;
- एक तरफा सिंक, सर्वर केवल: सर्वर क्लाइंट में परिवर्तन भेजता है;
- सर्वर से सिंक रीफ्रेश करें: सर्वर अपने सभी डेटा भेजता है, क्लाइंट सर्वर के डेटा द्वारा अपने डेटा को प्रतिस्थापित करता है;
- सर्वर ने सिंक को चेतावनी दी: सर्वर क्लाइंट को दिए गए सिंक्रनाइज़ेशन को शुरू करने के लिए कहता है।
SyncML Updates mades on the Client always win
, Updates mades on the Client always win
तरह पूर्वनिर्धारित नियमों का एक सेट के साथ सर्वर पर conflits संभालती है, ...
SyncML डेटा सिंक्रनाइज़ के लिए समर्पित है लेकिन न तो आईओएस है और न ही एंड्रॉयड यह समर्थन करते हैं। नोकिया या सैमसंग स्मार्टफोन इस प्रोटोकॉल के साथ-साथ विंडोज फोन 6 का समर्थन करते हैं।
तो?
माइक्रोसॉफ्ट एक्सचेंज ActiveSync लगभग सभी स्मार्टफोन और भारी ग्राहकों का समर्थन करने का सबसे अच्छा विकल्प है। लेकिन, यह एक खुला मानक नहीं है, और यह वाणिज्यिक है, और मैंने इन कारणों से इसका वर्णन नहीं किया है, बस इसे याद रखें।
मोबाइल आपरेटिंग सिस्टम के बारे में:
- एंड्रॉयड ActiveSync से कुछ और का समर्थन नहीं करता है, लेकिन कुछ अच्छा CalDAV ग्राहकों मौजूद हैं;
- आईओएस CalDAV का समर्थन करता है लेकिन सिंकएमएल का समर्थन नहीं करता है, और जहां तक मुझे पता है, कैलेंडर डेटा के लिए कोई सिंकएमएल क्लाइंट नहीं है (Funambol संपर्कों के लिए क्लाइंट प्रदान करता है);
- विंडोज फोन 7 ActiveSync से कुछ और समर्थन नहीं करता है;
- आरआईएम (ब्लैकबेरी) CalDAV का समर्थन नहीं करता है लेकिन सिंकएमएल क्लाइंट हैं;
- मुझे अन्य ओएस (जैसे बाडा, ...) के बारे में निश्चित नहीं है।
फ्रांस में, आईओएस मोबाइल फोन के बाजार के 60% का प्रतिनिधित्व करता है, और एंड्रॉयड 30% है।
सबसे अच्छा समाधान (कम से कम मेरे लिए), संघर्ष को संभालने के लिए कस्टम नियमों के एक सेट के साथ एक CalDAV सर्वर को कार्यान्वित करके शुरू करना है, और फिर शेष बाजार को कवर करने के लिए एक सिंकएमएल सर्वर को कार्यान्वित करना है।
मुझे नहीं लगता कि आप CalDAV के साथ संघर्ष कैसे संभाल सकते हैं। मैंने जो देखा है उससे कभी भी '40 9 संघर्ष' नहीं है। इसके बजाए, क्लाइंट (आईओएस/डीएवीड्रॉइड) धक्का देने से पहले सिंक्रनाइज़ ('PROPRIND' /' REPORT') सिंक्रनाइज़ करें ('PUT')। तो यदि सर्वर पर एक नया कैलेंडर ऑब्जेक्ट है, तो यह स्थानीय परिवर्तन को ओवरराइट करता है। इस मामले में, ग्राहक कभी स्थानीय परिवर्तन के बारे में सर्वर को सूचित नहीं करता है! तो घटना भागीदारी जैसे बदलावों को पूरी तरह से अनदेखा किया जा सकता है और सर्वर-साइड पर इसका निपटारा करने का कोई तरीका नहीं है ... – KrisWebDev