2. Giving Up Client Control
The second major problem with Web-based applications is a significant usability problem. In a client/server application, when you write the client you control user movement through menus. By providing certain menu items on certain pages, you restrict the way users can move through the application and ensure that they will take a logical path. Client/server applications act as finite state machines, which have a limited number of states and always know what state the user is in.
On the Web, developers don't have the benefit of knowing what state their users are in. To complicate matters, browsers typically contain a Back button and Forward button. Web users rely on these buttons as navigational shortcuts but they make it very difficult for the developer to control the user experience as part of the application.
Because of these buttons, the developer never really knows what path the user followed to end up on a particular page. By using the Back and Forward buttons, users can get out of sync without knowing it. Programmers have tried various methods to work around this obstacle, with little success.