C # mobile app development for working on multiple platforms

We have a business application running on Windows Mobile. This is a Winforms application with a local SQL CE database and retrieves its data from the WCF web service running on the server.

Now customers always ask: "Why do not you make a version for iPhone / iPad / Android / Phone 7, etc.". My boss asked how hard it would be. My initial answer is very difficult, because I would probably be the only person doing this work. I have no experience outside a happy place in Visual Studio.

Now I came across MonoTouch and MonoDroid. They seem to offer an easy solution, but I'm sure there are a lot of problems. I doubt that I can just compile an Android app.

I am inclined to assume that this will work too much, and the only realistic solution is a mobile website with several versions of each page for different screen resolutions. Unfortunately, the existing application has a local database and is "sometimes connected", so it will not shorten it.

Any suggestions and tips before I spend a huge amount of time?

Greetings
Mark

+4
source share
3 answers

I doubt that I can just compile my Android app

It is right; You will not.

So, the background: the design philosophy of MonoTouch and Mono for Android is to bring the "core" of .NET and C # to iOS and Android, while revealing the main functions of each specific platform. While PhoneGap and Titanium have an abstract base platform (for "virtual recording", MonoTouch and Mono for Android do not contain platform abstractions and directly reveal the main types and elements of the platform.

As a result, MonoTouch programs use MonoTouch.UIKit.UIButton , which directly wraps the main CocoaTouch UIButton .

Similarly, Mono for Android programs will use Android.App.Activity , which directly wraps the underlying Android android.app.Activity .

Common to both platforms are the "main" namespaces and frame types that you will find on .NET, .NET CF, Silverlight, Windows Phone 7 and Mono: System , System.Collections.Generic , System.Linq (yes, Linq-to -Objects), System.Xml.Linq (yes, Linq-to-XML), System.IO , etc. Etc. For example, see Builds Included in Mono for Android .

So, can you use the existing Windows Mobile app as it is on Android? No, because Mono for Android does not provide System.Windows.Forms .

However, you will need to reorganize your existing code to follow the Model / View / Controller (or MVVM or ...) design pattern, diverting the user interface (View) so that you can replace it with various platforms, such as iOS UI with MonoTouch , WP7 UI with XAML, Android UI with Mono for Android, HTML interface with ASP.NET MVC, etc. etc. You will not be able to experience β€œwrite once, work anywhere,” but you will be able to provide the user with user interfaces that are appropriate for their chosen platform.

For example, see MIX11 Conference Applications , which share a common code base, while also providing interfaces for the platform for iOS, Android, and WP7.

+8
source

Look at the titanium and the handset.

+1
source

My suggestion is to take a quick look at WP7. It's fairly easy to enter, even if you have Visual Studio (what you do) and C # experience of any kind. Then you can more easily estimate how much time you will need to develop a C # application (and, possibly, an Android port using MonoDroid).

And yes, Titanium and PhoneGap are options, but I personally think MonoDroid looks better.

On which platform do you receive most requests? I assume Android, as this seems most likely. I saw a lot of people saying that MonoDroid is really solid.

0
source

All Articles