views:

157

answers:

6

I want to create a small helpdesk ticket control system at work, that would allow users to enter a help request ticket; these tickets would then be assigned to a technician to work on, and the technician would mark it as "FINISHED" after the job is done. The requesting user would then be able to confirm and "CLOSE" the ticket, so that a Help Desk supervisor can keep track of response times and other stats based on the ticket details. Nothing too complicated, using .NET and SQL Server.

I am not sure if I should develop this as a Web application or a Windows application. This application would be used in the plant floor, so it would have to be easily available in the LAN. But we currently host a list of Windows applications via Citrix, so deployment would not really be an issue here. I don't really have experience creating winapps from scratch (though I've modified quite a few), but it feels like a web application would not look as "solid".

What advice can readers provide that could guide me into deciding the better architecture for this purpose?

EDIT Thank you all for your thoughts! Given that this is a very simple application, I could go either way. I decided to go with a Web application, as our local Citrix setup still has some quirks that need to be fixed.

+2  A: 

If you develop a web app you can pop it on your local intranet and your users can use either their browser within Citrix, or via the browser on their terminal.

However, if you've got the infrastructure in place, then perhaps a Windows application would be easier to develop and deploy. The only limitation with a windows application would be that if you were to move away from a Citrix environment, or were to expand to wanting to use the system externally to the plant floor, then it's harder to deploy and maintain your installations.

You can use Web Deployment with Windows applications which is quite nice as it updates itself whenever you publish a new version, however it is a bit of a faf for the users and you've no guarantees that the user will allow the update to occur. So if you had a critical update, the users could, in effect, choose to ignore it.

That's where the web application gets its bonus points. One installation and one point of access. If you update it, then all users are instantly on the latest version.

Personally, I'd go with the web application for future proofing and ease of acccess. It's slightly more work than a windows application, but the payoff usually exceeds the extra time required for the web application.

GenericTypeTea
Why doesn't ClickOnce publishing have a 'ForceUpdateOnUser' option? :)
Will A
@Will - I'm hoping it doesn't as I wrote a module to ensure that the application is always running the latest version. I've only got the one windows app out there and it's a bit of a maintenance nightmare. Some users leave their machines and the app open all the time. If I have a bug that wipes all data from a database, I've got to ring the companies and get them to close all the instances of the app and then do the update, otherwise they could continue and keep wrecking the place.
GenericTypeTea
^^ Not that I've ever had a bug as critical as that, it was just an example! :P
GenericTypeTea
@GenericTypeTea - me neither, mate - by the way, can you ROLLBACK a transaction that you've already COMMIT'ed? No? Oh dear... :) Have you implemented a "This application has unexpectedly crashed, click OK and it'll restart and will be all the better for it!" feature that kicks in when a new version is released? :)
Will A
A: 

Personally, in this situation I would go for a windows application - as it doesn't sound as though you've any compelling reason to invoke the complexity of web-ness (perhaps it's just me that thinks web => additional complexity). I'm sure you could create a neat little windows app. in half the time it would take to create a clunky web version of the same thing!

Will A
A: 

As a sidenote:

I really like the way Eclipse Mylyn integrates with XML-RPC. Check this architecture out for inspiration:

http://www.eclipse.org/mylyn/

If you went for a similar strategy you might start off with a simple front end (Maybe as a C# with a native GUI and augment with a web-based integration with your intranet at a later point whichever is the fastest for you to do).

In esscente a 3-tier approach where you have:

  • The database.
  • The application layer wich implements an XML communication protocol (XML-RPC is quite simple).
  • A front end where information fields and workflow steps are 'introspected' rather than hardcoded in the client.

Just a though, hope it helps.

tovare
+2  A: 

Before writing this system, I would highly recommend searching www.codeplex.com and making sure that adapting another work isn't a better choice. You may find something that is already written and meets your needs while allowing you to dig around, learn and be ready to modify when they want some new feature not already present. (I believe all projects grow if the users believe in the developer.)

If you are going to write your own and can do it in the time you have, I would highly recommend that you either go with MVC if web based, or WPF (using MVVM) if you want a desktop client. There is a definitive learning curve to either MVC or WPF with MVVM. But I believe the payoff will come. I have found changes much easier when there is a clear line between business logic and visual behavior.

Kirk
A: 

Write a winform app, and distribute it over ClickOnce. It's the best way to go, IMO.

code4life
A: 

Don't rush to make this decision. In the end, the Web vs Win question is about user accessibility. Much of the processing logic for your business need is independent of the interface. Spend your up front time building the right data model and identifying the necessary processing/services that you need. A well designed DB and service layer will work with both Web and Win apps. This will also give you the best flexibility as your "product" inevitably grows. You may very well want a web interface for managers needing reporting functionality and a WinForms application if you need more advanced user processing abilities for your users. And that is when your initial design work will payoff.

cdkMoose
@cdkMoose - Thanks, I was thinking about that same line. Web reporting is inevitable, so that part is pretty much decided. The person who wants this just wants to have something very simple to keep track of service requests, so I may end up writing a Windows app to avoid the quirks of control events and presentation formatting.
PJ