User Tools

Site Tools


eg-259:lecture20

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
eg-259:lecture20 [2013/04/14 13:46] – [Web Application Development Frameworks] eechriseg-259:lecture20 [2013/04/16 07:21] (current) – [Market Impact] eechris
Line 13: Line 13:
 ===== Web Application Development Frameworks ===== ===== Web Application Development Frameworks =====
  
-  * We consider how web application development may be simplified by use of web application development frameworks. +  * We consider how web application development may be facilitated by use of web application development frameworks. 
   * We will consider some popular web application development patterns and give an example of "Agile" web applications development in the popular framework Ruby on Rails.    * We will consider some popular web application development patterns and give an example of "Agile" web applications development in the popular framework Ruby on Rails. 
   * References at the end of presentation.    * References at the end of presentation. 
Line 48: Line 48:
 //At the end of this lecture you should be able to answer these questions//: //At the end of this lecture you should be able to answer these questions//:
  
-  * Which language is often used to define the mappings between the cliner and database tiers and the middle tier? +  * Which language is often used to define the mappings between the client and database tiers and the middle tier? 
   * What is a //leaky abstraction// and why does the three-tier model leak as an abstract model of web applications?    * What is a //leaky abstraction// and why does the three-tier model leak as an abstract model of web applications? 
   * What is the principle purpose of a web application development framework?    * What is the principle purpose of a web application development framework? 
Line 75: Line 75:
  
  
-===== Three-tiers are not enough! =====+===== Three-tier Applications =====
  
-  * "Three-tierweb-application architectures have more that three tiers! +  * Client-server applications are quite often defined as "Three Tier Systems"
  
 {{eg-259:l20-three-tier.png?800|Traditional view of a three tier application}} {{eg-259:l20-three-tier.png?800|Traditional view of a three tier application}}
Line 83: Line 83:
 ---- ----
  
-Each tier may exist on the same physical host or may be separated by a network connection. Indeed, each layer may itself be distributed, as in the case of the web implementation of the client tier in which part exists in a web browser separated from a web server by a network connection. In the latter situation it is most likely that the middle tier will be co-located with the web server, but it doesn't have to be, and indeed may need to be separated due to non-functional issues such as scalability.+The idea of this architectural structure is that each tier can independently developed and changed if necessary. Thus the client is independent of changes to the server and the server is itself independent of the database. Each tier may exist on the same physical host or may be separated by a network connection.  
 + 
 +===== Three-tiers Are Not Enough! ===== 
 + 
 + 
 +  * "Three-tierweb-application architectures have more that three tiers!  
 + 
 +{{eg-259:l20-three-tier.png?800|Traditional view of a three tier application}} 
 + 
 + 
 +----
  
 +In the case of the web implementation of the client tier in which part exists in a web browser separated from a web server by a network connection. In the latter situation it is most likely that the middle tier will be co-located with the web server, but it doesn't have to be, and indeed may need to be separated due to non-functional issues such as scalability.
 ===== The Client (Web) Tier ===== ===== The Client (Web) Tier =====
  
Line 107: Line 118:
  
   * HTTP response URIs need to be converted into some form of application request.    * HTTP response URIs need to be converted into some form of application request. 
-  * suitable HTTP responses need to be generated to support all the layers of the client model, i.e. XHTML, CSS and JavaScript. +  * suitable HTTP responses need to be generated to support all the layers of the client model, i.e. HTML, CSS and JavaScript. 
   * The need so provide support for issues, such as authentication, authorization and session management, add their own complexities.    * The need so provide support for issues, such as authentication, authorization and session management, add their own complexities. 
  
Line 118: Line 129:
  
   * The database itself is defined and accessed using SQL, variations of which exists for each database implementation    * The database itself is defined and accessed using SQL, variations of which exists for each database implementation 
-  * The //data access layer// provides a layer of separation that allows the application developer to effectively embed SQL appropriately within the programming language that is being used to host the application. For example we have already seen how this is done for PHP+  * The //data access layer// provides a layer of separation that allows the application developer to effectively embed SQL appropriately within the programming language that is being used to host the application. 
  
 +See the [[eg-259:lecture19|additional notes]] for an example of how this is done for PHP. 
  
 ===== The Middle Tier ===== ===== The Middle Tier =====
Line 159: Line 171:
     * HTML/CSS version of application model     * HTML/CSS version of application model
     * database version of application model     * database version of application model
-    * HTTP version of application model+    * JSON version of application model
     * JavaScript version of the application model     * JavaScript version of the application model
     * Integration mapping view of the application model ...     * Integration mapping view of the application model ...
Line 186: Line 198:
 | ColdFusion | ColdSpring, Fusebox, Mach-II, Model-Glue | 4+ | | ColdFusion | ColdSpring, Fusebox, Mach-II, Model-Glue | 4+ |
 | Perl | Catalyst, Mason, Maypole, Interface | 4+ | | Perl | Catalyst, Mason, Maypole, Interface | 4+ |
-| PHP | Drupal, CakePHP, Zend Framework | 21+ |+| PHP | Drupal, CakePHP, Zend Framework, Lavarel | 21+ |
 | Python | CherryPy, Django, Zope, TurboGrears, TwistedWeb | 11+ |  | Python | CherryPy, Django, Zope, TurboGrears, TwistedWeb | 11+ | 
-| Ruby | Ruby on Rails | and others | +| Ruby | Ruby on Rails, Sinatra | and others |  
 +| JavaScript | Meteor, Node.js | some others |
  
 ---- ----
Line 439: Line 452:
 ===== Demo ===== ===== Demo =====
  
-  * Songs application [[eg-259:practicals:5|implemented in lecture]]+  * Projects application [[eg-259:practicals:5|implemented in lecture]]
   * See also [5], [6], [8]   * See also [5], [6], [8]
  
  
  
-===== Screencasts ===== 
- 
-//[[eg-259:practicals:3|Introducing Ruby on Rails: Shockwave Flash Demos with Narration]]// covers material covered live in the demo((Note this uses a version 1.x version of rails. Some things changed in Version 2.0 and changed again in version 3. In particular, the //scaffold// feature became a plugin rather than a standard feature.)). 
- 
-  * Part 1: Installing Ruby  
-  * Part 2: Installing Rails  
-  * Part 3: Hello Rails!  
-  * Part 4: Creating the Cars Database  
-  * Part 5: Cars on Rails  
- 
----- 
  
-These screencasts give you a flavour of rails. They need to be upgraded to the latest version. More information is given on the web page. 
 ===== Market Impact ===== ===== Market Impact =====
  
Line 477: Line 478:
     * Version 2.2 was released November 2008     * Version 2.2 was released November 2008
     * Version 2.3 is the current 2.x release     * Version 2.3 is the current 2.x release
-    * Version 3 (more modular rails) was released in 2010. Current versions are 2.3.14 and 3.2.33.is in development.+    * Version 3 (more modular rails) was released in 2010. Current versions are 2.3.14 and 3.2.13 
 +    * Version 4.is in development (Beta is out now) and expected later this year.
            
  
eg-259/lecture20.1365947202.txt.gz · Last modified: 2013/04/14 13:46 by eechris