Recommended solutions for integrating iOS with .NET, at the service tier

asp.netiosnetweb services

I'm developing an application, in iOS, that is required to connect to my Windows Server to poll for new data, update, etc. As a seasoned C# developer, my first instinct is to start a new project in Visual Studio and select Web Service, letting my bias (and comfort level) dictate the service layer of my application.

However, I don't want to be biased, and I don't base my decision on a service which I am very familiar with, at the cost of performance.

  • I would like to know what other developers have had success using, and if there is a default standard for iOS service layer development?
  • Are there protocols that are easier to consume than others within iOS?
  • Better ones for the size and/or compression of data?
  • Is there anything wrong with using SOAP?

I know it's "big" in comparison to protocols like JSON.

Best Answer

iOS applications run on constrained devices, which is the first and foremost thing to keep in mind. Those constrained devices are actually pretty capable, but do consider the following:

  • XML is non-trivial to parse. If the requests are small and the data payload is not structured, there is no inherent benefit to using SOAP.
  • Apple has reasonably set high expectations for how responsive a web bound application is, processing has to be really fast.
  • Question for you: does the iOS have good SOAP support, or do you have to roll your own?
  • REST style services (i.e. simple HTTP requests/posts with XML, JSON, or plain text responses) are usually low impact and easy to code on both client and server.
  • How do you intend to/do you need to implement security?

Each of these points and questions can help you come to the right answer for your application. I don't know enough about the iOS API to talk toward it's support for SOAP based messaging--but it's something you need to consider. Is there anything inherently wrong in SOAP? Not necessarily, but it is definitely like trying to kill a wasp with a sledgehammer in some cases. It'll get the job done but the collateral damage is significant.

You will want something that is easy to invoke and process on your target platform. This principle doesn't change if you suddenly decide to do Android apps in addition to the iOS apps. Your conclusion might change, but the reasoning to get to that answer will be the same.