Client-server interactions in Mobile Applications

advertisement
Client-server interactions
in Mobile Applications
Socket programming with TCP
input
stream
Client
Process
process
output
stream
outToServer
1) client reads line from standard
input (inFromUser stream) ,
sends to server via socket
(outToServer stream)
2) server reads line from socket
3) server converts line to uppercase,
sends back to client
4) client reads, prints modified line
from socket (inFromServer
stream)
inFromServer
Example client-server app:
monitor
inFromUser
keyboard
client
TCP
clientSocket
socket
to netw ork
input
stream
TCP
socket
from netw ork
2
Client/server socket interaction: TCP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
TCP
wait for incoming
connection
connection request
connectionSocket =
welcomeSocket.accept()
read request from
connectionSocket
write reply to
connectionSocket
close
connectionSocket
setup
create socket,
connect to hostid, port=x
clientSocket =
Socket()
send request using
clientSocket
read reply from
clientSocket
close
clientSocket
3
XML-RPC




remote procedure call protocol, created in
1998
specification and a set of implementations,
allowing procedure calls over the Internet
calls are transported using HTTP, and encoded
in XML.
simple security model, can authenticate
through HTTP/HTTPS



Allows one method of serialization
Still in use, although newer technologies exist;
JSON-RPC, SOAP and others.
www.xmlrpc.com
Disadvantages


XML can be slow and cumbersome in
transporting and processing messages
Calls can be made with plain XML instead;
XML-RPC doesn't add any additional value
Implementations:
Client:
Android XML-RPC

Thin, but complete XML-RPC
library

http://code.google.com/p/an
droid-xmlrpc/
Server:
Apache XML-RPC Servlet

http://ws.apache.org/xmlrpc/
server.html
SOAP
• Simple Object Access Protol: is a protocol
specification for exchanging structured
information in the implementation of Web
Services in computer networks.
SOAP
SOAP
• Advantage
– Allow for the use of different transport protocols (HTTP as a transport
protocol, but other protocols such as JMS and SMTP are also usable)
– Since the SOAP model tunnels fine in the HTTP get/response model, it
can tunnel easily over existing firewalls and proxies.
– Can extend the existing infrastructure.
• Disadvantage
– Since SOAP bases on XML format, it require lots of resource for parsing
and processing XML file (especially for large XML file).
– SOAP is very verbose, and contains lots of overhead.
 Not the best choice for data exchange with mobile devices.
JSON
JavaScript Object Notation – language independent specification
of interchanging data in human-readable format.
• In contrast with XML-RPC and SOAP it allows for bidirectional
communication between client and server (like peers) and for
multiple calls.
• Data introduced in key:value pair format.
• More economical than XML in terms of data size, but has less
readability.
• Android has JSONArray, JSONObject, JSONStringer and
JSONTokener objects for parsing this format.
Protocol Buffers
Protocol Buffers– language independent data-serialization
format developed by Google. This protocol is usually applied in
server-to-server interactions.
•
•
•
•
•
Is significant faster and smaller than XML.
Type of messages is defined in .proto files.
Message is small logical record of a pairs of names and values.
Transmitted information is encoded into binary format.
Google provide necessary tools for binding this protocol with
C++, Java and Python.
Comparison of protocols
“Using Internet data in Android applications” by Michael Galpin, IBM 2010,
http://www.ibm.com/developerworks/opensource/library/xdataAndroid/index.html
Download