MVC Architecture - Oakland University

advertisement
Application Architectures
Vijayan Sugumaran
Department of DIS
Oakland University
Centralized Architecture
Online-Processing/Timesharing
Two-tier (Fat Client)
Three-tier (Thin Client)
N-tier with Object Technology
Web-based Applications
Terminology




J2SE - Java 2 Platform, Standard Edition, provides a
complete environment for writing, deploying, and
running applets and applications in the Java
programming language
J2EE - Java 2 Platform, Enterprise Edition, defines
the standard for developing component-based
multitier enterprise applications
JavaBeans - JavaBeans technology is the
component architecture for the Java 2 Platform,
Standard Edition (J2SE).
EnterpriseJavaBeans - Enterprise JavaBeans (EJB)
technology is the server-side component architecture
for the Java 2 Platform, Enterprise Edition (J2EE)
platform. EJB technology enables rapid and
simplified development of distributed, transactional,
secure and portable applications based on Java
technology
J2EE Platform Overview
MVC Architecture

MVC: Model-View-Controller Architecture

Widely used for interactive applications

It divides functionality among objects involved in
maintaining and presenting data

Minimize the coupling between them

Traditional application tasks (input, processing, and
output) mapped to the graphical user interaction
model

MVC architecture divides applications into three
layers – Model, View, and Controller

Specific tasks and responsibilities for each layer
MVC Architecture Advantages

MVC separates design concerns (data persistence
and behavior, presentation, and control), decreasing
code duplication, centralizing control, and making the
application more easily modifiable
 MVC also helps developers with different skill sets to
focus on their core skills and collaborate through
clearly defined interfaces
 New data sources are easy to add to an MVC
application by creating code that adapts the new data
source to the view API
 New client types are easy to add by adapting the new
client type to operate as an MVC view
 MVC clearly defines the responsibilities of
participating classes, making bugs easier to track
down and eliminate
Model

The model represents business data and
business logic

Operations that govern access and
modification of the business data

Often the model serves as a software
approximation to real-world functionality

It notifies views when it changes and provides
the ability for the view to query the model
about its state

It also provides the ability for the controller to
access application functionality encapsulated
by the model
View
 The
view renders the contents of the
model
 It
accesses data from the model and
specifies how that data should be
presented
 It
updates data presentation when the
model changes.
 The
view also forwards user input to the
controller.
Controller

The controller defines the application behavior
 Dispatches user requests and selects views for
presentation
 Interprets user inputs and maps them into
actions to be performed by the model
 In a stand-alone GUI client, user inputs include
button clicks and menu selections.
 In a Web application, they are HTTP GET and
POST requests to the Web tier.
 The controller selects the next view to display
based on the user interactions and the outcome
of the model operations
 An application typically has one controller for
each set of related functionality
Model-View-Controller Architecture
J2EE Web Application

The Web-tier controller receives each incoming HTTP
request and invokes the requested business logic
operation in the application model

Based on the results of the operation and state of the
model, the controller then selects the next view to display

Finally, the controller generates the selected view and
transmits it to the client for presentation
Model-1 Vs Model-2 Architecture

Model 1







Web browser directly accessing Web-tier JSP pages
The JSP pages access Web-tier JavaBeans that represent
the application model
The next view to display is determined either by hyperlinks
selected in the source document or by request parameters
A Model 1 application control is decentralized, because the
current page being displayed determines the next page to
display
In addition, each JSP page or servlet processes its own
inputs (parameters from GET or POST)
The Model 1 architecture can provide a more lightweight
design for small, static applications
Model 1 architecture is suitable for applications that have
very simple page flow, have little need for centralized
security control or logging, and change little over time.
Model-1 Vs Model-2 Architecture

Model 2

Model 2 architecture introduces a controller servlet between
the browser and the JSP pages or servlet content being
delivered

The controller centralizes the logic for dispatching requests
to the next view based on the request URL, input
parameters, and application state

The controller also handles view selection, which decouples
JSP pages and servlets from one another

Model 2 applications are easier to maintain and extend,
because views do not refer to each other directly

The Model 2 controller servlet provides a single point of
control for security and logging, and often encapsulates
incoming data into a form usable by the back-end MVC
model

For these reasons, the Model 2 architecture is
recommended for most interactive applications
J2EE Design Patterns




Intercepting filter--This pattern applies to request
pre- and post-processing. It applies additional
services needed to process a request.
View helper--A view helper encapsulates the
presentation and data access logic portions of a view,
thus refining the view and keeping it simpler.
Composite view--This pattern makes view
presentation more manageable by creating a
template to handle common page elements for a
view. The composite view template captures the
static features (headers, footers, etc.)
Front controller--This pattern provides a centralized
controller for managing requests. A front controller
receives all incoming client requests, forwards each
request to an appropriate request handler, and
presents an appropriate response to the client
J2EE Design Patterns




Value object--This pattern facilitates data exchange
between tiers (usually the Web and EJB tiers) by
reducing the cost of distributed communication
Session facade--This pattern coordinates operations
between cooperating business objects. It
encapsulates and hides the complexity of classes
that must cooperate, and isolates its callers from
business object implementation changes
Business delegate--This pattern intervenes between
a remote business object and its client, adapting the
business object's interface to a friendlier interface for
the client.
Data access object--This pattern abstracts data
access logic to specific resources. It separates the
interfaces to a systems resource from the underlying
strategy used to access that resource.
Download