What are ASP.NET Web Forms?

What are ASP.NET Web Forms? How is this technology different than what is available though ASP?

ASP.NET Web Forms is a part of the ASP.NET web application framework. It is one of the three different programming models you can use to create ASP.NET web applications, the others being ASP.NET MVC and ASP.NET Web Pages…
ASP.NET Web Forms offer:
1.) Separation of HTML and other UI code from application logic.
2.) A rich suite of server controls for common tasks, including data access.
3.) Powerful data binding, with great tool support.
4.) Support for using Ajax, even if you don’t know JavaScript.

Although WebForms receives a lot of criticism amongst the community, it has its place. The main difference between WebForms and the other 2 models is that it tries to mimic a desktop application in its behaviour, which requires a lot of abstraction (since the web doesn’t really work like this), and also its range of server controls.

These are good and bad things, it’s great if you want your web app to behave like a desktop app, but if you don’t, you can spend a lot of time ‘fighting against’ it rather than it working in your favour. This was originally so that winforms developer had an easy way of getting into web development. With the server controls, they can be very useful for highlighting what WebForms is best at: rapid application development. When pitching to a client/your boss, the fact that your app will be built a lot faster in WebForms will go a long way. At the same time, it doesn’t give you much control over the HTML it renders for you, leaving the developer again, trying to fight against it when it isn’t doing what they want.

A lot of people will tell you that WebForms is straight up bad, and that MVC is the future, which I don’t agree with at all. They are simply different tools for different jobs, and each one has a chance to shine if used in the right way.