ASIHTTPRequest'i çok sevdim ve gittiğini görmek beni üzdü. Ancak ASI'nin geliştiricisi haklıydı, ASIHTTPRequest o kadar büyük ve şişkin hale geldi ki, onu iOS ve diğer çerçevelerin en yeni özellikleriyle eşit seviyeye getirmek için zaman ayıramadı bile. Devam ettim ve şimdi AFNetworking kullanıyorum.
Bununla birlikte, AFNetworking'in ASIHTTP'den çok daha istikrarsız olduğunu söylemeliyim ve onu kullandığım şeyler için iyileştirmeye ihtiyacı var.
Sonuçlarımı ekranda görüntülemeden önce genellikle 100 HTTP kaynağına HTTP istekleri yapmam gerekiyor ve AFHTTPNetworkOperation'ı bir işlem kuyruğuna koydum. Tüm sonuçlar indirilmeden önce, işlem kuyruğundaki tüm işlemleri iptal edebilmek ve ardından sonuçları tutan görünüm denetleyicisini kapatabilmek istiyorum.
Bu her zaman işe yaramaz.
AFNetworking ile rastgele zamanlarda çökmeler alıyorum, ASIHTTPRequest ile bu işlemler kusursuz çalışıyordu. Keşke farklı noktalarda çökmeye devam ettiği için AFNetworking'in hangi belirli bölümünün çöktüğünü söyleyebilseydim (ancak, çoğu zaman hata ayıklayıcı bir NSURLConnection nesnesi oluşturan NSRunLoop'u işaret eder). Bu nedenle, ASIHTTPRequest'in olduğu kadar eksiksiz olarak kabul edilebilmesi için AFNetworking'in olgunlaşması gerekir.
Ayrıca ASIHTTPRequests, AFNetworking'de şu anda eksik olan istemci kimlik doğrulamasını destekler. Bunu uygulamanın tek yolu, AFHTTPRequestOperation'ın alt sınıfını oluşturmak ve NSURLConnection'ın kimlik doğrulama yöntemlerini geçersiz kılmaktır. Bununla birlikte, NSURLConnection ile ilgilenmeye başlarsanız, NSURLConnection'ı bir NSOperation sarmalayıcısının içine koymanın ve tamamlama blokları yazmanın göründüğü kadar zor olmadığını fark edeceksiniz ve sizi 3. parti kitaplıklardan neyin alıkoyduğunu düşünmeye başlayacaksınız.
ASI, indirmeyi ve dosya yüklemeyi mümkün kılmak için CFNetworking'i (C'ye dayalı alt düzey temel çerçeveleri) kullandığından, NSURLConnection'ı tamamen atladığından ve çoğumuz OS X ve iOS geliştiricilerinin çok korktuğu kavramlara dokunduğundan, tamamen farklı bir yaklaşım kullanır. Bu nedenle, daha iyi dosya yükleme ve indirme, hatta web sayfası önbellekleri elde edersiniz.
Hangisini tercih ederim? Söylemesi zor. AFNetworking yeterince olgunlaşırsa, onu ASI'den daha çok seveceğim. O zamana kadar, ASI'ye ve OS X ve iOS için tüm zamanların en çok kullanılan çerçevelerinden biri haline gelmesine yardımcı olamıyorum ama hayranlık duyuyorum.
DÜZENLEME:
Bu gönderiden sonra işler biraz değiştiği için bu cevabı güncellemenin zamanı geldiğini düşünüyorum.
Bu gönderi bir süre önce yazıldı ve AFNetworking yeterince olgunlaştı. 1-2 ay önce AF, çerçeveyle ilgili son şikayetim olan POST işlemleri için küçük bir güncelleme yayınladı (yankılanan yüklemelerin AF ile başarısız olmasına karşın ASI ile iyi tamamlanmış olmasının nedeni küçük bir satır sonu hatasıydı). Kimlik doğrulama, AFnetworking ile ilgili bir sorun değildir, çünkü karmaşık kimlik doğrulama yöntemlerinde, işlemi alt sınıflandırabilir ve kendi aramalarınızı yapabilirsiniz ve AFHTTPClient, temel kimlik doğrulamayı çocuk oyuncağı haline getirir. AFHTTPClient'i alt sınıflayarak, kısa sürede tüm bir hizmet tüketicisi yapabilirsiniz.
AFNetworking'in sunduğu kesinlikle gerekli UIImage eklentilerinden bahsetmiyorum bile. Bloklar ve özel tamamlama blokları ve bazı akıllı algoritmalarla, asenkron görüntü indirme ve hücre doldurma ile tablo görünümlerini oldukça kolay bir şekilde yapabilirsiniz, oysa ASI'de bant genişliği daraltma için işlem kuyrukları oluşturmanız ve işlem kuyruğunu buna göre iptal edip devam ettirmeniz gerektiğine dikkat etmeniz gerekir. tablo görünümü görünürlüğü ve bunun gibi şeyler. Bu tür işlemlerin geliştirme süresi yarıya indirildi.
Başarı ve başarısızlık engellerini de seviyorum. ASI'nin yalnızca bir tamamlama bloğu vardır (bu aslında NSOperation'ın tamamlama bloğudur). Tamamladığınızda bir hata olup olmadığını kontrol etmeli ve buna göre hareket etmelisiniz. Karmaşık web hizmetleri için, tüm "ifs" ve "elses" içinde kaybolabilirsiniz; AFNetworking'de işler çok daha basit ve sezgiseldir.
ASI, zamanı için harikaydı, ancak AF ile web hizmetlerini tamamen iyi bir şekilde işleme şeklinizi değiştirebilir ve ölçeklenebilir uygulamaları daha kolay yapabilirsiniz. İOS 3 ve altını hedeflemek istemiyorsanız, artık ASI'ye bağlı kalmak için hiçbir neden olmadığına gerçekten inanıyorum.
ASIFallbackToCacheIfLoadFailsCachePolicy
çok iyi. Ve bence AFNetworking'in kalıcı bir önbellek desteği yok. Bu benim için olmaz.