web tier design patterns - developintelligence.com · the solution: model-view-controller !...

37
Web Tier Design Patterns

Upload: others

Post on 25-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Web Tier Design Patterns

Objectives

! " Learn design patterns relevant to web application

programming

! " Model View Controller

! " Front Controller

! " View Helper

! " Composite View

! " Business Delegate

! " Dispatcher View

! " Service To Worker

! " Understand how enterprise applications can benefit from these patterns

The Problem

! " Application construction

! " Applications built by many groups of developers

! " Groups have different skills

! " Groups have different objectives

! " Groups have different timelines

! " This translates into various pieces of the application being

developed independently

! " Application use

! " Applications often also need to support multiple clients

! " Different clients can interact with application in different ways

! " Share business data in different ways

! " Interactions follow different flows

! " This increases the complexity and risk of an application

The Solution: Model-View-Controller

! " Model

! " Represents business data and business rules

! " Typically a Java Bean or a POJO (plain old java object)

! " Controller

! " Maps user interactions to calls on the model, which often results

in a change to the business data

! " View

! " Renders the data encapsulated by the model and guarantees

coordination with any changes to the business data

! " Each view must remain consistent with the backend data it

represents

Benefits of MVC for the Web Tier

! " Separation of concern

! " Maintain modularized approach

! " Increased flexibility

! " For example, can move web-resident model to the EJB tier

! " Model components can be viewed in multiple ways

! " Support for new clients is simple

MVC Diagram

MODEL!-Encapsulates business data!and business rules!-Handles calls from the CONTROLLER!-Notifies VIEW of changes"

CONTROLLER!VIEW!-Provides business logic!-Translates user requests into calls to MODEL!-Selects VIEW for response"

-Displays the MODEL data!-Sends user request to CONTROLLER!-Notified by MODEL of state change"

User request"

Select View"

The Model 1 Architecture

! " A variation of MVC for the web

! " Useful for smaller, simpler applications

! " Not as loosely coupled as larger-scale applications require

! " Not as complex to build / maintain

! " Model-1 architecture focuses on two components

! " JSP

! " Each JSP is responsible for handling requests

! " Also responsible for providing responses

! " JavaBeans

! " Model-1 solutions typically have large amount of JSP scriptlet code

Model 1 Diagram

client!

JavaBean!

jsp!

database!

request!

response!

(model)!

(controller)!

(view)!

The Model 2 Architecture

! " Also a variation of MVC

! " Looser coupling

! " Higher cohesion

! " Increased modularity = increased flexibility

! " Better for larger-scale applications

! " Model-2 architecture adds servlet to Model-1 architecture

! " Servlet acts as a controller

! " Servlet focuses on low level tasks

! " Model-2 architecture changes role of JSP

! " JSP focuses on presentation only

! " Lessens scriplet code

! " Much stricter separation of model from view from controller

Model 2 Diagram

client!

JavaBean!

(model)!

jsp!

database!

request!

response! Servlet"(controller)!

(view)!

Front Controller

! " The “front door” to your application

! " Generally a pre-processor, but can be used for post-

processing too

! " Often used to enforce

! " Validation rules

! " Authentication constraints

! " Dispatching of requests

! " Session management

Front Controller Class Diagram

Client! Front Controller!

ServletFC! JSPFC!

request!

<<servlet>>! <<jsp>>!

Front Controller Sequence Diagram

Client! Controller! Dispatcher! View!

1. Send Request!

2. Send Request!

1.1 Delegate Request!

2.1 Forward Request!

1.1.1 Forward Request!

Front Controller Servlet Strategy

! " This is the most common approach

! " All requests route through the servlet

! " Front Controller processing is more logically separated from the view

Front Controller JSP Strategy

! " Generally, this is undesirable due to the mismatch of low-

level processing and view processing

! " Tends to lead to complicated JSP code

Modularized Front Controller

! " For complex logic, a front controller can be broken into

smaller components

! " For example, an authentication component, validation component, and dispatching component

! " This continues the pursuit of architectural modularity

View Helper

! " Separates presentation logic from presentation

components (views)

! " Represent the model from a web tier perspective

! " Typically implemented as a JavaBean component

! " The JSP and View Helper can be implemented

independently, allowing for

! " Separation of developer roles

! " Flexibility in the web tier

! " Multiple views sharing the same helper

View Helper Class Diagram

Client!

View!

Helper!

1..*!

0..*!

View Helper Sequence Diagram

Client! View! Helper!Business"Service!

1. Request!1.1 Get Data!

1.1.1 Get Data!

Implementing View Helper as a Tag

Library ! " Requires more work upfront to create the tag library

! " May be more reusable than a simple JavaBean

component

! " Custom tags also add manageability concerns

! " Deploying tags, tag libraries, and descriptors

Business Delegate

! " Used to provide a façade over a complex business tier

! " Normally, presentation components interact with business

services directly, which may cause problems

! " If the business tier API changes, it affects the presentation tier

! " Heavy interaction with the business tier may result in too many

network calls

! " A Business Delegate can perform caching and throttling

Business Delegate Class Diagram

Client!

Business Delegate!

Business Service!

Business Delegate Sequence Diagram

Helper!Business Delegate!

Business Service!

1. Create!1.1 Invoke!

Business Delegate as a Proxy

! " The Business Delegate exposes the same interface as

the business tier

! " Calls to the Business Delegate can be forwarded to the business tier

! " Data can also be cached and calls short-circuited

! " This can reduce network calls and increase performance

Business Delegate as an Adapter

! " Excellent for communication with disparate business

components

! " For example, communication with a web service component could be accomplished

! " The delegate would parse the XML request

! " The data in the request could be sent to an existing, non-XML

aware, business tier

! " A response could work the same way

Composite View

! " Modern web pages are built from smaller “sub-pages”

! " All Composite View does is define a pattern for creating

modularized views that can be combined

! " Complicated views can be managed much simpler via

separate view components

! " This does add some runtime overhead in exchange for

the added flexibility

Composite View Class Diagram

View Component!

Sub View! Composite View!

Dispatcher View

! " Combines Front Controller and View Helper

! " May also involve Composite View

Dispatcher View Class Diagram

Client!Front Controller!

View!View Helper!

<<servlet>>!

<<jsp>>!

1..*!

1..*!

Dispatcher View Sequence Diagram

Client! Controller! View! Helper!

1. Request!1.1 Dispatch!

1.1.1 Get Data!

To business tier!

Service To Worker

! " Structurally identical to Dispatcher View

! " Difference is in the behavior and location of the

intelligence

! " Now, the Front Controller interacts with View Helper

components before selecting a view

Service To Worker Class Diagram

Client!Front Controller!

View!View Helper!

<<servlet>>!

<<jsp>>!

1..*! 1..*!

1..*!

Service To Worker Sequence

Diagram

Client! Controller! View! Helper!

1. Request!

1.1.1 Dispatch!

1.1 Get Data!

To business tier!

Summary

! " There are several relevant design patterns for the web

tier

! " Model View Controller

! " Front Controller

! " View Helper

! " Composite View

! " Business Delegate

! " Dispatcher View

! " Service To Worker

! " These patterns can benefit enterprise applications by promoting modularity, flexibility, and reuse

About DevelopIntelligence

! "Founded in 2003

! "Provides outsourced services to learning organizations in area of software development

! "Represents over 35 years of combined experience, enabling software development community through educational and performance services

! "Represents over 50 years of combined software development experience

! "Delivered training to over 40,000 developers worldwide

! 2003 - 2007 DevelopIntelligence

Areas of Expertise

! " Instruction

! " Java

! " J2EE

! "WebServices / SOA

! "Web Application

Development

! "Database Development

! "Open Source

Frameworks

! "Application Servers

! "Courseware

! " Java Application

Development

! " Java Web App

Development

! "Enterprise Java

Development

! "OOAD / UML

! " IT Managerial

! "Emerging Technologies and Frameworks

! 2003 - 2007 DevelopIntelligence

Contact Us

! "For more information about our services, please

contact us:

! "Kelby Zorgdrager

! "[email protected]

! "303-395-5340

! 2003 - 2007 DevelopIntelligence