What UI Technology to use? [closed]
OK.. I am sorry for asking an often asked question once again, but I AM CONFUSED!
First my requirements.
- To develop/ deploy on Windows XP/ 7.
- Easy to use and visually appealing for a not so tech savvy user.
- Regular reporting of data of a Non Profit Org.
- Having .NET as the preferable back end, as I have already devoted a year learning c# and the framework.
Now my issues.
- There are so many conflicting opinions on the web. Some are saying WinForms are dead and WPF is the way to go.
- I had almost made up my mind about WPF, when I read this: http://www.riagenic.com/archives/363. He is saying that WPF is dead!
- Should I just give up the desktop technologies and focus of web ones instead? It will definitely be easier to deploy, but even in full trust, won't I lose on the OS related advantages which the desktop technologies have?
Hmm, tricky question - mainly because there are many available options:
- Windows Forms
- WPF
- Silverlight
- HTML5 / Asp.Net
Contrary to anyone who tells you "X is dead", all 4 technologies are alive and well. Whats more all of these technologies are different, there isn't a simple prescribed "Use X" answer that anyone can give as each technology is suitable in different situations. The choice of which one to use depends entirely on the specific requirements that you have.
I'll start by going through your requirements one by one:
1. To develop/ deploy on Windows XP/ 7.
Any / all of the above are suitable for use with Windows XP / 7.
2. Easy to use and visually appealing for a not so tech savvy user.
It is perfectly possible to use any of the above to produce easy to use and visually appealing interfaces, however it is worth noting that these technologies are all very different from each other - a HTML5 application will have a very different look and feel (not necessarily better or worse) than say for example a Windows Forms application.
Without knowing more about the specific requirements it is difficult to say more at this point, however you certainly shouldn't eliminate any choices simply on the basis of usability and looks, as other factors (including general polish) will have a much larger impact.
3. Regular reporting of data of a Non Profit Org.
If you have any specific requirements on how the reports be displayed then you might want to look around at the reporting / graphing libraries that are available for each of the above technologies.
Although there are various options for displaying reports + graphs in all 4, you might find that certain choices stand out.
4. Having .NET as the preferable back end.
All of the above are .Net technologies.
Next, lets look at some other considerations you should take into account (in order of priority)
Are you already familiar with one or more of these technologies?
If you already have experience developing web based applications (for example), then unless other requirements rule out a web based app you might want to favour a web based solution.
Decide between a web-based and a Windows based interface.
At this stage you should choose between a web based and a Windows based interface.
I would always choose in favour of a Windows based application (i.e. WPF or Windows Forms) unless there are compelling reasons to favour a web based application, as you are far less restricted in terms of how the UI needs to behave with a Windows application.
Look at the merits of each technology
At this point you should be in a 2 horse race - WPF vs Windows Forms and HTML5 vs Silverlight. Unless you have prior experience you will need to look at the individual merits of each technology (including deployment issues - WPF and Silverlight both require .Net 3.0 or above to be installed on the client) in order to make an informed decision - this may be a good point to look at some simple prototyping.
If the choice is between HTML5 and Silverlight then I'm afraid I can't really help as my experience with Silverlight is limited, however if your choice is between WPF and Windows Forms then my advice would be to choose Windows Forms unless you have a requirement that would be difficult to achieve in Windows Forms, and easy in WPF.
WPF is fantastic at certain things, (such as displaying highly customised grids, or flashy animations), however if you don't need any of those things then Windows Forms is a simpler, more mature and (IMO) easier to understand. Although a Windows Forms application might not have the fancy graphics, in the end it is the polish that determines whether or not an application is truly attractive and easy to use, and in my experience Windows Forms applications are easier to polish.
I'd recommend starting out with WinForms,
feels "closer" to developing ASP.NET, console applications, etc;
at least in my experience (having been in somewhat your situation).
WinForms will (to the best of my knowledge) "never" be fazed out completely.
Added:
To address your specific requirements, the only one where WinForms and WPF can differ substantially,
is "2. Easy to use and visually appealing for a not so tech savvy user."
Coming from a strict ASP.NET through C# background, I played around with both to the point that I had some basic (and compilable ;-) applications utilizing either.
My grandmother would not have dared touch the WPF ones, basic WinForms are appealing to
the "not so tech savvy" most of all for their familiarity and therefor "safe(predictable) to use".
Added even some more... :
Regarding giving up desktop technologies for anything running in a browser, warrants a thorough experience in both. In terms of ease of development and well, basically ease of all aspects; unless you have a
specific situation that only can be addressed by applications hosted in a browser, I'd really not recommend it.
My two cents : ASP.NET made the transition to WinForms easy; then ASP.NET+WinForms+HTML/JS/etc made WPF pretty accessible. I might be way of bat here, but for me, a definite knowledge path of .NET exists....
WPF is here now and it works now and "dead" or not it isn't going disappear in a hurry (Visual Studio is built with WPF as is Expression, baring Microsoft losing ScottGu one way or another my opinion is that you can count on it being supported - for the developer - for a while yet).
Build your app right and in the end the "WPF" bit is substantially just a presentation layer on top of your application so you'll have scope to adapt to change in the future.
In terms of skills... WPF may or may not be dead but silverlight has definitely got some legs and the skills are substantially transferable (and the XAML is pretty similar).
ask yourself if you need anything that could not be provided in a webapp?
from your description it sounds like you could do it without using either winforms or wpf, and just ASP.NET with WebForms.
It will definitely be easier to deploy, but even in full trust, won't I lose on the OS related advantages which the desktop technologies have?
Given full trust you can even have .NET controls, added to a web page and running inside the browser (IE only), which can access the O/S (e.g. via PInvoke).
Winforms is much more user friendly than WPF, just not as visually appealing, so you need to decide what is more important to you, not what the opinions of others on the future of the UI is. Web based apps have their place, and its mostly where you want multiple computers all to have access to the same UI and stored data without having to install anything on the client computers. This is good for corporate intranets for things like time-management apps and scheduling apps and so on. If you are looking for something that will be individual to the computer that will run it, you definitely want a desktop app using winforms or wpf. If this is going to be for corporate computers, you might prefer winforms just for the minimal resource usage.
精彩评论