Emancipating the Mind
Applications are evolving, as are infrastructure and best practices. Figure 1 is an example of a classic WEB architecture that is common in java™ee. In this architecture, the application server is considered both to execute business logic and to handle WEB transactions. In addition to executing the transaction logic, applications running on application servers in this schema must:
Generate HTML.
Combine HTML layouts.
Handles the flow of a Web page to another page.
Figure 1. Classic MVC
Struts and JSF architectures provide device management. For many applications today, such architectures still play a significant role, but have a negative impact on the application model:
These typical applications rely on HTTP session state. Over time, this will cause the HTTP session to become very large, thus affecting the scalability of the application. The larger the session state, the greater the impact on scalability and execution capabilities.
The server's memory footprint is usually large. Many times, the framework maintains a memory copy of the application view, for example, creating a typical JSF application that maintains the object required to maintain the UI tree and any request-qualified objects. This increases the CPU cycle with the garbage collection of the UI objects.
Tight coupling development is another disadvantage of this approach. Web page developers differ from the skills of developers who create business logic. Web developers tend to be more adept at language, HTML, CSS, and script rendering. They often use tools such as the WYSIWYG editor, the Script Editor, and the browser debugging tools. They often make rapid changes to the visualization of Web pages and frequently move around. Business logic developers are typically proficient in data access, messaging, transaction processing, and consolidation, and are proficient in the use of various tools.
Since browsers can now host Rich Internet applications, it will be a first-class service consumer. A suite of tools such as Dojo enables a full set of UI tools. Browsers can now manage these transactions: layout management, Web flow between components, MVC, Web State, and other web transactions. Application servers can now process data rendering, execute business logic and business flows, and become increasingly stateless and scalable. Figure 2 shows a modern-style WEB 2.0 application.
Figure 2. Modern WEB 2.0 Architecture