user777375
user777375

Reputation: 66

WPF or ASP.NET MVC for UI for an expert business application?

I know this question was asked before, but almost 2 years have passed and the business requirements are a little different.

We are in the beginning of developing a mid-sized application and are divided which technology to use for the front end, WPF or ASP.Net MVC 3? We are not an IT-company, but a business company with an IT-department who can outsource programming tasks, while the business core shall remain within the company. I did spend a lot time searching the internet for the answer, and I partially did succeed, but since the question is so important, I thought I ask here as well. Of course, before someone can answer the question I need to specify the requirements and environment for the application at stake:

Infrastructure: We have a pure Windows environment. Each user will have either Windows XP SP3 (currently) or a future version of Windows (if we skip from XP to Windows 8 remains to be seen, but let us assume that the user will use Windows 7 next) installed. We are aiming for a service oriented architecture, meaning we only want to run/show on the client machine what is really needed. This is especially important since the databases are far away from the clients (USA/Europe). We plan on using WCF for cross machine communication between user system (brower or WPF), application and database server.

We expect the main user group to be around 30+, but since we are a growing company there should be no issue scaling up to 100 users. The users are spread over three main locations over the world, while we want the option to support smaller locations as well. All those locations are connected to the same intranet.

UI Experience The new system is supposed to replace existing systems which are desktop applications (Winform). The number of screens are likely to be around 100+ with many labels, comboboxes, graphs. I like to call it an expert system b/c we expect the user to spend multiple hours a day with it, the user is expected to do interact fast with it (many clicks, multiple dialogs pop-up and close etc.) and the application will contain a lot of business logic (mostly mathematically). Some limited interaction with Excel is required. At this stage only importing formatted data out of .xlsx file into the application in order to work with the data. This we expect to happen often. Copy&Paste from Excel or other applications into our new application is a requirement (no pictures, just text). We will use a vendor control library for a richer UI experience. The users are used to desktop applications for their daily work (current systems/Excel etc.). Tablet or smartphone support is not a requirement.

Deployment If we were to use a WPF application we would likely either deploy it in CITRIX or use Click-Once.

Here are arguments of the two opposing factions:

Pro Web: Deployment is much easier. All the requirements can be done in a web application directly, and if not we use ActiveX or make a separate desktop application for the missing parts. Also, the IT world is going to stop doing pure desktop applications and everything is moving to HTML 5 (Windows 8).

Pro WPF: Web applications use many different technologies which makes it more difficult and costly to develop and maintain (HTML, ASP.NET, CSS, JavaScript, JQuery, AJAX). There are major deficiencies in a web-applications, mainly

  1. Considering the various browsers and versions.
  2. Screen resolutions
  3. No hardware support for graphics (business graphs, point graphs with 200+ points)
  4. Restricted access to local hardware (importing files, creating files, printing)
  5. Keyboard shortcuts

Point #1 is also worrying since the browser is more out of control since other web-applications in the company (not expert systems) are used, and we fear conflicting interests with the new application (e.g., we must use a browser version where ALL applications run/render fine).

I know there is no black and white on this, but I would be interesting in the following:

Who was in a similar situation and how did they solve it? (there is a nice article at http://karlshifflett.wordpress.com/2007/12/20/reasons-for-choosing-wpf-over-aspnet-for-very-large-project/, but the problem is that the article is 5 years old :(

How much more expensive is a web solution? For development assume that the programmers are equally skilled in both (we can outsource this). For maintainance assume that we will internally support this where we have limited knowledge in ASP.NET and WPF. We know WinForm/WCF using C#. We would have to train/learn either technology.

How easy can a web application do Excel interaction, printing etc.? I read a lot about "ActiveX hell" and I am wondering where we stand today?

Deployment I have used Click-Once quite successfully in the past, although some team members mention that Click-once can be an issue. Any experiences?

Future? The system is supposed to last 5+ years. We can not target HTML5 at this time (WinXP only up to IE 8). Where does Windows 8 stand on this?

Other thoughts? What important things am I missing?

Thank you! I know this entry is long and not an easy question. So I think you for reading and thank you even more for constructive feedback. Thank you!!!!

Upvotes: 1

Views: 3174

Answers (1)

Dmitry Frenkel
Dmitry Frenkel

Reputation: 1756

I would not build a business application in WPF, especially if your goal is to have it last for 5+ years. Silverlight is in sunset phase now - Win8 apps are betting on JavaScript and HTML5 now, though you are correctly noting that HTML5 support is not universal across all browsers and platforms (see http://caniuse.com/)

Let me try and address some of your concerns above to hopefully persuade you to build a web app:

  1. Considering the various browsers and versions. Yes, you would have to do that. However, for enterprise applications most of the time you can find an acceptable solution if you use industry-standard web technologies and don't use esoteric HTML5 stuff that is not universally supported. It won't be a slam dunk, but it is very much doable.
  2. Screen resolutions. You can address this by utilizing what is commonly known as Responsive Web Design. Once again, there is broad community and industry support for CSS frameworks that allow you to achieve responsiveness. YUI and Bootstrap come to mind as two examples.
  3. No hardware support for graphics (business graphs, point graphs with 200+ points). Well, here is where HTML5 Hardware Acceleration may help you, but I'd say that libraries like HighCharts can easily handle 200+ points graphs - see this example
  4. Restricted access to local hardware (importing files, creating files, printing). Fair point. I'd argue that working with files is MUCH easier with things like Socket.io, Filepicker.io and Zip.js, but "enterprise" requirements may get in the way. And as for printing, you can create "printable" version of your pages or generate PDFs and Excel Exports on the server side. Not ideal, but very much workable.
  5. Keyboard shortcuts. Have you used Gmail app? It is full of shortcuts and keyboard-based interactions. This applies to any application - if you need keyboard interactions, you'd have to build them regardless of your choice of WPF or Web

Upvotes: 3

Related Questions