... Advanced Web Programming ...

C6. RIA - Rich Internet Applications

The term RIA (Rich Internet Application) designates a web application that behave close to a desktop application. Indeed, the objective of RIA technologies is to overcome the significant differences in responsiveness and in variety of interface components. 
Rich Internet Applications combine state of the art technologies with innovative business processes to provide cost-effective business solutions for all sized enterprises and government entities. Various technologies are involved in developing such applications like SSC, Ajax, browser plug-ins, or virtual machines.  Ajax APIs,  Adobe Flash, Java, and Microsoft Silverlight are currently the most common platforms for RIA Applications.
Nowadays, RIAs have become the de-facto technology choice to simplify complex processes like registration, information searching,  online shopping and data analysis. RIAs can be used with existing web application infrastructure and can be deployed even as part of normal HTML pages.
 

Google Ajax API

Google Ajax API provides useful widgets for web pages content enhancement (Google Web Elements):

  • Calendar - a small calendar with events highlighting
  • Checkout - create an online store using a Google Docs spreadsheet
  • Presentations - provides a slideshow embedded into a HTML page
  • Reader - displays most recent Shared Items on Google Reader
  • Spreadsheets - show a table of information (edited in Google Docs)
  • Virtual Keyboard - attach a Virtual Keyboard to page inputs
  • Wave - collaborative environment through Google Wave
  • News - show the latest Google News headlines
  • Translate - allow visitors to translate your page into their preferred language with a single click
  • Youtube News - display the latest YouTube videos from a news source
  • Custom Search - let visitors search your site and other sites you choose using the power of Google Custom Search
  • Maps - add the Maps element using Google Maps
  • Sidewiki - add a Google Sidewiki element
  • Conversation -  add the Conversation element so visitors can post comments and links on your site or participate in global Google Friend Connect conversations
  • Orkut Share - let visitors share pages from your site on Orkut



Web Services
W3C defines a web service as "a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically Web Services Description Language WSDL). Other systems interact with the web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. We can identify two major classes of Web services, REST-compliant Web services, in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations; and arbitrary Web services, in which the service may expose an arbitrary set of operations". A web service is typically an Web API that is accessed via HTTP and executed on a remote system, hosting the requested service (Wiki). Web Services can be created using almost any programming language.

Web Mashups
According to D. Nations a web mashup is a web application that takes information from one or more sources and presents it in a new way or with a unique layout. The external data are glued together in a "monster-of-Frankenstein-like manner" (Duane Merrill, Freelance):
<<So, what might a mashup look like? The ChicagoCrime.org Web site is a great intuitive example of what's called a mapping mashup. One of the first mashups to gain widespread popularity in the press, the Web site mashes crime data from the Chicago Police Department's online database with cartography from Google Maps. Users can interact with the mashup site, such as instructing it to graphically display a map containing pushpins that reveal the details of all recent burglary crimes in South Chicago. The concept and the presentation are simple, and the composition of crime and map data is visually powerful.>>
Web mashups examples:

Windmill
Windmill is a web testing tool created to automate the testing and debugging processes for web applications.
The command line to start windmill is:
windmill [-cdelptmxs] action [optionh1. value] [firefox|ie|safari] [http://www.example.com]
The available actions denote that available environments windmill can start up:
The "shell" environment will start windmill and drop in to a python shell. The shell has various objects and functions in the local scope to help you with debugging and running tests.
The "run_service" environment just runs windmill in the foreground until it gets a proper signal to end. This is good for continuous integration and for someone who wishes to just run tests without the need for debugging.
The "wx" environment will launch an experimental wxPython UI for the service. This UI is still under heavy development and have some limitations and rough edges.
Some demo videos on Windmill features could be found at: Windmill Demo Videos page.

Slides:
C6. RIA.