29
Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Embed Size (px)

Citation preview

Page 1: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Model-View-Controller Architecture in a Systems Analysis and Design Course

Dr. Robert F. Zant

Illinois State University

Page 2: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

The Plan

• Curriculum overview

• MVC Concepts

• Example MVC implementation

Page 3: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Curriculum Structure

Systems Development I

Systems Development II Object Oriented Systems DevelopmentSystems Development/Analyst Web Application Development

Directed Project in Information Technology

Page 4: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Systems Development I

• Taken by all IS majors

• Covers Traditional and Object-Oriented SAD

Page 5: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Systems Development II

• Taken by IS majors in Systems Development/Analyst Sequence

• Covers Traditional SAD

• Includes Simulated Project

Page 6: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

OO Systems Development

• Taken by IS majors in Web Application Development Sequence

• Covers Object Oriented SAD

• Includes Simulated Project

Page 7: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Directed Project in Information Technology

• Taken by IS majors in both sequences

• Includes Real-World Project

Page 8: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Curriculum Structure

Systems Development I

Systems Development II Object Oriented Systems DevelopmentSystems Development/Analyst Web Application Development

Directed Project in Information Technology

Page 9: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

MVC Architecture

• Used in both second level courses as a unifying theme

• Provides an architectural template for novice system developers

• Use is prevalent in industry

Page 10: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

MVC Structure

Page 11: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

MVC

• Controller - Interprets user requests and invokes Model and View

• Model - contains application logic and access logic for persistent data

• View - displays model results to user

Page 12: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Primary Data Flow

Page 13: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Server Side Programming

Page 14: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Client Side Interface Design

Page 15: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Guidelines

• All responses from users are processed first by a Front Controller

• Communication of user responses to the Front Controller is by name (e.g., field names on HTML forms)

• A Front Controller invokes a Page Controller, not a Model or View

• A Page Controller invokes one Model and one View

Page 16: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Guidelines (cont.)

• A Model executes application logic and accesses data stores (contains no HTML)

• A Model creates an XML file or an object containing its results

• Communication of Model results to a View are by name (e.g., tags in XML)

Page 17: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Guidelines (cont.)

• A View creates a presentation stream

• A View contains no application logic

• A View obtains all non-constant text data from the XML file or result object produced by the Model

• A View does not directly reference any data in a Model or URL for the site

Page 18: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example Front Controller

<% NOTE: This is the Front Controller ; DEFAULT pc = "menu", sys_base = $path_Translated_dir$"/", url_base = http:"//"$server_name$$path_info_dir$"/", home = $url_base$index.odb ;

SESSION LOGIN = "login.odb?from=$pc$", TIMEOUT = 10 ;

INCLUDE $sys_base$"c/"$pc$".c"; %>

Page 19: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example Page Controller

<% NOTE: Page Controller to List Products ;

INCLUDE $sys_base$m/Products/table1.m ;

INCLUDE $sys_base$v/Products/table1.v ; %>

Page 20: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example Model

<% NOTE: Model to List Products ; DATABASE "DSN=myProducts" ; SELECT Category, ProductID, Heading, Description, UnitPrice, UnitsOnHand FROM Products ORDER BY ProductID ; OUTPUT $xmlfile$ ; NOTE: xmlfile defined during login;%> <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl” href="$xslt$”?>

<root> <links> <home>$home$</home> </links>

Page 21: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example Model (cont.)

<products><% EACHROW %> <row> <ProductID>$ProductID$</ProductID> <Category>$Category$</Category> <Description>$Description$</Description> <UnitPrice>$UnitPrice$</UnitPrice> <UnitsOnHand>$UnitsOnHand$</UnitsOnHand> </row><% ENDROW %> </products> </root> <% OUTPUT %>

Page 22: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example XML File

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="$xslt$" ?><root> <links> <home>http://localhost/new/widgets/index.odb</home> </links> <products> <row> <ProductID>3</ProductID> <Heading>Reinforced plastic 8 inch</Heading> <Category>Plastic Widgets</Category> <Description>Oversized polyethelene with steel</Description> <UnitPrice>10.0000</UnitPrice> <UnitsOnHand>70</UnitsOnHand> </row> </products> </root>

Page 23: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example View

SET xslt = $url_base$"v/Products/xslt/table1.xslt" ;

INCLUDE $xmlfile$ ;

Page 24: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example XSL

<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="html" omit-xml-declaration="yes"/><xsl:template match="/"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta http-equiv="content-type" content="text/html" /><title>World Wide Widgets</title><style type="text/css"> @import url(v/widgets.css);</style></head><body>

Page 25: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example XSL (cont.)

<div id="pageHeader"><a><xsl:attribute name="href"> <xsl:value-of select=“root/links/home"/> </xsl:attribute><h1>World Wide Widgets</h1></a></div> <!-- End of Page Header --><xsl:apply-templates /><div id="pageFooter">[<a><xsl:attribute name="href"> <xsl:value-of select=“root/links/home"/> </xsl:attribute>Continue...</a>]</div> <!-- End of Page Footer --></body></html></xsl:template>

Page 26: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example XSL (cont.)

<xsl:template match=“products"> <table> <caption>Products<br />by Product ID</caption> <tr> <th>Product ID</th><th>Product</th> <th>Category</th><th>Description</th> <th>Price</th><th>On Hand</th> </tr> <xsl:apply-templates select=“row"/> </table></xsl:template>

Page 27: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Example XSL (cont.)

<xsl:template match=“row"> <tr> <td><xsl:value-of select=“ProductID" /></td> <td><xsl:value-of select="Heading" /></td> <td><xsl:value-of select="Category" /></td> <td><xsl:value-of select="Description" /></td> <td><xsl:value-of select="format-number (UnitPrice,'$###,##0.00')" /></td> <td><xsl:value-of select="UnitsOnHand" /></td> </tr></xsl:template></xsl:stylesheet>

Page 28: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Recommended Software

• ODB Script– http://odbscript.com/

• Abyss Web Server– http://www.aprelium.com/

• Cooktop– http://xmlcooktop.com/

• TextPad– http://www.textpad.com/

Page 29: Model-View-Controller Architecture in a Systems Analysis and Design Course Dr. Robert F. Zant Illinois State University

Thank You

Questions?