Saya menyukai ASIHTTPRequest dan saya sedih melihatnya pergi. Namun, pengembang ASI benar, ASIHTTPRequest telah menjadi sangat besar dan membengkak bahkan dia tidak dapat mencurahkan waktu untuk membuatnya setara dengan fitur terbaru iOS dan kerangka kerja lainnya. Saya pindah dan sekarang menggunakan AFNetworking.
Meskipun demikian, saya harus mengatakan bahwa AFNetworking jauh lebih tidak stabil daripada ASIHTTP, dan untuk hal-hal yang saya gunakan, perlu penyempurnaan.
Saya sering kali perlu membuat permintaan HTTP ke 100 sumber HTTP sebelum saya menampilkan hasil saya di layar, dan saya telah meletakkan AFHTTPNetworkOperation ke dalam antrian operasi. Sebelum semua hasil diunduh, saya ingin dapat membatalkan semua operasi di dalam antrian operasi dan kemudian menutup pengontrol tampilan yang menyimpan hasil.
Itu tidak selalu berhasil.
Saya mengalami crash secara acak dengan AFNetworking, sementara dengan ASIHTTPRequest, operasi ini bekerja dengan sempurna. Saya berharap saya bisa mengatakan bagian tertentu dari AFNetworking yang crash, karena terus crash pada titik yang berbeda (namun, sebagian besar kali ini debugger menunjuk ke NSRunLoop yang membuat objek NSURLConnection). Jadi, AFNetworking harus matang agar dianggap selengkap ASIHTTPRequest dulu.
Juga, ASIHTTPRequests mendukung otentikasi klien, yang tidak dimiliki AFNetworking saat ini. Satu-satunya cara untuk mengimplementasikannya adalah dengan subclass AFHTTPRequestOperation dan mengganti metode otentikasi NSURLConnection. Namun, jika Anda mulai terlibat dengan NSURLConnection, Anda akan melihat bahwa meletakkan NSURLConnection di dalam pembungkus NSOperation dan menulis blok penyelesaian tidak sesulit kedengarannya dan Anda akan mulai berpikir apa yang membuat Anda tidak membuang pustaka pihak ketiga.
ASI menggunakan pendekatan yang sangat berbeda, karena menggunakan CFNetworking (kerangka kerja dasar tingkat rendah berdasarkan C) untuk memungkinkan pengunduhan dan pengunggahan file, melewatkan NSURLConnection sepenuhnya, dan menyentuh konsep yang kebanyakan dari kita pengembang OS X dan iOS terlalu takut untuk melakukannya. Karena itu, Anda mendapatkan pengunggahan dan pengunduhan file yang lebih baik, bahkan cache halaman web.
Mana yang saya sukai? Sulit untuk mengatakannya. Jika AFNetworking cukup matang, saya akan menyukainya lebih dari ASI. Sampai saat itu, saya tidak bisa tidak mengagumi ASI, dan cara ini menjadi salah satu kerangka kerja yang paling banyak digunakan sepanjang masa untuk OS X dan iOS.
EDIT:
Saya pikir sudah waktunya untuk memperbarui jawaban ini, karena banyak hal telah berubah sedikit setelah posting ini.
Postingan ini ditulis beberapa waktu lalu, dan AFNetworking sudah cukup matang. 1-2 bulan yang lalu AF memposting pembaruan kecil untuk operasi POST yang merupakan keluhan terakhir saya tentang kerangka kerja (kesalahan akhir baris kecil adalah alasan mengapa unggahan echonest gagal dengan AF tetapi diselesaikan dengan baik dengan ASI). Otentikasi bukanlah masalah dengan AFnetworking, karena untuk metode otentikasi yang kompleks Anda dapat melakukan subkelas operasi dan membuat panggilan Anda sendiri dan AFHTTPClient membuat otentikasi dasar menjadi sangat mudah. Dengan subclass AFHTTPClient Anda dapat membuat seluruh layanan konsumen dalam waktu singkat.
Belum lagi tambahan UIImage yang benar-benar diperlukan yang ditawarkan AFNetworking. Dengan blok dan blok penyelesaian khusus dan beberapa algoritma pintar, Anda dapat membuat tampilan tabel dengan pengunduhan gambar asinkron dan pengisian sel dengan cukup mudah, sedangkan di ASI Anda harus membuat antrean operasi untuk pelambatan bandwidth dan memikirkan diri Anda sendiri untuk membatalkan dan melanjutkan antrean operasi sesuai dengan visibilitas tampilan tabel, dan hal-hal seperti itu. Waktu pengembangan operasi semacam itu telah dibelah dua.
Saya juga menyukai penghambat kesuksesan dan kegagalan. ASI hanya memiliki satu blok penyelesaian (yang sebenarnya merupakan blok penyelesaian NSOperation). Anda harus memeriksa apakah Anda memiliki kesalahan dalam penyelesaian dan bertindak sesuai. Untuk layanan web yang kompleks, Anda bisa tersesat di semua "jika" dan "lainnya"; Dalam AFNetworking, segala sesuatunya jauh lebih sederhana dan intuitif.
ASI sangat bagus untuk masanya, tetapi dengan AF Anda dapat mengubah cara Anda menangani layanan web sepenuhnya dengan cara yang baik, dan membuat aplikasi yang dapat diskalakan dengan lebih mudah. Saya sangat percaya bahwa tidak ada alasan apa pun untuk tetap menggunakan ASI, kecuali jika Anda ingin menargetkan iOS 3 ke bawah.
ASIFallbackToCacheIfLoadFailsCachePolicy
sangat bagus. Dan, menurut saya AFNetworking tidak memiliki dukungan cache yang persisten. Ini adalah larangan bagi saya.