C# – How to write for *all* phones/mobile devices simultaneously

blackberryciphonemobilemultiplatform

We create non-game programs that run on mobile devices; iPhones, Windows Mobile, Android, Palm WebOS and the like. Our main program is written in C# for Windows Mobile and we've been asked to port it to iPhone. We are not looking forward to:

  1. The learning curve to pick up
    Objective-C, XCode, and Cocoa Touch.
  2. The pain of maintaining two
    sets of code to keep the product in
    sync on two different platforms.

We've decided that as a strategy we want to create all new products on as many mobile platforms as possible simultaneously, a formidable task.

We know we'll have to bend on these, but we'd prefer to:

  • Avoid forcing our users to be
    connected to the web to use a product.
  • Not have a bunch of different sets
    of source code.
  • Support as many mobile platforms as
    we can.

My question is this; What is your suggestion for the best strategy to develop for the 2 – 5 most popular mobile platforms?

EDIT: Based on the comments, I wanted to clarify that we have a product that we well-received on both PalmOS and Winmobile. It works exactly the same on both platforms, making it easy for a user to switch handhelds and still use it.

Now we're on the verge of creating many new business apps and want to expand that to other hardware/OSes. What are your suggestions to deploy on many new platforms with the minimum of pain?

Best Answer

Consider implementing your applications via the web. This violates your preference for "avoiding your users to be connected to the web", but consider the web for the following reasons:

  1. If your C# applications were written the right way, you could expose a web front-end to these applications by reusing your existing libraries.
  2. Web 2.0 is supported by nearly all modern mobile platforms.
  3. Your developers could continue writing in the language they're used to (C#).
  4. There are many advantages to writing web apps vs platform-specific apps.