ios8 - ¿Cuál es la mayor diferencia entre NSURLConnection y NSURLSession?
cfnetwork (3)
Todo el modelo es diferente. NSURLSession está diseñado en base a la suposición de que tendrá muchas solicitudes que necesitan una configuración similar (conjuntos de encabezados estándar, etc.) y le facilita la vida si lo hace.
NSURLSession también proporciona soporte para descargas en segundo plano, lo que hace posible continuar descargando recursos mientras la aplicación no se está ejecutando (o cuando está en segundo plano en iOS). Para algunos casos de uso, esto también es una gran victoria.
NSURLSession también proporciona agrupación de solicitudes relacionadas, lo que facilita la cancelación de todas las solicitudes asociadas con una unidad de trabajo en particular, como la cancelación de todas las cargas asociadas con la carga de una página web cuando el usuario cierra la ventana o pestaña.
NSURLSession también proporciona interfaces más agradables para solicitar datos mediante bloques, ya que le permite combinarlos con métodos de delegación para realizar el manejo de autenticación personalizado, el manejo de redirección, etc., mientras que con NSURLConnection, si de repente se dio cuenta de que necesitaba hacer esas cosas, Tuve que refactorizar su código para no usar devoluciones de llamadas basadas en bloques.
NSURLSession es el nuevo SDK de red que NSURLConnection de Apple. La tercera opción antigua es CFNetwork.
La pregunta aquí es descubrir la mayor diferencia entre ellos para comprender por qué Apple está evolucionando de esta manera.
Gracias
Diferencia entre NSURLSession y NSURLConnection
SESIÓN
NOTA : (NSURLConneciton está en desuso en OS X 10.11 y iOS 9.0)
1) NSURLSession está diseñado teniendo en cuenta que tendrá muchas solicitudes que necesitan una configuración similar (conjuntos de encabezados estándar, etc.), y hace la vida mucho más fácil.
2) NSURLSession también proporciona soporte para descargas en segundo plano, lo que hace posible continuar descargando recursos mientras la aplicación no se está ejecutando o cuando está en segundo plano en iOS.
3) NSURLSession también proporciona una agrupación de solicitudes relacionadas, por lo que es fácil cancelar todas las solicitudes asociadas con una unidad de trabajo en particular, como cancelar todas las solicitudes asociadas con una unidad de trabajo en particular, como cancelar todas las cargas asociadas con la carga de una web página cuando el usuario cierra la ventana o pestaña
4) NSURLSession también proporciona interfaces más agradables para solicitar datos mediante bloques, n que le permite combinarlos con métodos de delegado para realizar el manejo de autenticación personalizado, el manejo de redireccionamiento, etc.
NSURLSessionConfiguration Types
1) defaultSessionConfiguration
Creates a default configuration object that uses the disk-persisted global cache, credential and cookie storage objects.
2) Configuración de sesión efímera
Similar to the default configuration, except that all session-related data is stored in memory. Think of this as a “private” session.
3) backgroundSessionConfiguration
Lets the session perform upload or download tasks in the background. Transfers continue even when the app itself is suspended or terminated
Tipos de Tareas de NSURLSession
1) Tareas de datos (NSURLSessionDataTask)
Las tareas de datos se utilizan para solicitar datos de un servidor, como los datos JSON. Estos datos generalmente se almacenan en la memoria y nunca tocan el sistema de archivos. Podemos usar NSURLSessionDataTask.
2) Tareas de carga (NSURLSessionUploadTask)
Las tareas de carga se utilizan para cargar datos a un destino remoto. Podemos utilizar NSURLSessionUploadTask.
3) Descargar tareas (NSURLSessionDownloadTask)
Descarga de un archivo y almacenamiento en una ubicación temporal. Podemos utilizar NSURLSessionDownloadTask.
Diferencia principal entre NSURLSession y NSURLConnection
NSURConexión:
Si tenemos una conexión abierta con NSURLConnection y el sistema interrumpe nuestra aplicación, cuando nuestra aplicación pasa al modo de fondo, todo lo que hemos recibido o enviado se perdió.
SESIÓN
Resuelve este problema y también nos da las descargas fuera de proceso. Gestiona el proceso de conexión incluso cuando no tenemos acceso. Necesitarás usar
application:handleEventsForBackgroundURLSession:completionHandler in your AppDelegate
Para obtener información detallada, consulte la diferencia entre NSURLSession y NSURLConnection
NSURConexión
Un grupo de los componentes interrelacionados que forman el sistema de carga de URL de la Fundación: NSURLRequest, NSURLResponse, NSURLProtocol, NSURLCache, NSHTTPCookieStorage, NSURLCredentialStorage y su homónimo, NSURLConnection
Los objetos NSURLRequest se pasan a un objeto NSURLConnection. El delegado (de acuerdo con los antiguos protocolos e informales) responde de forma asíncrona como un NSURLResponse, y cualquier NSData asociado se envía desde el servidor
Antes de enviar una solicitud al servidor, se consulta la memoria caché compartida y, según la política y la disponibilidad, se puede devolver una respuesta almacenada en caché de forma inmediata y transparente. Si no hay una respuesta en caché disponible, la solicitud se realiza con la opción de almacenar en caché su respuesta para cualquier solicitud posterior. En el proceso de negociar una solicitud a un servidor, ese servidor puede emitir un desafío de autenticación, que se maneja automáticamente mediante el almacenamiento compartido de credenciales o cookies, o por el delegado de conexión. Las solicitudes salientes también pueden ser interceptadas por un objeto NSURLProtocol registrado para cambiar sin problemas el comportamiento de carga según sea necesario.
SESIÓN
se refiere a un grupo de clases interdependientes, además de la clase homónima NSURLSession. NSURLSession se compone de las mismas piezas que antes, con NSURLRequest, NSURLCache y similares, pero reemplaza NSURLConnection con NSURLSession, NSURLSessionConfiguration y tres subclases de NSURLSessionTask: NSURLSessionDataTask, NSURLSessionUploadTask y
NSURLSessionTask es una subclase abstracta, con tres subclases concretas que se usan directamente: NSURLSessionDataTask, NSURLSessionUploadTask y NSURLSessionDownloadTask. Estas tres clases encapsulan las tres tareas de red esenciales de las aplicaciones modernas: recuperar datos, como JSON o XML, y cargar y descargar archivos.