I believe many people are writing web applications for the wrong reasons. The most common reason for choosing a Web application over a WinForms application is - "with a Web application, deployment and version updates aren't required on the client's computer"
Or even worse - "build a web front-end, because that's what everyone else is doing." How's that for teenage mentality? I've heard this from (non-technical) managers a number of times.
Not having to worry about deployment and updates is great, but that's not a good enough reason to choose Web over WinForms. Giving a WinForms application the ability to update itself is actually very easy. Check out this article on TheServerSide to see how No-Touch deployment, the Updater Application Block and Click-Once(.NET2) can be used. That's not one, but three, different ways to handle automatic updates!
WinForms is such a rich, powerful platform. I think it's really important to use the right technology for the job. If you're writing a Web application only because it's the cool thing to do and it'll take care of updates, think about it… maybe it could do better as a WinForms app?
If you haven't heard about the Microsoft Enterprise Library, do yourself a favour and check it out. The Enterprise Library (from now on called the EntLib) is bunch of application blocks that you can use to build your application.
Most applications require some of the same fundamental components. EntLib contains the following application blocks -
- Caching
- Configuration
- Cryptography
- Data Access
- Exception Handling
- Logging and Instrumentation
- Security
From what I've seen, these things are very (very) well written. Why re-invent the wheel? With these components it's possible to save yourself many weeks of development. Then you can spend time on the business-specific requirements.
However - I'm not 100% comfortable using these application blocks. Why?
Not because they are badly designed.
Not because they are hard to use.
Only because I did not write them. I feel like I would be a failure as a coder if I didn't write these things myself. Will I tell my manager - “Here's the application, but the data access block and that fancy configuration screen is actually a Microsoft thing.”
It's very difficult to shake this (childish?) feeling. Has anybody else experienced this?