We help IT Professionals succeed at work.

Web Application Or Windows Application, Which One Would Be Most Suited For My Project??

Greetings everyone.
I have worked on small projects where I had to develop both Windows Applications using VB.NET and Web Application using ASP.NET, and in both cases I used MS. Visual Studio 2005 as my Integrated Development Environment (IDE). Now my question is, if a new project involves the development of huge system which must have "payroll" and "human resources" features plus many more, and if I am given the choice between developing it as a Web Application or Windows Application, then would would be the best choice for me to take??

There are many issues I have been thinking of, involving performance of the system specially when it comes to mathematical calculations for the payroll, and one thing I know is that this system will be deployed inside one physical location (a building) and access from outside is not required, but then having many computer machines for users to operate on this system makes me think of how Web application option would be so convenient, but convenience is not the most important variable, instead it is "performance" .

there is also another issue came up yesterday, a friend of mine who is an oracle developer showed me one of his projects which he had developed some time ago, and his system is accessible from any Internet Browser as long as the right plugins are installed ofcourse, and the applications starts by displaying what looked to me like a JAVA applet, it and  the user operates this system through this "window" as if he is running a regular Windows Application, but what got my attention is the ease of accessing this system via a web browser, that what made me think of a JAVA Applet, which can be accessed from any web browser as long as  the required JAVA runtimes are installed on the computer machine. so, I am giving a choice  to develop the "payroll and human resources" project with JAVA, then I  could manage but it would take me a while to refresh my knowledge, besides I have only had a four-month training with JAVA Core many years back, and I was never exposed to any IDEs supporting JAVA development, so working with JAVA will be surely a new experience for me, more like an adventure.

I really would appreciate it if I could get some feedback from  you guys, to help me make the right decision  on how to develop the "payroll and human resources" project.

Thanks in advance.

Watch Question

I can't tell you which is best for your situation, but I'm happy to give you my thoughts:

If your users will need to import/export data into the application, make sure that the chosen method supports the import/export.  This is sometimes easier to do in a fat GUI client.

Both can be used to create very efficient and smooth data entry front-ends, but usually a web page refresh or download is longer than a fat client's ability to commit and retrieve data (assuming a decent hardware platform).

Any interaction with things like printers, scanners, modems, etc. need to be taken into account.  Scanning documents into the application, printing forms, and transmission of electronic payroll information to the bank need to be considered if they are in scope of the project.  Fat GUI clients generally work better with local hardware than web based apps.

Many of the systems I'm seeing these days have a web front-end for most users, while providing a "legacy" fat client GUI for admin or power users.  The Fat GUI frequently exposes more options.

It is much easier to control versioning, hot fixes, etc in a true web app as it just means changes to the web server or servers.

Changes to database connections, etc are quickly done on the server in a web app environment.  This is useful in switching from one DB server to another for scalability.

It's pretty easy to setup a "test" environment on a workstation-class or lower powered server.  When running a fat GUI application, there are frequently DLL, registry, Config File, etc conflicts making it difficult or impossible to run against a test or training environment on the same computer as a production client.

I tend to prefer web apps these days because of the ubiquity of the client software.  When a new computer comes into your environment, you just point it to the web server.  While large Java, or large .Net 2.0 ClickOnce packages can be installed as easily, they can sometimes be slow upon first download or after an upgrade, causing user frustration.

Availability and fault-tolerance requirements have to be balanced out with performance.  If fault-tolerance is required, it may not be best to run the app on a single server without clustering or fail-over capabilities.  MS SQL server, for example, can be clustered, and with fat GUI clients, they can contain the whole application.  In this distributed environment, a SQL server in a cluster can automatically fail-over, and the fat clients keep humming along.  In a web-based environment where the web servers can't be duplicated for fail-over, a single server component can take down the whole app.

Even just as a developer, there's always a chance that remote access will be hugely helpful.  Imagine having to VPN in because the app isn't working, and the fat GUI is super slow because it's sending large amounts of data back and forth.  A web app, however, allows the web server and DB server to talk, sending over only the presentation information to the web browser.
Greetings Franked_IT,
thanks for the reply mate! you have shared with me so many points I haven't thought of. thanks!
I do have another thing in mind, and I don't have much information about, and now I am wondering about it after my conversation with friend of mine.  It seems that when it comes to Oracle Developers, they seem to have what they call an "Application Server", and they deploy all their work, like "forms" and whatever else on this Application server, and  then the end-user accesses this form through a URL puts it in the browser, and  the "Login" Form pops up and user starts working on  the system through this popup "Form". I wonder, can something similar be done with Microsoft .NET Technology?

I think that Oracle is largely based on server-side Java (Servlets and JSP pages) and also relies heavily on their own stored procedures.  I've used Oracle's portal app server, and it's pretty amazing what it can do.  Since the web, app, and DB layers are all developed by Oracle, they make life quite easy to manipulate the objects in the web app...after a learning curve.

I'm not much of a .Net developer, I mostly have worked with server-side Java myself.  I'm not aware of an application "framework" that is as easy to use as Oracle's for rapidly creating enterprise applications in any language.  

MS has certainly seen this gap, and I think .Net's web forms are probably what you're looking for:

Explore More ContentExplore courses, solutions, and other research materials related to this topic.