I am new to mobile application development and wanted to know from experts here on how they approach the server-side design. I need to support cross platform clients (iOS, Android, Windows) and require a scalable backend architecture.
- What are the widely deployed server-side strategies
- Are there any Mobile specific open source server-side technologies available.
- What factors people consider for mobile application back-end.
I agree with half the answer above. You should use REST architecture - it is the most straightforward way to go. I use Ruby on Rails for my mobile projects. It is quick to start building the server code and see it working in somewhere like heroku.com almost instantly.
So I'd pick the following:
- ruby on rails - worth your time picking up
- heroku.com for deploying / or EC2 if you pick the Rubber gem
- Google App Engine is another great option if you know some python / java
- REST architecture
- store all your heavy images etc with Amazon S3. They have some great SDKs to work with.
- get yourself some JSON libraries to communicate with your server
on iOS:
- use MKNetwokKit (it will save you lots of trouble down the road. it helps you cache and its a nice architecture all around).
- if the app is small, try a data model based on NSArchiver instead of CoreData (SLOWWW). Mogenerator is a good start (this isn't server related..)
If you hate writing server side, I'd advice you to checkout Parse.com. Completely mobile only development with all server code handled for you. For big projects, you really should write your own server stuff.
Some extra things I'd consider:
- how would the security work? just a session token in the HTTP header?
- tier your app -- networking / MVC
- what happens when you're offline? - this is currently something we're dealing with after not having thought early - pain.