Next in the series of IPhone application development. First was graphical implementation, now distributed networking.
Welcome Back Hugo Munoz as my Guest Blogger.
Designing mobile distributed applications implies formalizing
the development process to face a lot of challenges in terms of communications,
patterns, middleware software, security among others. The market of mobile
applications is growing rapidly. Mobile terminals such as iPhone and Android
are capable of running rather complex applications, due to the rapid process of
hardware and telecommunication technologies, this could mean only one thing
�The world is becoming mobile� and we need to be ready to accept the challenge
of bringing creative and technically unique software.
Before starting I have to mention that my inspiration for
this two iPhone blogs was a little application that comes with the iPhone SDK
called �WiTap� that demonstrates simple networking
between two iPhones/iPod Touches using sockets in case you are not registered
in the iPhone developer program here is a YouTube video that shows the
application: http://www.youtube.com/watch?v=SzDCAMIy24w
To be honest my intention was just to do some testing in
matters of networking between two devices, but WiTap already showed me that, so
I decided to take the next step in the creation of a real distributed cross
device / platform architecture capable to work over the internet in a reliable
and secure way.
The first concern that came to my mind was finding the
appropriate communication protocol for a cross device solution, after so many
days of failed tests my patience was arriving at its aim then �STOMP� came to
the scene which is a very simple and easy to implement message queue based protocol
designed pretty much like HTTP; the server side may be hard to implement well,
but it is very easy to write a client to get yourself connected, also googling
a little bit I found an open source Stomp connector for ObjectiveC which
dramatically simplified this first task, I just downloaded the library then
plugged it into my XCode Project and worked smoothly.
By this point the communications was happening but in a crude
way, just sending text like messages from the client to the server broker, so
the next big challenge was adding the ability to serialize and transmit objects
thru stomp, for this I initially thought in two options the first one was
embedding XML into the stomp message or make my application speak JSON, I took
the second approach for this test because I found a very good open source JSON parser for objectiveC, I just wanted to be practical and JSON
is faster than XML.
The final piece was designing a restful API to transmit my
�Simon says� movement sequences between players, here I did a very simple Java
Server Objects implementation which publishes JSON messages to the STOMP broker
then it broadcasts to the subscribed clients. Here is a basic diagram of the
solution:
As you can see this is a cross platform / device solution, off
course the backend could be any technology you feel comfortable with for
example Windows Communication Foundation (WCF) with a custom binding
implementation to speak �STOMP� in the mix, the same applies for the client side,
we can have both Iphone and an Android devices working together in the same
application sharing the same backend.
I hope you found my little experiments interesting and thanks
for your time reading this blog.