Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Advices on server implementation for server/client structure iOS App development?

There are must be a lot of apps that are designed to communicate with server. My question is only about App installed on iOS device + Server side service interaction. Web app is not what I am talking about, and there should be no webpage involved in this discussion at all. Typical examples are Apps like Instagram and Twitter, in which most of the information exchanged between the App and the server is just data like String, Image and Integers(wrapped in JSON or XML), no webpage presentation needed.

My question will be: if you are an independent app developer, and you are designing such an app from scratch without any existing website API, database structure or application(so you are not limited by any existing API or database structure or application protocol), What will be the most efficient approach?

What the sever side need to do are:

  • receive data send by the App;
  • process the data with designed logic;
  • interact with database(like MySQL);
  • do necessary data mining and analysis---this could be a constantly running service or one time task requested by the App client;
  • send the data back to the App upon request or spontaneously;
  • exchange or broadcast the data between/among different App clients (i.e.: group chatroom and peer to peer message);

As far I as know there are 3 obvious options to implement the server side:

  • PHP
  • Python
  • Ruby on Rails

(please feel free to add more options)

My questions are:

  • which one is the most appropriate choice to implement the server side?
  • If the App is focusing intensively on natural human language/text searching, analyzing and data mining, which one is the best choice? I heard Python is doing pretty good in this area.
  • Any advice on the database choices? I am using MySQL for now, and I found it's quite powerful for my purposes, I heard Twitter is switching to Cassandra. Will that be too difficult to start with?
  • For the server end, if you need to build a Server management interface, for you as an admin to manage and monitor the community, membership, data and such, is there any existing solution, or framework or tool for that? what will be the most efficient approach?
  • If a new programmer has no experience in non of them, which one you suggest he/she to start with?
  • Is there any good reference material or sample code on the server side in such context we can learn from?

I know there are a lot of very experienced experts on these areas on Stackoverflow, but I saw more newbies who just entered the iOS developing area without much knowledge in server/database programming experience. And I hope this thread can help these who are thinking to design an App with server/client structure but have no idea where to start with.

ps: I will keep updating this question thread and adding my findings on this topic, to help all other users at stackoverflow. :-) Please try to make your answer informative, easy to understand, and constructive. I guess most of readers for this thread will be new members of this great community.

like image 690
horacex Avatar asked Dec 06 '11 09:12

horacex


People also ask

What is the best way to develop iOS apps?

To develop iOS apps, you need a Mac computer running the latest version of Xcode. Xcode is Apple's IDE (Integrated Development Environment) for both Mac and iOS apps. Xcode is the graphical interface you'll use to write iOS apps.

How does iOS App communicate with server?

At the basic level, the iphone communicates over the internet. The internet uses Internet Protocol, and there are two standard protocols built atop of IP: Transmission Control Protocol, and User Datagram Protocol. Each has it's own uses and functions. TCP/IP and UDP/IP make up the backbone of internet communication.


1 Answers

Are you sure you want to spend time & money to develop your own Server & develop your own API? There are lots of mBaaS (mobile Backend as a Service) providers today such QuickBlox, Parse,StackMob, which are ready to use and they have great Custom Objects API and some of predefined modules. They have great free plans with big quota. Some of them such QuickBlox has Enterprise plan - so you can buy license and they server team update server for you purpose.

So, i recommend not develop your server and think about mBaaS market.

Just about your issue - I can recommend look at QuickBlox Custom Objects code sample and also Custom Objects API. Custom Objects module provides flexibility to define any data structure(schema) you need. Schema is defined in Administration Panel. The schema is called Class and contains field names and their type. I think it's what you need.

like image 125
Rubycon Avatar answered Oct 17 '22 03:10

Rubycon