Not sure this is the right place to ask...
I'm involved in the development of a new system, and now we are passing the demos stage. We need to build a proper client application.
The platform we care most about is Windows, for now at least, but we would love to support other platforms, as long as it's free :-). Or at least very cheap.
We anticipate two kinds of users:
- Occasional, coming mostly from the web.
- Professional, who would probably require more features, and better performance, and probably would prefer to see a native client.
Our server exposes two APIs:
- A SOAP API, WCF behind the scenes, that supports 100% of the functionality.
- A small and very fast UDP + Binary API, that duplicates some of the functionality and is intended for the sake of performance for certain real-time scenarios.
We are probably intending to develop two clients (for both user profiles), a web app, and a native app. Architecturally, we would like to have as many common components as possible. We would like to have several layers: Communication, Client Model, Client Logic, shared by both of the clients. We would also like to be able to add features to both clients when only the actual UI is a dual cost, and the rest is shared.
We are looking at several technologies: WPF + Silverlight, Pure HTML, Flash / Flex (AIR?), Java (JavaFx?), and we are considering poking at WinRT(or whatever the proper name is).
The question is which technology would you recommend and why? And which advantages or disadvantages will it have regarding our requirements?