stateless is a fundamental property of the internet, why should we consider it wrong or to be fixed.
As we all know, there is a fundamental difference that requires legacy application development and web development to have substantially different architectures.This fundamental difference is that when you write code to run on a specific machine, you have a state-full condition, while when your write code to run on web-based applications, you have a state-less condition.
With the first condition, normally you take a persistent synchronous approach (at least in most state-full context), while with the state-less condition you would normally take a volatile asynchronous approach.
Building a robust and stable interface with a legacy application is easy enough; users are used to common Windows, dialog boxes, error boxes and so on. And it is easy enough to keep all relevant data in the RAM memory until the application is running. It's easy to force the user take certain actions (wizards, dialog boxes and so on).
However, achieving the same architecture on a web-based application is overly complicated and I believe is wrong; the environment is fundamentally different, so the architecture should follow suit.
ASP.NET WebForms was designed (in my opinion) to allow WinForms developer to quickly shift to WebForms by trying to make the internet a state-full system.
To achieve this, lots of page load is required to keep ViewState data, lots of cookies and session variables have to be used and lots of full page post back are required where few simple AJAX calls could do.
There are AJAX powered controls for ASP.Net web forms, however, the control over the JavaScript is often cumbersome and not complete and you end up with lots of complications and pieces of logic spread all over the project.
I did use WebForms at the beginning, but then I realised that it was not the way to go, the system is state-less and my design and implementation should cater for such a condition.
Microsoft has also shifted focus; WebForms is still alive and supported but not terribly active. From the introduction of MVC model and more support for HTML5 and JavaScript, the focus is being moved to a real web-based environment for real web-applications.
I am sure that a good piece of software, whether is written with WebForms, MVC or any other model, is still good software, however, I believe that the right technology and approach should be used in every project.
Any web-based project will have to be built with the state-less condition in mind; most probably WebForms is not a good approach.
Personally, I have dismissed the use of WebForms almost entirely; I use .Net components for my (SQL) Data and Business Layer (written in C#), ASP.Net as server scripting, HTML5, JavaScript and AJAX for the user interface and presentation layer and to enhance the user experience. Within the use of these tools, there are countless different solutions to explore, many more than the restricted WebForms model.
Please, feel free to comment and share!
;p)