SlideShare a Scribd company logo
Клиент-серверные
приложения на iPhone
Варианты реализации и анализ эффективности

Vladimir Pouzanov
CTO at Codeneedle
Vladimir Kirillov
Ukrainian OpenBSD Users Group
Взаимодействие
         процессов
• Решение задач “общения” процессов на
  одном хосте или по сети
• Передача данных или RPC
• UNIX Network Programming (Stevens) –
  библия для сетевого программиста
Транспорт

• Сокеты
 • Core Foundation
 • Cocoa
 • Ваша обертка
BSD Sockets
socket(2) bind(2) connect(2) accept(2)
            ip(4) inet(4)
     • Системный
     • Классический API прикладного уровня
       сетевого стека (OSI 5-7)
     • Переносимый
     • Низкоуровневый
     • Документация – man    -k
Core Foundation
           CFNetwork


• Обертка вокруг сокетов BSD (C)
• SSL/TLS через OpenSSL
• DNS resolving
• HTTP/HTTPS
• FTP
• Bonjour
Cocoa
         NSURLConnection


• Общий механизм для загрузки URL
 • FTP, HTTP, HTTPS
• Кеширование
• Гибкая настройка через делегаты
• Синхронный/асинхронный режимы
Полезная нагрузка
• Свой формат
 • JSON
 • XML
• Простые структуры
 • Apple Property List (XML или bplist)
 • Сериализация объектов в NSCoding
• RPC
 • Distributed Objects
Свой формат
• Полная свобода действий
• Необходимость реализовать методы для
  чтения/записи
• NSXMLParser для обработки XML-
  данных
• JSON через json-framework
             http://code.google.com/p/json-framework/
Property List
                    plist(5)
•   Стабильня XML-схема для описания
    абстрактных данных

•   Поддерживает следующие типы:

    •   массив (CFArray)
    •   словарь (CFDictionary)
    •   строка (CFString)
    •   данные (CFData, кодируются в base64)
    •   дата (CFDate)
    •   булево значение (CFBoolean)
    •   числа (CFNumber)
Property List

• http://www.apple.com/DTDs/PropertyList-1.0.dtd
• Поддерживаются Cocoa
  (NSPropertyListSerialization), CoreFoundation,
  Python (>=2.6), сторониие модули для Ruby, PHP,
  прочих языков (любой XML-парсер)
• Достаточно объемный результат
Property List

• Бинарный формат существенно
  компактнее (50%-70%)
• Есть реализация в Cocoa, сторонние
  библиотеки для Ruby, PHP
• Декодирование происходит быстрее
Демо
NSCoding
• Сериализация полноценных объектов
  для последующего восстановления
• Может использовать в качестве
  выходного формата как Property List
  (NSKeyedArchiver), так и свой бинарный
  формат (NSArchiver)
• Работает только в Cocoa,
  CoreFoundation, Cocotron
RPC
     Remote Procedure Call

• rpc(3) (Sun, Mac OS X only?)
 • xdr(3) для инкапсуляции данных
   • eXternal Data Representation
 • так реализован NFS
• Distributed Objects
• XML-RPC, SOAP (Mac OS X only)
Distributed Objects
• Полновесный объектный RPC:
 • это просто!
 • полностью прозрачно
 • гибко
 • надежно (respondsToSelector:)
• Подводные камни:
 • сложно передать примитивы
   (особенно указатели)
 • если что-то пойдет не так, прокси-
   объект бросает исключение
Поиск участников

  • Выделенный сервер
  • Bonjour
  • GameKit
Выделенный сервер

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

• Поиск клиентов в пределах локальной
  Wi-Fi сети
• Можно анонсировать несколько разных
  сервисов
• MAC OS X: можно анонсировать сервисы
  в глобальном домене MobileMe
GameKit

• Поиск одного клиента через Bluetooth
• Простой и функциональный интерфейс,
  Apple почти все уже сделала за вас
• Голосовой чат в качестве бесплатного
  бонуса
Спасибо за внимание!
Вопросы? Комментарии?




Vladimir Pouzanov
farcaller@gmail.com
Vladimir Kirillov
proger@uaoug.org.ua

More Related Content

KEY
PDF
Владимир Бородин - PostgreSQL
PDF
pgconf.ru 2015 avito postgresql
PDF
Итак, оно тормозит
PPTX
PostgreSQL. Стильно. Модно. Молодёжно
PPTX
Переход на Php 7 и итоги
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
PDF
Нагруженный поиск на Sphinx
Владимир Бородин - PostgreSQL
pgconf.ru 2015 avito postgresql
Итак, оно тормозит
PostgreSQL. Стильно. Модно. Молодёжно
Переход на Php 7 и итоги
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Нагруженный поиск на Sphinx

What's hot (16)

PDF
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
PDF
pgconf.ru 2015.avito postgresql recovery
PDF
Перенос данных пользователей Badoo между датацентрами
PDF
NoSQL thumbtack experience, Анатолий Никулин
PDF
SphinxSearch Meetup - Tips&tricks
PDF
Движок LMDB - особенный чемпион
PDF
Барнаул15
PDF
Couchbase, что за зверь и на что способен.
PPTX
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
PDF
Tarantool 1.6: NoSQL database and application server
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
PDF
03 - Установка Xcode
PDF
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
PDF
Где живут Ваши объявления / Тюрин Михаил (Avito)
PDF
Консольные приложения на Go
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
pgconf.ru 2015.avito postgresql recovery
Перенос данных пользователей Badoo между датацентрами
NoSQL thumbtack experience, Анатолий Никулин
SphinxSearch Meetup - Tips&tricks
Движок LMDB - особенный чемпион
Барнаул15
Couchbase, что за зверь и на что способен.
Дмитрий Чирков, "Технологический стартап", занятие 3, 22.03.2012
Tarantool 1.6: NoSQL database and application server
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
03 - Установка Xcode
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
Где живут Ваши объявления / Тюрин Михаил (Avito)
Консольные приложения на Go
Ad

Viewers also liked (13)

PPT
Le opportunita' dal territorio grazie al Web Marketing
PPT
Slide Osservatorio Mari 2012 guida
PDF
Reconstruction Of Veterans Lane Revised Mayhew
PPTX
Internazionalizzazione digitale
PPT
T R A T E E I L M A R E
PPT
Portfolio Styczen 2010
PPT
Portfolio Sty 2010
PPTX
Webinar Dymola: Hydraulics and Pneumatics
PPTX
Webinar dymola-14-settembre-2010
PPTX
Webinar Dymola: Air conditioning e Powertrain
PPT
Msc Crociere B2B2C XML
PPT
Portfolio Magdalena Barczak
PDF
Types Of Porous Pavements Final
Le opportunita' dal territorio grazie al Web Marketing
Slide Osservatorio Mari 2012 guida
Reconstruction Of Veterans Lane Revised Mayhew
Internazionalizzazione digitale
T R A T E E I L M A R E
Portfolio Styczen 2010
Portfolio Sty 2010
Webinar Dymola: Hydraulics and Pneumatics
Webinar dymola-14-settembre-2010
Webinar Dymola: Air conditioning e Powertrain
Msc Crociere B2B2C XML
Portfolio Magdalena Barczak
Types Of Porous Pavements Final
Ad

Similar to Cocoa Networking (20)

PDF
Анатомия веб-сервиса, Андрей Смирнов
PDF
Анатомия веб-сервиса (РИТ-2014)
KEY
PPTX
Инфрраструктура ЦОД - интерконнект от Qlogik
PPSX
Qlogic: Технологии Ethernet
PDF
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
PDF
YuryByyanov (e-legion) @ CodeCamp2011
PDF
Юрий Буянов «Архитектура Goozy»
PDF
Эволюция технологий сетевой фабрики ЦОД
PPTX
Hosting for forbes.ru_
PDF
Введение в Python и Django
PDF
Выжимаем из сервера максимум (Андрей Паньгин)
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
PDF
андрей паньгин
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
PDF
Опыт использования Spark, Основано на реальных событиях
PPTX
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
PPTX
Создание и развитие отечественной платформы с открытым программным кодом для ...
PDF
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
PPTX
Net core and linux in production
Анатомия веб-сервиса, Андрей Смирнов
Анатомия веб-сервиса (РИТ-2014)
Инфрраструктура ЦОД - интерконнект от Qlogik
Qlogic: Технологии Ethernet
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
YuryByyanov (e-legion) @ CodeCamp2011
Юрий Буянов «Архитектура Goozy»
Эволюция технологий сетевой фабрики ЦОД
Hosting for forbes.ru_
Введение в Python и Django
Выжимаем из сервера максимум (Андрей Паньгин)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
андрей паньгин
Обзор перспективных баз данных для highload / Юрий Насретдинов
Опыт использования Spark, Основано на реальных событиях
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
Создание и развитие отечественной платформы с открытым программным кодом для ...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Net core and linux in production

Cocoa Networking

  • 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 socket(2) bind(2) connect(2) accept(2) ip(4) inet(4) • Системный • Классический API прикладного уровня сетевого стека (OSI 5-7) • Переносимый • Низкоуровневый • Документация – man -k
  • 5. Core Foundation CFNetwork • Обертка вокруг сокетов BSD (C) • SSL/TLS через OpenSSL • DNS resolving • HTTP/HTTPS • FTP • Bonjour
  • 6. Cocoa NSURLConnection • Общий механизм для загрузки URL • FTP, HTTP, HTTPS • Кеширование • Гибкая настройка через делегаты • Синхронный/асинхронный режимы
  • 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 plist(5) • Стабильня XML-схема для описания абстрактных данных • Поддерживает следующие типы: • массив (CFArray) • словарь (CFDictionary) • строка (CFString) • данные (CFData, кодируются в base64) • дата (CFDate) • булево значение (CFBoolean) • числа (CFNumber)
  • 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 • Декодирование происходит быстрее
  • 13. NSCoding • Сериализация полноценных объектов для последующего восстановления • Может использовать в качестве выходного формата как Property List (NSKeyedArchiver), так и свой бинарный формат (NSArchiver) • Работает только в Cocoa, CoreFoundation, Cocotron
  • 14. RPC Remote Procedure Call • rpc(3) (Sun, Mac OS X only?) • xdr(3) для инкапсуляции данных • eXternal Data Representation • так реализован NFS • Distributed Objects • XML-RPC, SOAP (Mac OS X only)
  • 15. Distributed Objects • Полновесный объектный RPC: • это просто! • полностью прозрачно • гибко • надежно (respondsToSelector:) • Подводные камни: • сложно передать примитивы (особенно указатели) • если что-то пойдет не так, прокси- объект бросает исключение
  • 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