200 likes | 210 Views
Lecture 10 Rails Projects. CSCE 740 Software Engineering. Topics SaaS Readings: SaaS book Ch 2, 4. February 24, 2014. SaaS round 2 -. Last Time RAILS Fig 2.1 100,000 view Client-server HTTP & URIs HTML & CSS HAML. Finish-up Last Lecture Slides Slides ??? New
E N D
Lecture 10Rails Projects CSCE 740 Software Engineering • Topics • SaaS • Readings: SaaS book Ch 2, 4 February 24, 2014
SaaS round 2 - • Last Time • RAILS • Fig 2.1 100,000 view • Client-server • HTTP & URIs • HTML & CSS • HAML • Finish-up Last Lecture Slides • Slides ??? • New • Summary of Rails • HAML • Cucumber • Capybara • Next Time:
Rails Summary from Last time • The MVC Architecture • Components of Rails • REST • a New Rails Project • Rails Application Dir • Rails Appl Directory II • Directory: app • HAML - lightweight • YAML-human-readabledataserialization format • Configuring a DB • Creating a DB • Starting Webrick • rails generate • Setting the Application Home Page • Rails Scaffolding • What’s Next? • Rails Summary • Active Record • … CS 169 Saasbook: Fox and Patterson
Chapter 2 SaaS Architecture Review Saasbook Fox, Armando; Patterson, David (2014-01-31).
Review Fig 2.3 – URI + HTTPmethod Saasbook Fox, Armando; Patterson, David (2014-01-31).
Fig 2.6 Refining Steps 2 and 3 Saasbook Fox, Armando; Patterson, David (2014-01-31).
Lamp • Early SaaS sites were created using the Perl and PHP scripting languages, whose • availability coincided with the early success of Linux, an open-source operating system, and MySQL, an open-source database. • Thousands of sites are still powered by the LAMP Stack—Linux, Apache, MySQL, and PHP or Perl. Saasbook Fox, Armando; Patterson, David (2014-01-31).
Scalability Saasbook Fox, Armando; Patterson, David (2014-01-31).
Architectures for Web Apps • Left - page controller Sinatra • Center top – front controller J2EE servlets • Center bottom – PHP • Right – MVC used by rails Saasbook Fox, Armando; Patterson, David (2014-01-31).
Fig 2.10 – 5,000 ft view Saasbook Fox, Armando; Patterson, David (2014-01-31).
2.6 500 Feet: Active Record for Models • Active Record architectural pattern • a single instance of a model class (in our case, the entry for a single movie) corresponds to a single row in a specific table Saasbook Fox, Armando; Patterson, David (2014-01-31).
CRUD • Create a new row in the table (representing a new object), • Read an existing row into a single object instance, • Update an existing row with new attribute values from a modified object instance, • Delete a row (destroying the object’s data forever). Saasbook Fox, Armando; Patterson, David (2014-01-31).
2.7 500 Feet: Routes, Controllers, and REST • REST - In 2000, Roy Fielding proposed, in his Ph.D. dissertation, a consistent way to map requests to actions that is particularly well suited to a service-oriented architecture. • identify the various entities manipulated by a Web app as resources, and • design the routes so that any HTTP request would contain all the information necessary to identify both a particular resource and the action to be performed on it. • In Rails, the route mappings are generated by code in the file config/routes.rb, Saasbook Fox, Armando; Patterson, David (2014-01-31).
Fig 2.12 Rake Routes Summary • Operation Method & URI action • Index (list) movies GET /movies index • Read (show) movie GET /movies/:id show • Display fill-in form GET /movies/new new • Create from filled-in form POST /movies create • Display form to edit GET /movies/:id/edit edit • Update movie PUT /movies/:id update • Destroy movie DELETE /movies/:id destroy Saasbook Fox, Armando; Patterson, David (2014-01-31).
Fig 2.13 Restful vs nonRestful • Login to site • Non-RESTful site - POST /login/dave • URI RESTful site - POST /login/dave • Welcome page • Non-RESTful - GET /welcome • URI RESTful - GET /user/301/welcome • Add item ID 427 to cart • Non-RESTful - POST /add/427 • URI RESTful - POST /user/301/add/427 Saasbook Fox, Armando; Patterson, David (2014-01-31).
View cart • Non-RESTful - GET / cart • URI RESTful - GET /user/301/cart • Checkout • Non-RESTful - POST /checkout • URI RESTful - POST /user/301/checkout Saasbook Fox, Armando; Patterson, David (2014-01-31).
ELABORATION: REST vs. SOAP vs. WS-* • SOA standards bodies created committees to develop standards for SOA interoperation. • One approach resulted in a collection of elaborate protocols for Web Services including WS-Discovery, WS-Description, and others, sometimes collectively called WS-* and jokingly called “WS-Deathstar” by David Heinemeier Hansson, the creator of Rails. • The competing SOAP standard (Simple Object Access Protocol) was a bit simpler but still far more complex than REST. By and large, practicing developers perceived SOAP and WS-* as overdesigned committee-driven standards burdened by the archaic design stance Saasbook Fox, Armando; Patterson, David (2014-01-31).
Fig 2.14 500 ft – Template views HAML • Haml HTML • %br{:clear => ’left’} <br clear=”left”/> • %p.foo Hello <p class=”foo”>Hello</p> • %p#foo Hello <p id=”foo”>Hello</p> • .foo <div class=”foo”>. . . </div> • #foo.bar <div id=”foo” class=”bar”>. . . </div> Saasbook Fox, Armando; Patterson, David (2014-01-31).