Какая самая большая разница между NSURLConnection и NSURLSession

ios8 nsurlconnection nsurlsession cfnetwork

30158 просмотра

3 ответа

NSURLSession - это новый сетевой SDK, чем NSURLConnection от Apple. 3-й старый выбор - CFNetwork.

Вопрос здесь заключается в том, чтобы выяснить самую большую разницу между ними, чтобы понять, почему Apple развивается именно так.

Спасибо

Автор: Forrest Источник Размещён: 12.11.2019 09:14

Ответы (3)


38 плюса

Вся модель отличается. NSURLSession разработан исходя из предположения, что у вас будет много запросов, которым требуется аналогичная конфигурация (стандартные наборы заголовков и т. Д.), И сделает вашу жизнь намного проще, если вы это сделаете.

NSURLSession также обеспечивает поддержку фоновых загрузок, которые позволяют продолжить загрузку ресурсов, когда ваше приложение не запущено (или когда оно работает в фоновом режиме на iOS). Для некоторых случаев использования это также крупный выигрыш.

NSURLSession также обеспечивает группировку связанных запросов, что позволяет легко отменить все запросы, связанные с конкретным рабочим модулем, например, отменить все загрузки, связанные с загрузкой веб-страницы, когда пользователь закрывает окно или вкладку.

NSURLSession также предоставляет более приятные интерфейсы для запроса данных с использованием блоков, так как позволяет комбинировать их с методами делегатов для выполнения настраиваемой обработки аутентификации, обработки перенаправления и т. Д., Тогда как с NSURLConnection, если вы вдруг поняли, что вам нужно сделать эти вещи, вы пришлось реорганизовать ваш код, чтобы не использовать обратные вызовы на основе блоков.

Автор: dgatwood Размещён: 23.08.2015 10:01

13 плюса

NSURLConnection

Группа взаимосвязанных компонентов, которые образуют базовую систему загрузки URL: NSURLRequest, NSURLResponse, NSURLProtocol, NSURLCache, NSHTTPCookieStorage, NSURLCredentialStorage и ее тезка NSURLConnection

Объекты NSURLRequest передаются объекту NSURLConnection. Делегат (в соответствии с прежним неформальным протоколом) асинхронно отвечает как NSURLResponse, и любые связанные NSData отправляются с сервера.

Перед отправкой запроса на сервер выполняется просмотр общего кэша, и в зависимости от политики и доступности кэшированный ответ может быть возвращен немедленно и прозрачно. Если кэшированный ответ недоступен, выполняется запрос с возможностью кэшировать свой ответ для любых последующих запросов. В процессе согласования запроса к серверу этот сервер может выдать запрос аутентификации, который либо автоматически обрабатывается общим файлом cookie или хранилищем учетных данных, либо делегатом соединения. Исходящие запросы также могут быть перехвачены зарегистрированным объектом NSURLProtocol для плавного изменения поведения загрузки при необходимости.

NSURLSession

относится к группе взаимозависимых классов, в дополнение к одноименному классу NSURLSession. NSURLSession состоит из тех же частей, что и раньше, с NSURLRequest, NSURLCache и т.п., но заменяет NSURLConnection на NSURLSession, NSURLSessionConfiguration и три подкласса NSURLSessionTask: NSURLSessionDataTask, NSURLSessionUploadTask и NSURLSessionDown.

NSURLSessionTask - это абстрактный подкласс с тремя конкретными подклассами, которые используются непосредственно: NSURLSessionDataTask, NSURLSessionUploadTask и NSURLSessionDownloadTask. Эти три класса инкапсулировать три основные сетевые задачи современных приложений: кокетливыми данные, такие как JSON или XML, а также загрузки и скачивания files.For более

Автор: Avijit Nagare Размещён: 30.03.2016 12:22

8 плюса

Разница между NSURLSession и NSURLConnection

NSURLSession

ПРИМЕЧАНИЕ : (NSURLConneciton устарел в OS X 10.11 и iOS 9.0)

1) NSURLSession разработан исходя из предположения, что у вас будет много запросов, которые нуждаются в аналогичной конфигурации (стандартные наборы заголовков и т. Д.), И значительно упрощает жизнь.

2) NSURLSession также обеспечивает поддержку фоновых загрузок, которые позволяют продолжить загрузку ресурсов, когда ваше приложение не работает или находится в фоновом режиме на iOS.

3) NSURLSession также обеспечивает группировку связанных запросов. Выполнение позволяет легко отменить все запросы, связанные с конкретным рабочим модулем, например, отменить все запросы, связанные с конкретным рабочим модулем, например, отменить все загрузки, связанные с загрузкой сети. страница, когда пользователь закрывает окно или вкладку

4) NSURLSession также предоставляет более приятные интерфейсы для запроса данных с использованием блоков, n, что позволяет комбинировать их с методами делегата для выполнения пользовательской обработки аутентификации, обработки перенаправления и т. Д.

NSURLSessionConfiguration Types

1) defaultSessionConfiguration

Creates a default configuration object that uses the disk-persisted global cache, credential and cookie storage objects.

2) ephemeralSessionConfiguration

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

Типы NSURLSessionTasks

1) Задачи данных (NSURLSessionDataTask)

Задачи данных используются для запроса данных с сервера, таких как данные JSON. Эти данные обычно хранятся в памяти и никогда не затрагивают файловую систему. Мы можем использовать NSURLSessionDataTask.

2) Задачи загрузки (NSURLSessionUploadTask)

Задачи загрузки используются для загрузки данных в удаленный пункт назначения. Мы можем использовать NSURLSessionUploadTask.

3) Задачи загрузки (NSURLSessionDownloadTask)

Скачивание файла и хранение во временной папке. Мы можем использовать NSURLSessionDownloadTask.

Основное различие между NSURLSession и NSURLConnection

NSURLConnection:

если у нас есть открытое соединение с NSURLConnection и система прерывает наше приложение, когда наше приложение переходит в фоновый режим, все, что мы получили или отправили, будут потеряны.

NSURLSession

решить эту проблему, а также дать нам вне процесса загрузки. Он управляет процессом подключения, даже когда у нас нет доступа. Вам нужно будет использовать

  application:handleEventsForBackgroundURLSession:completionHandler in your AppDelegate

Для получения подробной информации, пожалуйста, обратитесь к разнице между NSURLSession и NSURLConnection

Автор: Jaywant Khedkar Размещён: 28.02.2018 02:33
Вопросы из категории :
32x32