Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Client-Server Applications on iPhone OS

Client-Server Applications on iPhone OS

Vladimir Pouzanov

November 21, 2009
Tweet

More Decks by Vladimir Pouzanov

Other Decks in Programming

Transcript

  1. Взаимодействие процессов • Решение задач “общения” процессов на одном хосте

    или по сети • Передача данных или RPC • UNIX Network Programming (Stevens) – библия для сетевого программиста
  2. BSD Sockets • Системный • Классический API прикладного уровня сетевого

    стека (OSI 5-7) • Переносимый • Низкоуровневый • Документация – man -k socket(2) bind(2) connect(2) accept(2) ip(4) inet(4)
  3. Core Foundation • Обертка вокруг сокетов BSD (C) • SSL/TLS

    через OpenSSL • DNS resolving • HTTP/HTTPS • FTP • Bonjour CFNetwork
  4. Cocoa • Общий механизм для загрузки URL • FTP, HTTP,

    HTTPS • Кеширование • Гибкая настройка через делегаты • Синхронный/асинхронный режимы NSURLConnection
  5. Полезная нагрузка • Свой формат • JSON • XML •

    Простые структуры • Apple Property List (XML или bplist) • Сериализация объектов в NSCoding • RPC • Distributed Objects
  6. Свой формат • Полная свобода действий • Необходимость реализовать методы

    для чтения/записи • NSXMLParser для обработки XML- данных • JSON через json-framework http://code.google.com/p/json-framework/
  7. Property List • Стабильня XML-схема для описания абстрактных данных •

    Поддерживает следующие типы: • массив (CFArray) • словарь (CFDictionary) • строка (CFString) • данные (CFData, кодируются в base64) • дата (CFDate) • булево значение (CFBoolean) • числа (CFNumber) plist(5)
  8. Property List • http://www.apple.com/DTDs/PropertyList-1.0.dtd • Поддерживаются Cocoa (NSPropertyListSerialization), CoreFoundation, Python

    (>=2.6), сторониие модули для Ruby, PHP, прочих языков (любой XML-парсер) • Достаточно объемный результат
  9. Property List • Бинарный формат существенно компактнее (50%-70%) • Есть

    реализация в Cocoa, сторонние библиотеки для Ruby, PHP • Декодирование происходит быстрее
  10. NSCoding • Сериализация полноценных объектов для последующего восстановления • Может

    использовать в качестве выходного формата как Property List (NSKeyedArchiver), так и свой бинарный формат (NSArchiver) • Работает только в Cocoa, CoreFoundation, Cocotron
  11. RPC • rpc(3) (Sun, Mac OS X only?) • xdr(3)

    для инкапсуляции данных • eXternal Data Representation • так реализован NFS •Distributed Objects • XML-RPC, SOAP (Mac OS X only) Remote Procedure Call
  12. Bonjour • Поиск клиентов в пределах локальной Wi-Fi сети •

    Можно анонсировать несколько разных сервисов • MAC OS X: можно анонсировать сервисы в глобальном домене MobileMe
  13. GameKit • Поиск одного клиента через Bluetooth • Простой и

    функциональный интерфейс, Apple почти все уже сделала за вас • Голосовой чат в качестве бесплатного бонуса