200 likes | 217 Views
Delve into SaaS architecture and Rails development principles, including MVC, RESTful routing, Active Record, and CRUD operations. Explore the evolution of SaaS technologies and the LAMP stack. Gain insights into REST versus SOAP standards in software engineering.
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).