Tecnologie emergenti per lo sviluppo di web applications: il caso di Ruby on Rails e AJAX

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Tecnologie emergenti per lo sviluppo di web applications: il caso di Ruby on Rails e AJAX - Presentation Transcript

    1. UNIVERSITÀ DEGLI STUDI DI MILANO Facoltà di Scienze Matematiche, Fisiche e Naturali Dipartimento di Tecnologie dell’informazione Corso di laurea in Informatica Tecnologie emergenti per lo sviluppo di Web Applications: il caso di Ruby on Rails e AJAX Candidato Relatore David Saitta PROF. Marco Cremonini Anno Accademico 2004/2005
    2. Sviluppo di Web Applications • Framework che implementano • UI Statiche solo alcuni aspetti Le azioni dell’utente non modificano la struttura della pagina corrente • È necessario integrare con altri • Usabilità limitata framework, spesso non progettati per lavorare insieme no drag-n-drop, no feedback immediato, no componenti complessi e interattivi • si perde tempo di sviluppo • Request/Response • Molti framework forniscono Ogni azione dell’utente verso il server funzionalità ma non un percorso (link, invio form) richiede un reload logico e chiaro di utilizzo della pagina
    3. Tecnologie Emergenti AJAX AJAX on Asynchronous Ruby on Rails JavaScript RAILS And XML • Struttura chiara • basato sul pattern Model-View-Controller • UI Interattive • Ogni componente ha un suo posto preciso La pagina si evolve per rispecchiare le azioni dell’utente • Full-stack Framework • Singolo progetto omogeneo, tutti i • Maggiore usabilità componenti interagiscono pienamente tra di loro supporto per il drag-n-drop, effetti grafici, componenti complessi e interattivi • Tempi di sviluppo ridotti • No Refresh • le modifiche vengono propagate subito Per comunicare con il server non • sviluppatori impegnati nel porting di occorre il reload della pagina. applicazioni professionali testimoniano come (Async Request/Response) abbiano scritto meno codice in Rails che per i file di configurazione XML di Java Hibernate/Struts e Tomcat
    4. Ruby on Rails • Ruby • Linguaggio interpretato Object-Oriented stile Smalltalk • Dinamico Ruby on Rails • Estendibile a runtime (reflection/metaprogramming) • Unico linguaggio per tutti i livelli del framework HTTP, RSS, AROM, • SOAP DRY: Don’t Repeat Yourself Apache, WeBrick or Lighttpd Requests • Le definizioni devono essere fatte una Web Server sola volta, in un posto specifico Invokes FastCGI, • tree delle directory standard Forwards mod_ruby or SCGI • XHTML, CSS, JS, “Convention over images, XML Dispatcher Responds Configuration” Displays Handles validations Loads • ridurre la configurazione in favore Action CRUDs Renders View delle convenzioni di comportamento Active Controller Record • personalizzabile: configurare solo Responds Delegates ciò che non è convenzionale Action Data or Queries • es: nel modello classe User è associata Errors WebServices di default alla tabella users Redirects Delivers SQLite, XML Database PostgreSQL, Action MySQL, Oracle, Mailer MSSql, ODBC
    5. [M] Active Record person = Person.new(attrs) • Mapping person.save # INSERT person.name = “David” (Don’t Repeat Yourself) person.save # UPDATE classi (Person) ➟ tabelle (People) person.destroy # DELETE attributi ➟ colonne Project < ActiveRecord::Base • •Associazioni has_many :milestones has_one :project_lead belongs_to :company Relazioni uno-a-uno, uno-a-molti, molti-a-molti • project.has_milestones? Complesse (tree, liste, single-table inheritance) • project.create_project_lead CRUD (Create, Retrieve, Update, Delete) project.company.name • Caching if post.save • Validatori # passed validation else post.errors.count post.errors.on(“title”) Standard, Custom, save/create/update post.errors.each { |e| e } • Callbacks end Post < Active Record::Base has_many :comments Eventi generati prima e dopo save/create/update/destroy def before_destroy comments.destroy_all end end
    6. [M] Active Record Order.hbm.xml JAVA/Hibernate <hibernate-mapping> <class name=\"models.Order\" table=\"Orders\" dynamic-update=\"true\" dynamic-insert=\"false\" Order.java discriminator-value=\"null\"> public class Order <id name=\"id\" column=\"id\" type=\"java.lang.Long\" { unsaved-value=\"null\"> private Set items; <generator class=\"identity\"/> private String name; </id> private Long id; <set name=\"items\" lazy=\"false\" inverse=\"false\" cascade=\"none\" sort=\"unsorted\"> public Long getId() { return id;} <key column=\"id\"/> public void setId(Long id){ this.id = id;} <one-to-many class=\"models.Item\"/> </set> public Set getItems() { return items;} <property name=\"name\" type=\"java.lang.String\" public void setItems(Set items) { this.items = items; } update=\"true\" insert=\"true\" public String getName() { return name; } access=\"property\" column=\"name\"/> public void setName(String name) { this.name = name; } </class> } </hibernate-mapping> order.rb Rails class Order < ActiveRecord::Base has_many :items end
    7. Action Controller Action Controller [C] Action Controller • Actionsinsteadinstead of object, shared helper methods ctions grouped in controller grouped in controller ction Action as method of object, shared helper methods as method • Rendering • Assigns and codes codes Actions endering def display @customer = display def • @customer = Customer.find(@params[“id”]) Le azioni sono metodi del Controller Customer.find(@params[“id”]) ssigns •and status status end es: in Java/Struts ogni azione è una classe che estende end Action, un file XML descrive il mapping delle def update action def update if person.save •Path, Action,Action, Controller •Rendering immagini) if person.save edirection redirect_action “display” Redirection redirect_action “display” else else render “customers/edit” •HTML/XML/RAW(es: render “customers/edit” end rl, Url, Path, Controller end •Redirection ••Filters seperation of concerns FrontpageController ilters Path, Action, Controller • FrontpageController Filters before_filter :cache Url, after_filter :compress :cache before_filter after_filter :compress rocessing chain, chain, seperation of concerns WebserviceController Processing WebserviceController before_filter :token_auth before_filter :token_auth •PossibilitàAuthentication, Caching, Before: Authentication, Caching, e l’output Auditing di processare l’input Auditing • AdministrationController •Before: Output compression Before: Authentication, Caching AdministrationController before_filter :ensure_login, :audit After: Localization, before_filter :ensure_login, •After: Localization, Compression • After: Localization, Output compression SecretController < Administrati... SecretController < Administrati prepend_before_filter :encrypt prepend_before_filter :encryp
    8. AJAXAnd XML Asynchrnous JavaScript • È una tecnica: Web browser Server insieme di tecnologie web Login • Business XHTML/CSS XML/XSLT logic • User's User's DOM (Document Object Model) Deliver data partial client app • model data XMLHttpRequest model • (JavaScript) JavaScript Frequent requests for data • Nuovo approccio allo sviluppo User Client web session application • sviluppo di framework complessi • non richiede plugin Logout • •Non è un concept astratto Exit Yahoo Flickr page • GMail, Google Maps, Google Groups Shared • data Windows Live, Office Live model • •WEB 2.0 termine coniato dalla O’Really nel 2004. • da associare non tanto alle tecnologie quanto all’idea di evoluzione dell’usabilità del Web
    9. Principi Base • •Il Browser carica un’applicazione, non il contenuto Il browser riceve dal server un engine JavaScript incaricato di gestire le azioni dell’utente. L’engine decide se è necessario chiedere informazioni al server (es: query DB) • •Il server invia dati, non pagine Ad ogni richiesta del browser, il server invia XML/HTML/JS. • La pagina viene modificata, non ricaricata. • L’interazione dell’utente con l’applicazione deve essere fluida e continua • Ogni azione dell’utente deve prevedere un feedback immediato • Esperienza di usabilità più vicina a quella Desktop • Maggiore interattività (componenti complessi, drag-n-drop) • •Nuovo modo di sviluppare interfacce L’usabilità e l’interazione con l’utente è fondamentale • Bisogna dimenticarsi le limitazioni attuali del Web
    10. AJAX on Rails • •AJAX integrato in Ruby on Rails The Rails Way • •AJAX Framework Prototype.js drag-n-drop, effetti visivi, remote call • •Metodi helper per users”, :update=>”listUsersDiv”, semplificare lo sviluppo link_to_remote(“list all :url=>{:controller=>:account, :action=>:list}) • observe_field • periodically_call_remote • form_remote_tag • form_tag_with_upload_progress • Normalmente non occorre scrivere codice JavaScript
    11. Rails e AJAX • Lo sviluppo dei Web Application sta avendo un notevole incremento. Avere a disposizione strumenti efficienti e chiari, come Rails, permette di diminuire i tempi di sviluppo e semplificare la mantenibilità del sistema • Non bisogna solo concentrarsi sullo sviluppo dei meccanismi lato server: l’interazione con l’utente deve essere la parte più importante. AJAX fornisce gli strumenti necessari per superare le limitazioni attuali del Web

    + David SaittaDavid Saitta, 7 months ago

    custom

    659 views, 1 favs, 0 embeds more stats

    Presentazione della tesi triennale "Tecnologie emer more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 659
      • 659 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags