I want to create a new application. It will basically be a Deep Zoom application that users can draw annotations on (that will save to a DB so other users can see those annotations.) At first it will just simply run in a browser. However, the app would be useful if it could be used by enthusiasts in the field, so ability to run on smartphones or other handheld devices would be massively beneficial. 3G/4G signal is likely to be practically non existent in those places, so having the ability to download all the images and info for an "area" would be good.

I can't decide on which technology to use. Silverlight Deep Zoom apps look really nice in browsers, but I have heard that it is not a widely supported technology that MS might be ditching anyway and the only smartphones that would be capable of running Silverlight would be Windows phones = a very small share of the smartphone market. Flash will probably never run on iPhones/Apple products in general. So should I use HTML5? HTML5 all seems a little confusing to me at the moment, would it even be possible to make a HTML5 Deep Zoom application that users could annotate?

Any thoughts and advice would be really handy, thanks for reading.

  • html5 can handle it but supporting legacy browsers is a pain.
    – Raynos
    Jul 19, 2011 at 17:35

2 Answers 2


Today's phone wars are essentially another flavor of the old Browser wars, or the old decision of "windows vs. web"...which technology to use.

Your question and profile tells me you are more familiar with the Microsoft stack, so I will keep my answer directed that way. I'm sure the non-microsoft folks will have their own bits of wisdom they can add as well.

For Phone apps, user experience is key. However, using the philosophy of write once, run everywhere, you may get in trouble. One development technology that you use that may look/run great on one platform, may be non-existent for another (you hit it above regarding Silverlight for non-windows phones and flash for iPhone)

Here are some different platform options:

Android - for those in the .NET world who want to develop for Android, Mono seems to be the best way to go if you want it to run specifically for Android.

iPhone - MonoTouch is the way to go for iPhone at this point. They are both currently owned by Novel, but are licences differently. The main difference is that they MonoTouch apps are compiled down to machine code targeted for iPhone.

Windows Phone - Your best user experience here would be, as you mentioned, Silverlight.

Blackberry - even Blackberry has come out with some development tools directed at the .NET developer. Once again, these would work best with Blackberry, but the cross platform options are minimal here too.

Bottom line - In my opinion, you have two ways to go here:

First, you can create an architecture where you have your middle tiers and back end common using POCO objects - hosting this in the cloud. You can then direct the user to a different user interface when you detect the platform that is hitting your site. This would present the optimal experience for the user depending on the platform they are using. The bad thing is that you will be creating multiple different user interfaces. Using some standard patterns - this is do-able, but will make it more difficult to debug and maintain. This is the kind of architecture Miguel de Icaza was envisioning when architecting Mono.

Second is to go with the HTML 5/Javascript path. HTML 5 is still a little fuzzy regarding the specs (so was HTML 4 though), but it seems to be the lowest common denominator with regard to what will run on each phone. It will take a bit more work and learning to get the "chops" needed to build a compelling HTML 5 application if you have not done it before, but the effort may be worth it. For your requriements, though, this may not suit your needs.



You should check out this post about a canvas in HTML5. He also has a few links to other sites, and even source code for several projects that might be of help. Also some of the math that might also be of help.

As far as technology goes to use ... it depends on what you are familiar with. I looked at your profile and you have tagged C#. If you are familiar with that, I would say stick with it (unless you want to learn something else...always suggested :D). If you stick with C# you can look at using it with Mono.

Hope this was able to point you in the right direction.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.