2015-03-04 2 views
4

Должно быть iOS App и .NET WebApi, что потребует синхронизации больших данных или записей.Сжатие данных между iOS и .NET WebAPI

Мы должны иметь сжатие памяти как на iOS, так и на .NET WebApi, которые будут compress и decompress данных, а затем дальнейший процесс.

КСН App стороны, мы планировали использовать в памяти GZip сжатия, используя что-то вроде

ценам ниже

http://www.clintharris.net/2009/how-to-gzip-data-in-memory-using-objective-c/

http://www.deusty.com/2007/07/gzip-compressiondecompression.html

На .Net WebAPI стороны, мы планировали использовать GZip-сжатие, которое должно быть разработано с использованием- https://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream%28v=vs.110%29.aspx

Теперь мой вопрос:

Можно ли использовать класс GZipStream в .Net для сжатия строки JSON? В .Net данные будут извлекаться из базы данных в модели, а затем модели будут преобразованы в строки JSON, а затем эта строка должна быть сжата перед отправкой на устройство, и такой же обратный процесс будет выполняться при приеме данных из приложения iOS.

Есть ли другой лучший подход, чем выше, который мы запланировали? Любые технические советы, релевантные ссылки или фрагмент кода кода очень полезны.

Спасибо @puneet за руководство этим постом, чтобы получить правильное решение.

Как мое серверное приложение является Asp.Net WebAPI и не имеет никаких файлов (html, css, js и т. Д.), Которые должны быть переданы с сервера в браузеры, как любой традиционный веб-сайт. http://forums.asp.net/t/1771770.aspx

Поэтому Автоматическое IIS Сжатие не будет работать в моем случае, который может быть включен, выполнив шаги, описанные здесь- http://www.codeproject.com/Articles/186233/Utilize-gzip-compression-in-IIS

В моем случае оба GZip Запросы и ответы должны быть обработаны и для этой цели отдельный обработчики потребовалось бы и в этом случае я следую этим ниже SO posts-

Для сжатия: Compress HTTP GET Response

Для декомпрессия: How do enable a .Net web-API to accept g-ziped posts

Другой mentionable ссылка- http://benfoster.io/blog/aspnet-web-api-compression

ответ

3

Можно ли использовать GZipStream класс в .NET, чтобы сжать строку JSON? В .Net данные будут извлекаться из базы данных в модели, а затем модели будут преобразованы в строки JSON, а затем эту строку необходимо сжать перед отправкой на устройство.

Да, это возможно двумя способами.

  1. Позвольте IIS справиться с этим, включив динамическое сжатие.
  2. Напишите свой собственный код, чтобы сжать ответ

Пожалуйста, следуйте ответ this нити для обоих вариантов.

Я попробовал второй способ (с использованием кода, приведенного в указанной теме ответа), и это сработало для меня очень хорошо.

и тот же обратный процесс будет выполняться при приеме данных из приложения iOS.

Да, мы можем распаковать gZipped данные. [этот пост в блоге] (http://blog.kaliatech.com/2013/02/posting-compressed-json-content-to-asp-net-web-api-controller/) есть код для него. Я не пробовал этот, но он кажется прекрасным и должен работать.

+0

Спасибо большое за усилия, я думаю, что я не собираюсь с компрессией IIS для этого, потому что он сжимает файлы только как мои только Asp.Net WebApi, поэтому Accept-Encoding не будет работать, см. Эти ссылки - http://forums.asp.net/t/1771770.aspx - http://www.codeproject.com/Articles/186233/Utilize-gzip-compression-in-IIS –

+1

Но используя сообщения и ссылки, которые вы предоставили , Я бы пошел на эти две реализации, для Decompressing - http://stackoverflow.com/questions/12345292/how-do-enable-a-net-web-api-to-accept-g-ziped-posts/14990735 # 14990735 и для сжатия - http://stackoverflow.com/questions/10443588/compress-http-get-response –

+0

Я также рассмотрю решение в вопросе, спасибо еще раз :) –

Смежные вопросы