Application Layering

Application Layering

Application layering is applying the idea of separation of concerns to your software. Understanding how each of the J2EE technologies fits within an overall architectural road map is the key to writing flexible, maintainable applications whose components do not step on each other's toes. In explaining our approach, we have described these five layers in detail:

  • Presentation— The presentation layer consists of objects defined to accept user input and display application outputs.

  • Controller/Mediator— The controller isolates the user interaction from the business model while the mediators capture and decouple application-specific functionality from presentation technology by performing domain model requests for presentation or controller objects that drive a specific application use case. Mediator classes are defined to satisfy a specific application user interface function or use case; they are less granular than controllers.

  • Domain— The domain objects are the primary assets of a J2EE application. The domain contains business rules and logic. Domain objects know nothing of how data is presented or persisted.

  • Data Mapping— The data mapping layer moves data from domain objects to back-end data sources and vice versa.

  • Data Source— The data source layer physically stores and retrieves data from back-end data sources.

We've demonstrated how this five-layer architecture can map to the different parts of the J2EE standard, and how you can use the WebSphere tool set and runtime to build and deploy applications that use those technologies. We hope that our architectural road map and the comparisons of different approaches to similar ends (like JSP and XML/XSLT) have helped you understand how to choose which approach to take.

Also, we have discussed application responsibilities that developers must apply to all application development efforts. Implementing these activities consistently using a design that is extendible facilitates reuse and minimizes side effects when requirements change. Moreover, standardizing these services across all applications can yield efficiencies in determining and communicating new development and maintenance activities.

     Python   SQL   Java   php   Perl 
     game development   web development   internet   *nix   graphics   hardware 
     telecommunications   C++ 
     Flash   Active Directory   Windows