How to decide between developing a web application and a desktop application [closed]
Asked Answered
S

2

5

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?

Speechmaking answered 25/7, 2017 at 1:46 Comment(3)
it looks opinion based (or too specific), but because they have such a soon deadline go with whatever technology will get the job done faster. WPF then, is it? just do the bare working minimum.Remanent
Yes, sorry. My post is biased because I have no experience in web development so it is hard for me to talk about it. If the deadline was not so soon however, what would you recommend? Is there any area of the project description that sounds biased towards a desktop application? I tried to keep that portion objective.Speechmaking
I was hoping the specific details would help someone give me more specific recommendations. Perhaps it had the opposite effect and just bogged down the post with unnecessary information. :( I will attempt to simplify this. Probably dont need to include the pros/cons I found...Speechmaking
O
4

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.

Ocieock answered 25/7, 2017 at 2:32 Comment(1)
That is definitely a model I did not consider. I will look into it. Thank you for the quick response! :)Speechmaking
P
4

Sounds like assembling or similar company work proccess monitoring to me.

If i have to build this application then first i will search and do some research if the function you want is possible and easy to develop with the programming language you will use

for example, if i choose to develop using web based then :

Larger overhead (Applications tend to be slower due to need to transmit data across the internet).

you can use intranet and good spec server computer

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).

then set the standard browser for working in your workplace

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).

you can upload pdf to server and view it within browser using pdf viewer plugin like pdfjs or similar plugin

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

is the machine have ip ? can i use ping function to the machine to determine the machine is online or not to ease the task ? if not then what is the schedule of the inspector to inspect the machine ? of course the inspector can login to the system then update the machine status manually using web application

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.

this one sounds like scheduling mechanics to ensure the quality, you can make a timer with jquery and using ajax to send notification to the operator with specific data about certain part that need to be inspected

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.

this one is depends on your statistic formula, you can use highchart plugin for this one

the second one after you ensure your choosen programming language able to accomplish the task you want is to design the database structure

Quote by Linus Torvalds :

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

Have a nice day, good luck with deciding after give it some good thinking to avoid development problem in the future

Panaggio answered 25/7, 2017 at 3:3 Comment(14)
I agree with this answer so I not posting one. But some lessons from the first major application I converted from desktop to web-based ~11 years ago: 1-Internal server (= intranet) takes care of speed issues, though with super-fast broadband that is not an issue for many applications any more; 2-even if primarily internal, the ease of access (w/firewall) for remote users is a big + for web; 3-browser is nearly a non-issue as long as you say "no internet explorer"; 4-compatibility with non-Windows (e.g.,Mac) a bonus; PHP is great as you can use it for web and command-line for local processing.Spancake
From this, it sounds like you are leaning more towards a web application. I have already done the research and am fairly positive that this job can be accomplished as either a web application or a desktop application. It is because it can be implemented in both ways that I am wondering which is the better approach and for what reasons. But I suppose, without anyone knowing all the specifics, it really is hard to explain why one approach would work better than the other.Speechmaking
@manassehkatz Thank you for your response. I really enjoy hearing people's experiences. Just out of curiousity, was there any big design reason that made you decide to convert your desktop application to a web-based one? If so, may I know why? Also, would you say that your application performed better as a web-based application? Assuming it was not something that obviously worked better as a web-based application versus a desktop application (Like how Gmail works better as a web-app vs Editors working better as a desktop app).Speechmaking
@JonTan then another question will be : - what takes more effort for the development ? - what the cost for each method ? oh one more thing: web application you just need to replace the code in the server to update the application, no need to manually install each pcPanaggio
The web application would surely take more effort. In terms of cost... I have no idea. My first assumption was the web application would cost more because it needs to be hosted on a dedicated server. However, even if I did a desktop application, the database would be hosted on the same dedicated server... So I think the costs are about the same and I am not sure about any other costs.Speechmaking
Just out of curiosity though (sorry, hope I am not being a bother, I know people hate what ifs), pretend I had the same amount of experience in both. In this situation, is there any clear advantage of going the web application route over the desktop application route and vice-versa that you can think of? If not then that is okay, I feel like everything has already been said. Just probing a bit more to see if theres any other design choice to think about.Speechmaking
@JonTan web application accessible using browser which is common things now, installation, update and maintenance is easy (just upload it to the main server) and take a look at this link : seguetech.com/desktop-vs-web-applications hope this helpsPanaggio
@JonTan i think web application ui is better than desktop if that matter. if you have good experience with both then just do it with whatever you like the most. flip coin if in doubt :DPanaggio
@BaimWrong Got it haha thank you so much. Really appreciate all the time you put into your responses. Wish I could upvote, but I just started using stack overflow so I need more reputation :( Ill upvote this whenever I can though.Speechmaking
@JonTan A lot of things went into it, but I'd say the ease of remote access combined with the availability of AJAX (still quite new at the time - AJAX really didn't become very standard until ~ 2005-2006) which allowed for the type of really fast interactive web pages that we now take for granted, plus broadband availability for remote access (both users & support) - it all came together at that time. Now it is almost a no-brainer - everyone is used to web-style GUI and the Javascript libraries available (starting with jQuery) make web applications best choice, IMHO, for >90% of applications.Spancake
@JonTan A few more notes: Cost of hardware is same or lower for web than desktop - plus you have the option, depending on the customer requirements, security, etc. of a hosted solution (traditional shared or dedicated host or Amazon Web Services or similar) so that you have no upfront hardware costs at all. Development can be much faster, except that you first have to get up to speed with PHP or Python or some other "typical" web language. About the only apps I see that are still likely best on desktop are video editing and similar intense interactive graphic applications.Spancake
@manassehkatz I see, thank you a lot for your input. I really appreciate it. :) Looks like a web application really is the way to go. I can definitely see how web applications are replacing desktop applications. I guess at this point, it really just depends on how soon they need a working version. If its ASAP, I will most likely just do a desktop application at work and learn web development (possibly convert the desktop application to web) on the side. Thank you for all the help. :)Speechmaking
@JonTan The model I propose will help you transition to a web UI when you get up to speed. If you do it right then the services don't change, just the UI part. A much simpler proposition and you also get around some of your more immediate problems such as database connections. You also have the chance to fix bugs immediately (in the services) provided they don't have a UI component.Ocieock
@Ocieock that is exactly what I was thinking last night. I will present all of this to the company today. From there, its up to them. Thank you.Speechmaking

© 2022 - 2024 — McMap. All rights reserved.