Welche wichtigen ASIHTTPRequest-Funktionen fehlen bei AFNetworking?
Mit die arbeiten haben vor kurzem aufgehört, auf ASIHTTPRequestwie es scheint, die Aufmerksamkeit verlagert sich auf die AFNetworking.
Aber ich habe noch keinen gefunden, der einen guten Vergleich der features der beiden Bibliotheken, so dass ich nicht weiß, was ich verlieren könnte, wenn ich Umschalten.
Großen Unterschiede, die ich gesehen habe sind bisher:
- AFNetworking hat eine viel kleinere code-Größe (das ist gut)
- AFNetworking wird schnell verbessert (also kann es noch nicht reif ist, kann nicht über eine stabile API noch?)
- Scheinen beide zu haben, Zwischenspeichern, obwohl ich schon Hinweise gesehen, dass da AFNetworking verwendet NSURLConnection es nicht cache-Objekte über 50K
- ASIHTTPRequest hat sehr gute Unterstützung für die manuelle & automatic (PAC) http-Proxys; ich kann nicht finden alle Informationen auf, welche Ebene der Unterstützung AFNetworking hat für Proxys
- AFNetworking erfordert iOS 4+, in der Erwägung, dass ASIHTTPRequest funktioniert sofort wieder auf iOS 2 (nicht wirklich ein Problem für mich, aber es ist ein Problem für einige Menschen)
- AFNetworking nicht (noch) eine eingebaute persistenten cache, aber es gibt einen persistenten cache, die eine ausstehende pull-request: https://github.com/gowalla/AFNetworking/pull/25
Hat jemand gesehen keine guten Vergleiche der beiden Bibliotheken oder jede dokumentierte Erfahrungen des Wechsels von einem zum anderen?
InformationsquelleAutor der Frage JosephH | 2011-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich liebte ASIHTTPRequest und ich war traurig zu sehen, es gehen. Doch die Entwickler von ASI war richtig, ASIHTTPRequest ist mittlerweile so groß und aufgebläht, dass selbst er konnte nicht widmen die Zeit, um es zu par mit den neuesten Funktionen von iOS und anderen frameworks. Ich zog auf und nun verwenden AFNetworking.
Sagte, ich muss sagen, dass AFNetworking ist viel instabiler als ASIHTTP, und für die Dinge, die ich benutze es für, es Bedarf der Verfeinerung.
Brauche ich oft, um HTTP-Anforderungen zu 100 HTTP-Quellen, bevor ich meine Ergebnisse auf dem Bildschirm, und ich habe AFHTTPNetworkOperation in einer operation queue. Bevor alle Ergebnisse heruntergeladen werden, ich will in der Lage sein zu brechen Sie alle Operationen in der Operations-Warteschlange und dann schließen Sie die Ansicht-controller, der die Ergebnisse festhält.
Dass das nicht immer funktioniert.
Bekomme ich Abstürze zu zufälligen Zeiten mit AFNetworking, während mit ASIHTTPRequest, diese Operationen funktionierten einwandfrei. Ich wünschte, ich könnte sagen, welcher bestimmte Teil des AFNetworking abstürzt, wie es stürzt an unterschiedlichen stellen (allerdings meist nur mal den debugger Punkte der NSRunLoop, schafft ein NSURLConnection-Objekt). So, AFNetworking braucht, um zu Reifen, um als so vollständig wie ASIHTTPRequest war.
Auch, ASIHTTPRequests unterstützt die client-Authentifizierung, die AFNetworking fehlt im moment. Der einzige Weg, es zu implementieren, um eine Unterklasse AFHTTPRequestOperation und überschreiben NSURLConnection ist Authentifizierungsmethoden. Allerdings, wenn Sie ein Einstieg mit NSURLConnection, werden Sie feststellen, dass die Inbetriebnahme NSURLConnection innen eine NSOperation wrapper schreiben und Fertigstellung der Blöcke ist nicht so hart wie es klingt, und Sie beginnen, denken Sie, was hält Sie von dumping 3rd-party-Bibliotheken.
ASI nutzt einen ganz anderen Ansatz, da es verwendet CFNetworking (lower-level-foundation-frameworks, basierend auf C) stellen Sie Download-und Datei-Upload möglich, überspringen NSURLConnection vollständig, und berühren Konzepte die meisten von uns-OS-X-und iOS-Entwickler zu viel Angst, um. Weil dieses, erhalten Sie einen besseren Datei-Upload-und Download, auch web-Seiten-caches.
Welche ich bevorzuge? Es ist schwer zu sagen. Wenn AFNetworking reift genug, ich mag es mehr als ASI. Bis dann, ich kann nicht helfen aber bewundern ASI, und die Art und Weise wurde es zu einem der am meisten verwendeten frameworks aller Zeit für OS X und iOS.
EDIT:
Ich denke, es ist Zeit zu aktualisieren, diese Antwort, wie die Dinge haben sich ein wenig geändert, nach diesem post.
Dieser Beitrag wurde geschrieben vor einiger Zeit, und AFNetworking ausgereift genug. 1-2 Monaten AF veröffentlicht ein kleines update für POST-Operationen " das war meine Letzte Beschwerde über den Rahmen (eine kleine Zeilenende Fehler war der Grund dafür, dass echonest uploads fehlgeschlagen mit AF aber abgeschlossen wurden gut mit ASI). Authentifizierung ist nicht ein Problem mit AFnetworking, als für komplexe Authentifizierungs-Methoden Sie können eine Unterklasse der Betrieb und machen Sie Ihre eigenen Anrufe und AFHTTPClient macht basic-Authentifizierung ein Stück Kuchen. Indem bilden von Unterklassen AFHTTPClient können Sie die gesamten service-consumer in wenig Zeit.
Nicht zu vergessen die absolut notwendigen UIImage Ergänzungen, die AFNetworking-Angebote. Mit Blöcken und benutzerdefinierte Fertigstellung der Blöcke und einigen cleveren Algorithmus, können Sie Tabelle Ansichten mit asynchronen Bild herunterladen und cell-filling ziemlich leicht, in der Erwägung, dass in ASI mussten Sie machen die Bedienung der Warteschlangen für Bandbreiten-Drosselung und Geist selbst zum Abbrechen und fortsetzen der Operations-Warteschlange gemäß Tabelle, Sicht, und so ein Zeug. Die Entwicklungszeit solcher Operationen hat sich halbiert.
Liebe ich auch den Erfolg und Misserfolg Blöcke. ASI hat nur ein Abschluss-block (was ist eigentlich der Abschluss-block von NSOperation). Sie hatte zu prüfen, ob Sie hatte einen Fehler im Abschluss und entsprechend zu handeln. Für komplexe web-services, Sie könnten verloren gehen in all die "wenns" und "elses"; In AFNetworking, sind die Dinge viel einfacher und intuitiver.
ASI war großartig für seine Zeit, aber mit AF können Sie ändern, wie Sie mit web-services wird komplett in einem guten Art und Weise, und machen, skalierbare Applikationen leichter. Ich glaube wirklich, dass es keinen Grund zu halten mit ASI mehr, es sei denn, Sie möchten den Gegner iOS 3 und darunter.
InformationsquelleAutor der Antwort csotiriou
Nur finishing ein Projekt, wo ich mit AFNetworking statt ASI. Verwendet haben ASI auf früheren Projekten auf, es war eine große Hilfe in der Vergangenheit.
Hier ist, was AFNetworking fehlt (wie heute), die Sie kennen sollten:
ASI Weg geht. AF verwenden jetzt. Es ist klein, es funktioniert, und es wird auch weiterhin unterstützt werden. Es ist auch organisiert, logisch, speziell für API-clients. Es hat eine Reihe von großen Klassen, die für den oft verwendeten besonderen Fällen, wie asynchrones laden von Bildern in Tabelle Aussicht.
InformationsquelleAutor der Antwort Jeff
AFNetworking nicht unterstützt clientCertificateIdentity und clientCertificates für die TLS-client-Authentifizierung.
Können wir tun, dass mit der
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Methode in einer Unterklasse von AFURLConnectionOperation aber es ist nicht so einfach.InformationsquelleAutor der Antwort Mathieu Hausherr
Habe ich mit ASI* für eine Weile jetzt, und ich Liebe die fileupload-Ansatz von ASI, und wenn ich aufgeregt bin, um zu springen, AFNetworking, fileupload Unterstützung in AfNetworking ist nicht so einfach zu verwenden im Vergleich zu ASI*.
InformationsquelleAutor der Antwort Teo Choong Ping
Bis jetztich konnte nicht herausfinden, wie man ein timeout mit AFNetworking, wenn dabei ein synchron-POST-Anforderung. UPDATE: ich endlich herausgefunden: https://stackoverflow.com/a/8774125/601466Jetzt die Umstellung auf AFNetworking : ]
==================
Apple überschreibt den timeout für einen POST, wenn er auf 240 Sekunden (falls es gesetzt war kürzer als die 240 Sekunden), und Sie können es nicht ändern. Mit ASIHTTP Sie stellen nur einen timeout und es funktioniert.
Ein code-Beispiel mit einer synchronen Anforderung POST:
Ich versuchte, zu einem timeout hier, aber nichts funktionierte. Dieses Problem hält mich von Migration zu AFNetworking.
Siehe auch hier: Wie man ein timeout mit AFNetworking
InformationsquelleAutor der Antwort borisdiakur
AFNetwork fehlt die Fähigkeit, größere Dateien hochzuladen. Es meint die Datei-Inhalte im RAM.
ASI war klug genug, um einfach Datei-stream-Inhalte von der Festplatte.
InformationsquelleAutor der Antwort rosstulloch
In ASIHTTP ich liebte, die ich anbringen könnte eine userinfo-Wörterbuch auf individuelle Anfragen. Soweit ich sehe, gibt es keine direkte Unterstützung für das in
AFHTTPRequestOperation
. Hat jemand einen eleganten workaround noch? Abgesehen von der trivialen Unterklassen natürlich.InformationsquelleAutor der Antwort Lvsti
AFNetworking arbeiten mit "Blöcken", die natürlich mehr für mich als das arbeiten mit Delegierten, wie ASIHTTPRequest tut.
Arbeiten mit Blöcken arbeiten wie mit Anonymen Funktionen in javascript.
InformationsquelleAutor der Antwort torhector2