मुझे ASIHTTPRequest बहुत पसंद था और मुझे यह देखकर दुख हुआ। हालाँकि, ASI का डेवलपर सही था, ASIHTTPRequest इतना बड़ा और फूला हुआ है कि वह iOS और अन्य फ्रेमवर्क के नए फीचर्स के साथ बराबर लाने के लिए भी समय नहीं दे सका। मैं आगे बढ़ा और अब AFNetworking का उपयोग करता हूं।
उस ने कहा, मुझे कहना होगा कि AFNetworking ASIHTTP की तुलना में बहुत अधिक अस्थिर है, और जिन चीजों के लिए मैं इसका उपयोग करता हूं, उन्हें शोधन की आवश्यकता है।
स्क्रीन पर अपने परिणाम प्रदर्शित करने से पहले मुझे अक्सर 100 HTTP स्रोतों के लिए HTTP अनुरोध करने की आवश्यकता होती है, और मैंने AFHTTPNetworkOperation को एक ऑपरेशन कतार में डाल दिया है। सभी परिणाम डाउनलोड होने से पहले, मैं ऑपरेशन कतार के अंदर सभी कार्यों को रद्द करने में सक्षम होना चाहता हूं और फिर परिणामों को रखने वाले दृश्य नियंत्रक को खारिज कर देता हूं।
वह हमेशा काम नहीं करता है।
मुझे AFNetworking के साथ यादृच्छिक समय पर क्रैश हो जाता है, जबकि ASIHTTPRequest के साथ, यह ऑपरेशन निर्दोष रूप से काम कर रहा था। काश मैं कह सकता हूं कि एफ़एन नेटवर्किंग का कौन सा विशिष्ट हिस्सा दुर्घटनाग्रस्त हो रहा है, क्योंकि यह अलग-अलग बिंदुओं पर दुर्घटनाग्रस्त होता रहता है (हालांकि, इनमें से ज्यादातर डीबगर NSRunLoop को इंगित करता है जो एक NSURLConnection ऑब्जेक्ट बनाता है)। इसलिए, AFNetworking को परिपक्व होने की जरूरत है ताकि ASIHTTPRequest के रूप में पूर्ण माना जा सके।
इसके अलावा, ASIHTTPRequests ग्राहक प्रमाणीकरण का समर्थन करता है, जिसमें AFNetworking का अभाव है। इसे लागू करने का एकमात्र तरीका AFHTTPRequestOperation को उप-वर्ग करना और NSURLConnection के प्रमाणीकरण विधियों को ओवरराइड करना है। हालाँकि, यदि आप NSURLConnection के साथ जुड़ना शुरू करते हैं, तो आप ध्यान देंगे कि NSOLConnection को NSOperation आवरण के अंदर रखना और पूर्ण ब्लॉक लिखना इतना कठिन नहीं है क्योंकि यह आपको लगता है और आप यह सोचना शुरू कर देंगे कि आपको 3rd पार्टी लाइब्रेरीज़ को डंप करने से क्या बचा है।
एएसआई एक पूरी तरह से अलग दृष्टिकोण का उपयोग करता है, क्योंकि यह डाउनलोडिंग और फ़ाइल अपलोडिंग को संभव बनाने के लिए सीएफएन नेटवर्किग (सी-आधारित निचले स्तर की नींव की रूपरेखाओं) का उपयोग करता है, एनएसयूआरसेंक्शन को पूरी तरह से छोड़ देता है, और अवधारणाओं को छूने से ओएस ओएस और आईओएस डेवलपर्स भी बहुत डरते हैं। इस वजह से, आप बेहतर फ़ाइल अपलोडिंग और डाउनलोडिंग, यहां तक कि वेब पेज कैश भी प्राप्त कर सकते हैं।
मुझे कौन सा पसंद है? य़ह कहना कठिन है। यदि AFNetworking पर्याप्त परिपक्व होता है, तो मैं इसे एएसआई से अधिक पसंद करूंगा। तब तक, मैं मदद नहीं कर सकता, लेकिन एएसआई की प्रशंसा करता हूं, और जिस तरह से यह ओएस एक्स और आईओएस के लिए सभी समय के सबसे अधिक उपयोग किए जाने वाले ढांचे में से एक बन गया।
संपादित करें:
मुझे लगता है कि इस उत्तर को अपडेट करने का समय है, क्योंकि इस पोस्ट के बाद चीजें थोड़ी बदल गई हैं।
यह पोस्ट कुछ समय पहले लिखी गई थी, और AFNetworking काफी परिपक्व हो गया है। 1-2 महीने पहले AF ने POST परिचालनों के लिए एक छोटा सा अपडेट पोस्ट किया था जो कि फ्रेमवर्क के बारे में मेरी आखिरी शिकायत थी (एक छोटी सी लाइन में खराबी का कारण यह था कि एकोनस्ट अपलोड AF के साथ विफल हो गए थे लेकिन ASI के साथ ठीक थे)। प्रमाणीकरण AFNetworking के साथ कोई समस्या नहीं है, क्योंकि जटिल प्रमाणीकरण विधियों के लिए आप ऑपरेशन को रद्द कर सकते हैं और अपनी कॉल कर सकते हैं और AFHTTPClient मूल प्रमाणीकरण को केक का एक टुकड़ा बनाता है। AFHTTPClient को उप-वर्ग करके आप थोड़े समय में संपूर्ण सेवा उपभोक्ता बना सकते हैं।
AFNetworking प्रदान करता है कि बिल्कुल आवश्यक UIImage परिवर्धन का उल्लेख नहीं करने के लिए। ब्लॉक और कस्टम पूरा होने के ब्लॉक और कुछ चालाक एल्गोरिथ्म के साथ, आप अतुल्यकालिक छवि डाउनलोडिंग और सेल भरने के साथ टेबल व्यू को बहुत आसानी से बना सकते हैं, जबकि एएसआई में आपको बैंडविड्थ थ्रॉटलिंग के लिए ऑपरेशन कतारें बनानी थीं और ऑपरेशन कतार के अनुसार रद्द करने और फिर से शुरू करने के लिए खुद को मन करना था। टेबल दृश्यता, और सामान की तरह। इस तरह के संचालन का विकास समय आधा कर दिया गया है।
मुझे सफलता और असफलता ब्लॉक भी पसंद है। एएसआई में केवल एक पूरा ब्लॉक है (जो वास्तव में NSOperation का पूरा ब्लॉक है)। आपको यह जांचना था कि क्या आपको पूरा करने में त्रुटि हुई है और तदनुसार कार्य करें। जटिल वेब सेवाओं के लिए, आप सभी "ifs" और "elses" में खो सकते हैं; AFNetworking में, चीजें बहुत अधिक सरल और सहज हैं।
एएसआई अपने समय के लिए बहुत अच्छा था, लेकिन एएफ के साथ आप वेब सेवाओं को पूरी तरह से अच्छी तरह से संभालने के तरीके को बदल सकते हैं, और आसानी से स्केलेबल एप्लिकेशन बना सकते हैं। मेरा वास्तव में मानना है कि एएसआई के साथ चिपके रहने का कोई कारण नहीं है, जब तक कि आप आईओएस 3 और उससे नीचे का लक्ष्य नहीं चाहते हैं।
ASIFallbackToCacheIfLoadFailsCachePolicy
बहुत अच्छा है। और, मुझे लगता है कि AFNetworking के पास कोई निरंतर कैश समर्थन नहीं है। यह मेरे लिए नो-गो है।