J2EE Architecture and Design Patterns - Northwestern Polytechnic ...

Post on 15-Jan-2015

2.337 views 1 download

Tags:

description

 

Transcript of J2EE Architecture and Design Patterns - Northwestern Polytechnic ...

J2EE Architecture and Design Patterns

Student: Fang FangAdvisor: Dr. Glen Qin

Date: 05/14/2005

Agenda

● Introduction to “Architecture”

● J2EE Architecture Diagram

● Distributed Programming Serviced

● Modular-Based Development

● J2EE Application Deliverable

● J2EE Standards

● Patterns Arose from Architecture

● Gang of Four Patterns

● Q & A

Introduction to Arthitecture

● Architecture is the overall structure of a system, and it can contain subsystems that interface with other subsystems

● Architecture versus Design (level of details)

● Architecture considers bunch of *abilities

CapabilityAvailabilityReliabilityManageability and FlexibilityPerformanceScalabilityExtensibility, Validity, ReusabilitySecurity

J2EE Application I J2EE Application II

Client tier

Web tier

Business tier

EIS tier

Clientmachine

J2EEServermachine

DataBaseServermachine

ApplicationClient

Dynamic HTML pages

JSP/Servlet

EnterpriseBeans

DatabaseDatabase

EnerpriseBeans

Multi-tiered J2EE applications

Distributes Programming Services

● Naming and Registration (JNDI)

● Remote Method Invocation (RMI)

● Protocols

● Distributed Object Frameworks

Between user interface and business tiers HTTP, RMI, CORBA, DCOM, JMS

Between business and persistence tiers JDBC, IDL to COM bridge, JMS, plain socket, native APIs via JNI embedded in resource adapters

- CORBA- Native Language Integration- Java/RMI- DCOM

● XML

EJB Distributed Nature (I)

EJB Container

BeanEJBObject

EJBHome

Remote Stub

Home Stub

Client

EJB Distributed Nature (II)

J2EE Modular-Based Development

● Presentation tier developer

● Bean provider

● Application assembler

● Component provider

● Application server provider

● EJB container provider

Staff be categories into different roles:

J2EE Application Deliverable

Web archive(.war)web.xml

EJB archive(.jar)ejb-jar.xml

Client archive(.car)application-client.xml

Enterprise archive (.ear)application.xml

Deployment Descriptor Sample

<ejb-jar> <enterprise-beans> ... </enterprise-beans> <assembly-descriptor> <security-role> <description> This role represents everyone who is allowed full access to the Cabin EJB. </description> <role-name>everyone</role-name> </security-role> <method-permission> <role-name>everyone</role-name> <method> <ejb-name>CabinEJB</ejb-name> <method-name>*</method-name> </method> </method-permission> <container-transaction> <method> <ejb-name>CabinEJB</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor></ejb-jar>

J2EE Standards

● CTS

● J2EE SDK

Contains following specs

Together with below's offerings

● EJB spec

● Servlet spec

● JSP spec

Patterns Arose from Architecture and Anthropology - Christopher Alexander

● Is quality objective?

● How do we get good quality repeatedly?

● Look for the commonalities

● ...especially commonality in the features of the problem to be solved

Moving from Architectural to Software Design Patterns

● Adapting Alexander for software

● The Gang of Four did the early work on design patterns (Gamma, Helm, Johnson, Vlissides)

Key Features of Patterns

Item Description-------------------------------------------------------------------------------------------------------------Name All patterns have a unique name that identifies themIntent The purpose of the patternProblem The problem that the pattern is trying to solveSolution How the pattern provides a solution to the problem in the context in which it shows upParticipants The entities involved in the patternand collaboratorsConsequences The consequences of using the pattern. Investigates the forces at play in the patternImplementation How the pattern can be implementedGeneric structure A standard diagram that shows a typical structure for the pattern

Enumerate GoF Patterns

Structural Patterns

AdapterBridgeCompositeDecoratorFacadeFlyweightProxy

Behavioral Patterns

Chain of ResponsibilityCommandInterpreterIteratorMediatorMementoObserverStateStrategyTemplate MethodVisitor

Creational Patterns

Abstract FactoryBuilderFactory MethodPrototypeSingleton

Abstract Factory Pattern

“Provide an interface for creating families of related or dependent objects without specifying their concrete classes." - GoF

Solution

A Switch to Control Which Driver to Use

class ApControl { . . . public void doDraw() { . . . switch (RESOLUTION) { case LOW: // use lrdd case HIGH: // use hrdd } } public void doPrint() { . . . switch (RESOLUTION) { case LOW: // use lrpd case HIGH: // use hrpd } }}

Problem class ApControl { . . . public void doDraw() { . . . myDisplayDriver.draw(); } public void doPrint() { . . . myPrintDriver.print(); }}

abstract class ResFactory { abstract public DisplayDriver getDispDrvr(); abstract public PrintDriver getPrtDrvr();}

class LowResFact extends ResFactory { public DisplayDriver getDispDrvr() { return new LRDD(); } public PrintDriver getPrtDrvr() { return new LRPD(); }}class HighResFact extends ResFactory {...}

The Facade Pattern

● “Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.” - GoF

Problem Solution

Stragegy Pattern

Solution

“Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.” - GoF

Problem

J2EE Best Practice – MVC Pattern (I)

● Model

● Controller

● View

Represents the application data along with methods that operate on that data.

Displays that data to the user.

Translates user actions such as mouse movement and keyboardinput and dispatches operations on the Model.

J2EE Best Practice – MVC Pattern (II)

Http requestor post

Response

Forward

Dispatch

Update

Extract

Client browser

Controller(action servlet)

Businesslogic

Model(server sideJavaBean/EJB)

View(JSP page)

● Q & A● Thank you!!