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

Client-Server Applications on iPhone OS

Client-Server Applications on iPhone OS

Abc432bb0450574a25b15ff23d399d5a?s=128

Vladimir Pouzanov

November 21, 2009
Tweet

Transcript

  1. Клиент-серверные приложения на iPhone Варианты реализации и анализ эффективности Vladimir

    Pouzanov CTO at Codeneedle Vladimir Kirillov Ukrainian OpenBSD Users Group
  2. Взаимодействие процессов • Решение задач “общения” процессов на одном хосте

    или по сети • Передача данных или RPC • UNIX Network Programming (Stevens) – библия для сетевого программиста
  3. Транспорт • Сокеты • Core Foundation • Cocoa • Ваша

    обертка
  4. BSD Sockets • Системный • Классический API прикладного уровня сетевого

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

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

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

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

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

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

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

    реализация в Cocoa, сторонние библиотеки для Ruby, PHP • Декодирование происходит быстрее
  12. Демо

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

    использовать в качестве выходного формата как Property List (NSKeyedArchiver), так и свой бинарный формат (NSArchiver) • Работает только в Cocoa, CoreFoundation, Cocotron
  14. 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
  15. Distributed Objects • Полновесный объектный RPC • вызов селекторов на

    удаленных объектах • Подводные камни
  16. Поиск участников • Выделенный сервер • Bonjour • GameKit

  17. Выделенный сервер • Централизованная модель управления • Необходимость в отдельном

    сервере и дополнительных алгоритмах взаимодействия
  18. Bonjour • Поиск клиентов в пределах локальной Wi-Fi сети •

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

    функциональный интерфейс, Apple почти все уже сделала за вас • Голосовой чат в качестве бесплатного бонуса
  20. Спасибо за внимание! Вопросы? Комментарии? Vladimir Pouzanov farcaller@gmail.com Vladimir Kirillov

    proger@uaoug.org.ua