ASP.Net or WPF (C#)? [closed]
Our team is divided on this and I wanted to get some third-party opinions.
We are building an application and cannot decide if we want to use .Net WPF Desktop Application with a WCF server, or ASP.Net web app using jQuery. I thought I'd ask the question here, with some specs, and see what the pros/cons of using either side would be. I have my own favorite and feel I am biased.
Ideally we want to build the initial release of the software as fast as we can, then slow down and take time to build in the additional features/components we want later on. Above all we want the software to be fast. Users go through records all day long and delays in loading records or refreshing screens kills their productivity.
Application Details:
- I'm estimating around 100 different screens for initial version, with plans for a lot of additional screens being added on later after the initial release.
- We are looking to use two-way communication for reminder and event systems
- Currently has to support around 100 users, although we've been told to allow for growth up to 500 users
- We have multiple locations
Items to consider (maybe not initially in some cases but in future releases):
- Room for additional components to be added after initial release (there are a lot of of these... perhaps work here than the initial application)
- Keyboard navigation
- Performance is a must
- Production Speed to initial version
- Low maintenance overhead
- Future support
- Softphone/Scanner integration
Our Developers:
- We have 1 programmer who has been learning WPF the past few months and was the one who suggested we use WPF for this.
- We have a 2nd programmer who is familiar with ASP.Net and who may help with the project in the future, although he will not be working on it much up until the initial release since his time is spent maintaining our current software.
- There is me, who has worked with both and am comfortable in either
- We have an outside company doing the project management, and they are an ASP.Net company.
- We plan on hiring 1-2 others, however we need to know what direction we are going in first
Environment:
- General users are on Windows 2003 server with Terminal Services. They connect using WYSE thin-clients over an RDP connection. Admin staff has their own PCs with XP or higher. Users are allowed to specify their own resolution although they are limited to using IE as the web browser.
- Other locations connects to our network over a MPLS connection
Based on that, what would you choose and why?
I am especially interested in hearing from developers who have experience with both ASP.Net and WPf.
Reasons to choose WPF:
- Much faster and easier development than ASP.NET and jQuery
- Much easier to implement quick incremental background loading of data
- Much easier to implement client-side caching of commonly used data (important for remote offices)
- More efficient data transfer from server (can use advanced WCF features unavailable to web browser)
- Keyboard navigation better, since you can easily define shortcuts, etc, and not be limited by browser
- Maintenance overhead much better using MVVM pattern
- Softphone integration easy
Reasons to choose ASP.NET and jQuery:
- None that I can see
In your scenario I would definitely choose WPF.
First of all, I would sit down and write the business requirements and specifications. It really doesn't matter what tech you use - proper planning will affect your project timeline more than technology choice. This is especially true for an in-house custom built app.
As far as development, I would take the requirements and lay out the backend functionality. I would actually implement the backend in WCF, regardless of the client technology - that way you could use best of both worlds if needed (for example for phone integration you could write a stand-alone WPF app). ASP.NET with jQuery can easily use WCF services (JSON or XML version) together with desktop client.
As far as development of the client forms, this highly depends on developers experience and your future plans. I am not going to go into advantages/disadvantages of developing web software here - there are a ton of articles in the last 10 years about cloud/web based software (for example salesforce). I would rather concentrate on deliverables - what is your team most comfortable with today and in the future. There's a huge difference between WPF and web development, from development standpoint, and it requires completely different experience.
Why not consider a hybrid solution - Silverlight
With Silverlight you get most of the goodness and statefullness of WPF (with almost exactly the same XAML and code), plus you get the deployment characteristics of ASP.NET
Many people consider Silverlight the next step after ASP.NET/AJAX, and it would definitely deliver all of the benefits of WPF relevant to your scenario.