How to decide between developing a web application and a desktop application

JonTan picture JonTan · Jul 25, 2017 · Viewed 9.5k times · Source

I am a software engineer intern for a manufacturing company and they want me to develop an application for the company. They are leaning towards a web application however, I wish to know whether a desktop application would better fit the job. Therefore, I have been googling and looking through stackoverflow to find out what the pros and cons between desktop applications and web applications are. The following is essentially what I found:

Quick disclaimer, I have background in C# and WPF so I am a bit biased as it would be easier for me to develop a desktop application. I have no web experience so there is nothing I can really talk about in that area which is why I wish to know more about whether this application is better suited as a web application or desktop application. I am absolutely open to learning Php and web development to expand my abilities. I have started (a bit) looking into developing the web application using Php7 with Laravel framework.

Pros of desktop applications:

  1. Typically faster than Web Applications (Assuming web application will perform complex queries, calculations, etc, and not just display markups)
  2. Development of GUIs is faster
  3. More secure as desktop applications are private by default.
  4. There are more available controls allowing for a more rich and interactive experience for user (Or at least, these controls are easier/faster to implement on desktop based applcations compared to a web-based application)
  5. Can take advantage of user hardware.

Cons of desktop applications:

  1. Use/deployment is limited by system (However, this should not be a problem because all our systems are Windows based.)
  2. Updates and installation must be manually implemented.
  3. If every client desktop gets a database connection, scaling is not good as database suffers from heavy load. (However, this probably will not be the case since we won't have more than 500 users).

Pros of web application

  1. Cross platform (No need to deal with different operating systems) so it is easily portable
  2. Development is quick and easy
  3. Deployment is easy as updates are automatic and server side.
  4. Large community support and available frameworks.

Cons of web application

  1. Larger overhead (Applications tend to be slower due to need to transmit data across the internet).
  2. Need to deal with different browsers. Javascript most likely needs to be tweaked to be perfect on one web platform (Chrome, Firefox, etc) and will not be perfect on the others. (However, this is not that big of a deal).
  3. Security is an issue since data will be public.

Please let me know if any of the above is outdated (most of the posts I found were from 2011 or prior) or wrong. Also, if there is any other pro/con to consider.

Moving on to the application description....

Background on the company: We build and process dozens of different parts every day. For each type of part, after X amount of the part is processed, a sample needs to be taken for inspection. So for example, part Y has 3 samples taken every 120 minutes to be inspected (Because the machine typically finishes processing X amounts in 120 minutes). The inspection results (measurement data) are then stored in the database (MySQL database).

General summary of the application's purpose:

  1. View the schematics of all the parts we design (We store all the schematics as pdfs on a network drive, so this is simply just pulling up the specific pdf requested from the drive and displaying it onto the application).
  2. View/update the status of all the machines in the company (What parts are they working on, are they online/offline, etc). A certain user (Inspector) will use this application to update machine status/information. Then another user (Operator) will use the application to view the statuses.
  3. Monitor part inspections. So, for every machine and part being processed, there will be a timer to let a Operator user know when a certain part needs to be submitted for inspection. Upon part submission, an inspector will then receive a notification to inspect the part, and after letting the application know that they completed the inspection, the timer will restart to let the operator know whens the next time they need to submit a part.
  4. The application will calculate statistical data (For example, Cpk values) from the part measurements obtained from inspection results and display the statistical data along with a graph/chart.

I hope I explained all of this clearly enough. Some other things to note, from my understanding, the users will not need remote access. This application will pretty much only be used on company site. Also, the original reason that the company wanted a web application was because operators will be using a tablet for the application and the tablets they acquired were original android based. However, they decided to switch to using Windows Surface tablets so WPF applications are now a possibility.

With all of this being said, I am really looking for input on what route people with more experience would recommend. I am still in college so please forgive my lack of knowledge/experience. What else should I be thinking about when deciding between a web application and desktop application?

Here are some of the pages I have seen while pondering this topic:

  1. Advantages of web applications over desktop applications
  2. https://www.quora.com/How-much-different-is-it-to-build-a-web-application-vs-a-desktop-application
  3. https://www.quora.com/What-are-the-advantages-and-disadvantages-of-web-based-application-development-vs-desktop-application-development

There were more stackoverflow pages but the one listed above pretty much has everything that the other pages stated.

EDIT: Seems like web-application is winning so far (Not that I mind at all, I am actually excited to develop a web-application based off what I am hearing). Is there anyone who would rather do a desktop application? If so, why?

Answer

LoztInSpace picture LoztInSpace · Jul 25, 2017

I'm inherently biased against web apps. They're difficult to get right due to browsers, they're typically insecure (by accident though). The platform sucks (JavaScript and the bazillion libraries from random people/orgs), "everything is a string". I could go on.

However it's undeniably the best platform for reaching a wide, public audience and allowing continual updates.

In a corporate environment the advantages do tend to go away, but not entirely. Updates, for example can be achieved generally by storing all your .exe & DLLs in a shared directory. As you say, you can build a much richer UI quicker and cheaper using the Windows platform.

With regards to your architecture, something that has worked for me in a similar situation is to have a Windows front end, but also have the guts of the business logic, data access (connection pooling) and processing off on a stateless web server (or two) accessed from the UI via Web Services (protocol of your choice - I prefer SOAP due to WCF and WSDL but plenty of folks won't).

This allows for centralised data access and a place to put your one-off batch jobs or calculations that can then be shared. It also has the advantage that if you need to do something really intensive, not every client machine has to have that capability.

Your situation seems to fit this model but without a lot of insider knowledge it's primarily opinion, but possibly one to consider.