Actually this is such an open ended question that I think it's not particularly suited to SO.
Shilendra,
Generally speaking, you should be able to use GAE as a back end for an iPhone application. I'm aiming to do this and although I have not yet deployed my app I've learned quite a bit about what does and doesn't work well. There are some things to be aware of before going in.
- You'll probably want a different authentication mechanism than GAE gives you by default (unless you truly want your APIs to be public). What I did was embed an application ID in my iPhone app, then check for it on the GAE side before returning responses. I use HTTPS to avoid the application ID being sniffable on the network.
- The Channel APIs won't be available to you unless you are running an HTML5 application (e.g. through PhoneGap). This is because the only client implementation for Channels is the JavaScript one.
There are also some things you should know that aren't specific to the client:
- Because of the distributed nature of GAE, you have no raw access to the file system, and no guarantees about the lifetime of in-memory structures. You have the data store and memcached instead. GAE strongly encourages stateless architectures.
- The GAE data store isn't a traditional database, and trying to treat it like one (e.g. by using JDO/JPA for your persistence framework) causes lots of headaches. I'd recommend starting with Objectify instead, which was designed explicitly for GAE.
- The development environment is great, and very convenient... but in many ways it doesn't (and probably can't) mimic the behaviors of the production environment. Design your app so you can test on an actual GAE deployment before your end users see it.
- Kris