सबसे पहले, यदि आप एक पंजीकृत आईओएस देव हैं, तो आपको डब्ल्यूडब्ल्यूडीसी 2010 सत्रों तक पहुंच प्राप्त करनी चाहिए। उन सत्रों में से एक जो आप इस बारे में बात कर रहे हैं, उनमें से एक है: "सत्र 117, सर्वर संचालित उपयोगकर्ता अनुभव बनाना"। आपको find it on iTunes पर सक्षम होना चाहिए।
आरईएसटी/जेएसओएन/कोर डेटा का एक स्मार्ट संयोजन एक आकर्षण की तरह काम करता है और यदि आप अपने कोड का पुन: उपयोग करने की योजना बनाते हैं तो एक बड़ा समय बचाने वाला है, लेकिन HTTP के बारे में ज्ञान की आवश्यकता होगी (और कोर डेटा के बारे में ज्ञान, यदि आप चाहते हैं ऐप्स को अच्छी तरह से और सुरक्षित करने के लिए)।
तो कुंजी आरईएसटी और कोर डेटा को समझना है।
समझना REST का मतलब समझना HTTP तरीके (मिलता है, पोस्ट, PUT,, हटाएँ ... HEAD?) और उत्तर-कोड (2xx, 3xx, 4xx, 5xx) और हेडर (Last-Modified, इफ- संशोधित-चूंकि, Etag, ...)
कोर डेटा को समझना मतलब है कि कैसे अपने मॉडल को डिजाइन करना, संबंध स्थापित करना, समय लेने वाली परिचालनों को संभालना, हटाना, आवेषण, अपडेट), और चीजों को कैसे करना है पृष्ठभूमि इसलिए आपका यूआई उत्तरदायी रहता है। और निश्चित रूप से एसक्लाइट पर स्थानीय रूप से पूछताछ कैसे करें (उदाहरण के लिए आईडी को प्रीफ़ेट करने के लिए ताकि आप अपने सर्वर-साइड समकक्ष प्राप्त करने के बाद नए बनाने के बजाय ऑब्जेक्ट्स अपडेट कर सकें)।
आप कार्यों आप का उल्लेख के लिए एक पुन: प्रयोज्य एपीआई को लागू करने की योजना है, तो आप आप आराम और कोर डाटा को समझते हैं, क्योंकि है कि जहां सबसे कोडिंग शायद करना होगा है यह सुनिश्चित करना चाहिये। (मौजूदा एपीआई - ASIHttpRequest नेटवर्क परत (या किसी अन्य) के लिए और किसी भी अच्छे JSON lib (उदाहरण के लिए SBJSON) पार्सिंग के लिए काम करेगा।
कुंजी इस तरह के एक एपीआई सरल बनाने के लिए अपने सर्वर एक RESTful सेवा प्रदान करने के लिए है, और अपने संस्थाओं आवश्यक विशेषताएं (DateCreated, dateLastModified, आदि) तो आप अनुरोध (आसानी से ASIHttpRequest के साथ किया बना सकते हैं पकड़े हुए, वे हो प्राप्त करें, दबाएं, पोस्ट करें, हटाएं) और उपयुक्त एचटीपी-हेडर जोड़ें, उदाहरण के लिए एक सशर्त प्राप्त करने के लिए: अगर संशोधित-के बाद से।
यदि आप पहले से ही कोर डेटा के साथ सहज महसूस करते हैं और जेएसओएन को संभाल सकते हैं और आसानी से HTTP अनुरोध कर सकते हैं और प्रतिक्रियाओं को संभाल सकते हैं (फिर से, ASIHttpRequest यहां बहुत मदद करता है, लेकिन अन्य हैं, या आप निचले स्तर के ऐप्पल एनएस तक रह सकते हैं -क्लास और इसे स्वयं करें), तो आपको केवल अपने अनुरोधों के लिए सही HTTP शीर्षलेख सेट करना होगा, और एचटीपी-रेस्पॉन्स-कोड को उचित रूप से संभालना होगा (मान लें कि आपका सर्वर रीस्ट-फुल है)।
यदि आपका प्राथमिक लक्ष्य किसी सर्वर-साइड समकक्ष से कोर-डेटा इकाई को फिर से अपडेट करने से बचाना है, तो सुनिश्चित करें कि आपके पास अपनी इकाई में "अंतिम-संशोधित" विशेषता है, और एक सशर्त जीईटी करें सर्वर ("अगर-संशोधित-चूंकि" आपकी इकाइयों के लिए "अगर-संशोधित-चूंकि" एचटीपी-हेडर सेट करना "अंतिम-संशोधित" दिनांक। सर्वर उस स्थिति को परिवर्तित नहीं करता है, तो सर्वर स्थिति-कोड 304 (संशोधित नहीं) के साथ प्रतिक्रिया देगा (मान लेना कि सर्वर है REST-ful)। यदि यह बदल गया है, तो सर्वर अंतिम परिवर्तन किए जाने की तारीख तक "अंतिम-संशोधित" एचटीपी-हेडर सेट करेगा, स्थिति-कोड 200 के साथ प्रतिक्रिया देगा और शरीर में संसाधन वितरित करेगा (उदाहरण के लिए JSON में प्रारूप)
तो, हमेशा के रूप में, आपके प्रश्न का उत्तर हमेशा के रूप में 'यह निर्भर करता है'। यह अधिकतर निर्भर करता है कि आप क्या करेंगे आपके पुन: प्रयोज्य करने के लिए यह सभी कोर-डेटा/आराम परत डालने के लिए।
आपको नंबर बताने के लिए: मुझे 6 महीने (मेरे खाली समय में, प्रति सप्ताह 3-10 घंटे की गति से) ले गया, जहां मेरा होना चाहता था, और ईमानदारी से मैं अभी भी refactoring, नामकरण कर रहा हूँ , इसे विशेष उपयोग-मामलों (अनुरोधों को रद्द करना, रोल-बैक इत्यादि) को संभालने और सुगंधित कॉल-बैक (पहुंच क्षमता, नेटवर्क-परत, क्रमबद्धता, कोर डेटा बचत ...) प्रदान करने के लिए,। लेकिन यह बहुत साफ और विस्तृत और अनुकूलित है और उम्मीद है कि मेरे नियोक्ता की सामान्य जरूरतों को पूरा करता है (एकाधिक आईओएस ऐप्स वाले क्लासिफाईड के लिए एक ऑनलाइन बाजार स्थान)। उस समय सीखने, परीक्षण, अनुकूलन, डिबगिंग और लगातार मेरे एपीआई को बदलना शामिल था (पहले कार्यक्षमता जोड़ना, फिर इसे सुधारना, फिर इसे मूल रूप से सरल बनाना, और इसे फिर से डिबग करना)।
यदि टाइम-टू-मार्केट आपकी प्राथमिकता है, तो आप एक सरल और व्यावहारिक दृष्टिकोण से बेहतर हो जाते हैं: पुन: उपयोगिता को याद रखें, केवल सीखने को ध्यान में रखें, और अगली परियोजना में पुन: उपयोग करें, यहां और वहां कोड को ठीक करने और ठीक करने के लिए । अंत में, सभी अनुभवों का योग आपके एपीआई कार्यों और यह प्रदान करता है कि कैसे स्पष्ट दृष्टि में स्पष्ट हो सकता है। यदि आप अभी तक नहीं हैं, तो अपने बजट को परियोजना बजट का हिस्सा बनाने की कोशिश करने के अपने हाथों को रखें, और केवल 3'-पार्टी-पार्टी एपीआई के अधिक स्थिर पुन: उपयोग करने का प्रयास करें।
लम्बे प्रतिक्रिया के लिए खेद है, मुझे लगा कि आप एक सामान्य एपीआई या यहां तक कि ढांचे के निर्माण की तरह कुछ कदम उठा रहे थे। उन चीजों में समय, ज्ञान, हाउसकीपिंग और दीर्घकालिक प्रतिबद्धता होती है, और अधिकांश समय, वे समय बर्बाद कर देते हैं, क्योंकि आप उन्हें कभी खत्म नहीं करते हैं।
यदि आप अपने ऐप के ऑफ़लाइन उपयोग को अनुमति देने और नेटवर्क यातायात को कम करने के लिए विशिष्ट कैशिंग परिदृश्यों को संभालना चाहते हैं, तो आप निश्चित रूप से उन सुविधाओं को लागू कर सकते हैं। बस अपने संशोधित हेडर या ईटैग का निरीक्षण करने के बाद, संशोधित-सेट करें, और उस जानकारी को अपनी सतत संस्थाओं में लगातार रखें ताकि आप बाद में अनुरोधों में इस जानकारी को पुनः सबमिट कर सकें। निस्संदेह मैं उसी HTTP शीर्षकों का उपयोग करके, स्थानीय रूप से छवियों जैसे कैशिंग (लगातार) संसाधनों की भी अनुशंसा करता हूं।
यदि आपके पास सर्वर-साइड सेवा को संशोधित करने की लक्जरी है (तो एकदम सही तरीके से), तो आप ठीक हैं, बशर्ते आप इसे अच्छी तरह कार्यान्वित करें (अनुभव से, आप जितना 3/4 बचा सकते हैं नेटवर्क/पार्सिंग कोड आईओएस-साइड अगर सेवा अच्छी तरह से व्यवहार करती है (उपयुक्त HTTP स्टेटस कोड देता है, शून्य के लिए चेक से बचाता है, तारों से संख्या परिवर्तन, तिथियां, अंतर्निहित तारों के बजाय लुकअप-आईडी प्रदान करता है ...)
यदि आपके पास वह लक्जरी नहीं है, फिर या तो वह सेवा कम से कम REST-ful है (जो बहुत मदद करता है), या आपको चीजों को क्लाइंट-साइड (अक्सर दर्द होता है) को ठीक करना होगा।
डब्ल्यूडब्ल्यूडीसी सत्र का जिक्र करने के लिए धन्यवाद, मैं अभी इसे डाउनलोड कर रहा हूं। मुझे पहले से ही पता है कि एक रेस्ट-फुल एप्लिकेशन के प्रवाह को कैसे संभाला जाए। मैं जो पूछ रहा था वह ऐसा था कि ऐसा प्रयास करने के लिए बहुत अधिक था या नहीं। आपके उत्तर से मैं यह नहीं बता सकता कि क्या आप इस तरह के आर्किटेक्चर के लिए वकील हैं या यदि आप इसका समर्थन करते हैं क्योंकि आपने इस विशिष्ट आर्किटेक्चर का उपयोग करके पहले से ही एक ऐप किया है। क्या आपको स्पष्टीकरण दिमाग है? –
हमेशा की तरह, उत्तर शायद 'यह निर्भर करता है'। – codeclash
मैं अपना उत्तर संपादित करूंगा, टिप्पणी बॉक्स उन कई वर्णों की अनुमति नहीं देता है :-) – codeclash