Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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:

  1. Occasional, coming mostly from the web.
  2. Professional, who would probably require more features, and better performance, and probably would prefer to see a native client.

Our server exposes two APIs:

  1. A SOAP API, WCF behind the scenes, that supports 100% of the functionality.
  2. 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.

Our team is mostly proficient in .Net, C#, C++ development, and rather familiar with Web development (HTML, JavaScript).

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?

share|improve this question
1  
Unfortunately, the UI technology is in the middle of a revolution. Almost all frameworks MS has provided are becoming legacy and the new techs are unpredictable at best. Your organization tech policy should help with the direction. There is no correct answer unless you specify what do you want in the future from this application and what would be the life-length of it. –  Emmad Kareem Jul 26 '12 at 10:59
1  
Wrt. the binary services, ebay did a benchmark if different binary protocols to see which is fastest: infoq.com/presentations/… –  Joeri Sebrechts Jul 26 '12 at 11:01
    
@JoeriSebrechts, could you explain how your comment is related to the question? I did not quite get it. –  Emmad Kareem Jul 26 '12 at 11:19
    
@Emmad: the question mentioned the need for a high-performance binary API. My feedback on that wasn't an answer to the question, so I posted it as a comment. –  Joeri Sebrechts Jul 26 '12 at 11:47
2  
This question appears to be off-topic because it is about technology recommendations –  user16764 Jul 2 '13 at 18:52
show 2 more comments

closed as off-topic by Jimmy Hoffa, user16764, Dynamic, Dan Pichelman, GlenH7 Jul 2 '13 at 22:44

  • This question does not appear to be about software development within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers

We recently went through a similar exercise. As a Java/JVM based shop we narrowed it down to Qt, Java FX and 'HTML 5' (whatever that living std is ;p). HTML 5 narrowly won out over Qt with JavaFX not far behind (it's surprisingly compelling for something so new, just needs some polish). The main reason is that we believe that 'HTML 5', whilst non standard, is a technology that's going to stick around for quite some time and that you can build adequate rich clients across multiple platforms in it (and that will only improve). However, we're still prototyping some ideas before going whole hog with it.

It's important to note we evaluated against Matt Raible's 20 web framework criteria - with weightings based on what we knew we needed. In other words, empirical evaluation followed by prototyping is about the best you can do.

share|improve this answer
    
+1, Sounds reasonable enough in an uncertain world! –  Emmad Kareem Jul 26 '12 at 11:17
add comment

Well silverlight support is ending, so i wouldnt use that. Since we're not all running windows 8 either I would use a normal windows form based application. HTML5 is nice, but its not good suported by my version of visual studio. For your serverside just use the normwal web development tools inside visual studio. If you like to do complex things, then perhaps let it talk to a sharepoint server. Or just use your own web interface and some database mysql/SQL

Also think about if you really need a local application, over a longer term it might be complex to keep supporting both versions. (why not create one good web app).

For rapid development i would go for c# If you realy have lots of time, and want support for other operating systems, then use C++ Or if you like to learn more, and work a bit quicker then c++ you can use pyhton and QT that code might be slower dough.

also have good understanding of soap, ajax, and jquery

share|improve this answer
add comment

Evernote is a brilliant example here -- they didn't just pick one client, they did them all. And each of the client feels right for the platform it is on and caters to the use cases for that platform.

In terms of picking which platforms to target I would start by looking at what the customers are running. You will probably want to look at going to a REST api if you are supporting anything beyond java or C# though as SOAP stacks are pretty poor beyond that.

You can find ways to economize here -- for example you could use Xamarin's tools to build your core framework cross-platform and in C# and build UI layers as appropriate.

share|improve this answer
add comment

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