Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Integrating iOS Applications with Backend REST ...
Search
Adrian Kosmaczewski
October 04, 2010
Technology
0
180
Integrating iOS Applications with Backend REST Services
Presentation given at JAOO 2010, Århus, Denmark.
Adrian Kosmaczewski
October 04, 2010
Tweet
Share
More Decks by Adrian Kosmaczewski
See All by Adrian Kosmaczewski
Managing Fleets of Kubernetes Clusters with GitOps
akosma
4
230
DevOps in Switzerland from 2018 to 2022
akosma
3
300
APPUiO Cloud
akosma
2
700
Introduction to K8up
akosma
0
360
Creating Products through DevOps: The Story of VSHN
akosma
0
240
Everyday Life of an Open-Source Company: The Story of VSHN
akosma
0
290
Creating a Product through DevOps: The Story of APPUiO Cloud
akosma
0
650
Migrating the GitLab–Kubernetes Integration from Certificates to the Agent
akosma
0
490
APPUiO Cloud: Making of a Swiss PaaS
akosma
0
240
Other Decks in Technology
See All in Technology
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
3
920
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.1k
20250623 Findy Lunch LT Brown
3150
0
850
Snowflake Summit 2025全体振り返り / Snowflake Summit 2025 Overall Review
mtpooh
2
390
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
300
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
2
240
フィンテック養成勉強会#54
finengine
0
170
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
3
460
初めてのAzure FunctionsをClaude Codeで作ってみた / My first Azure Functions using Claude Code
hideakiaoyagi
1
210
ローカルLLMでファインチューニング
knishioka
0
150
Definition of Done
kawaguti
PRO
6
480
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
410
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
940
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Unsuck your backbone
ammeep
671
58k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Bash Introduction
62gerente
614
210k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Balancing Empowerment & Direction
lara
1
370
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Transcript
Integrating iOS Applications with Backend REST Services Monday, October 4th
- JAOO - Århus, Denmark
Adrian Kosmaczewski
akosma software
akosma.com github.com/akosma linkedin.com/in/akosma formspring.me/akosma twitter.com/akosma slideshare.com/akosma
None
My Software Passion
People
Team members, users, clients, society in general
Software is a process
Software is a social process
None
One Problem
Several Solutions
None
Questions
Web Developers?
iOS Developers?
API Designers or Developers?
Server-side Technologies?
None
1 The Problem
Database
Many Questions
Formats?
Libraries?
“Best” approaches?
2 The Solutions
Bad news
Far too many
REST vs SOAP
XML vs JSON
Synchronous vs. Asynchronous
None
Good News
Introducing iPhoneWebServicesClient
http://github.com/akosma/ iPhoneWebServicesClient
2 parts
1 PHP server app
2 iOS client
Many formats
XML
JSON
(duh)
• XML • 8 libraries • JSON • 2 parsers
• YAML • CSV • SOAP • Property List • XML • Binary • Protocol Buffers
Extensible
(add more formats and libraries if you want)
Variable sized dataset
(from 1 to 5000 items per call)
Heterogenous Data Source
(the same data in different formats)
XML Libraries
(lots of them)
None
3 Demo
None
4 The Tests
• Local • Wifi • 3G • EDGE • All
Combinations • Different dataset sizes each time
None
5 Results
Easier to implement on the iOS side?
1. JSON + Property Lists + CSV 2. XML (DOM)
+ Protocol Buffers 3. XML (SAX) 4. SOAP + YAML
Easier to implement on the PHP side?
1. JSON + YAML 2. Property List + CSV +
XML 3. Protocol Buffers 4. SOAP
Smaller Payload
1. CSV + Protocol Buffers + Binary Plist 2. JSON
+ YAML 3. XML 4. SOAP
Fastest Deserialization Speed
1. Property Lists + TBXML 2. SOAP + libxml (DOM)
+ Google XML 3. JSON 4. YAML + CSV + APXML
More Portable?
1. XML + JSON 2. Protocol Buffers + YAML +
CSV 3. SOAP 4. Property Lists
More Readable?
1. JSON + YAML 2. XML + XML Property Lists
3. Protocol Buffers 4. Binary Property Lists
Less Memory Consumption?
1. Binary Property List + Protocol Buffers 2. CSV +
JSON + TBXML 3. XML 4. SOAP + APXML
Some raw, deeply flawed comparisons?
• Binary Plists are 3 to 4 times faster to
deserialize than JSON • iPod touch 2nd Gen is ~25% faster than iPhone 3G • iPhone 4 is ~300% faster than iPhone 3G • JSON is 45% of its equivalent XML plist • Binary plist is 35% of its equivalent XML plist
The “Best”?
1. JSON + Property Lists 2. TBXML + Protocol Buffers
3. Other XML parsers + CSV 4. YAML + SOAP + APXML
None
6 Next Steps
Test with other server-side technologies
(J2EE, ASP.NET, Ruby on Rails, Django...)
Test with other Cocoa networking libraries
• AsyncSocket http://akos.ma/0x37v • IP*Works! for Mac OS X http://www.nsoftware.com/portal/macos/
• OmniNetworking http://akos.ma/0q • ThoMoNetworking http://hci.rwth-aachen.de/thomonet • ConnectionKit http://github.com/karelia/ConnectionKit/
Test with other serialization systems
• MessagePack http://msgpack.org/ • Apache Thrift http://incubator.apache.org/thrift/ • BERT http://bert-rpc.org/
• Apache Avro http://avro.apache.org/ • ONC RPC aka Sun RPC http://akos.ma/va Open Network Computing Remote Procedure Call
Test with different data sets
(sport results, weather, financial data, hyerarchical data, binary data, etc...)
None
Thanks!
Questions?
These slides are released under a Creative Commons Attribution-No Derivative
Works 3.0 Unported License http://creativecommons.org/licenses/by-nd/3.0/