Developers: Learn a New Programming Language or App Development with Deitel LiveLessons Videos!
s
menu
menu
Login  |  Register  |  Media Kit  |  Press  |  Contact Us  |   Twitter Become a Deitel Fan on Facebook  
Custom Search


 Minimize

3.13  Web Services, Mashups, Widgets and Gadgets

Design for hackability and remixability.

Tim O’Reilly1

Instead of reinventing the wheel with every new project, developers can use existing companies’ web services to create feature-rich applications. Incorporating web services into new programs allows people to develop new applications quickly.

APIs

APIs (Application Programming Interfaces) provide applications with access to external services and databases. For example, a traditional programming API, like the Sun’s Java API, allows programmers to use already-written methods and functions in their programs. Web services APIs are now offered by some websites as ways of sharing some of their functionality and information across the Internet.

Unique databases are central to Web 2.0; “data is the next Intel Inside.”2 Whether data is obtained from a proprietary source or collected over time from users, much of a site’s value is in its databases. Many major Web 2.0 companies (e.g., eBay, Amazon, Google, Yahoo! and Flickr) provide APIs to encourage use of their services and data in the development of mashups, widgets and gadgets.

Mashups

Mashups combine content or functionality from existing web services, websites and RSS feeds to serve a new purpose. For example, Housingmaps.com is a mashup of Google Maps and real-estate listings from Craigslist. Mashups with maps are particularly popular, as are mashups using RSS feeds (see “RSS and Atom” in Section 3.15) created by using services such as Yahoo! PipesTM—a tool that enables you to aggregate and manipulate many data sources.

Using APIs can save time and money (some great mashups have been built in an afternoon); however, the mashup is then reliant on one or more third parties. If the API provider experiences downtime, the mashup will be unavailable as well (unless the mashup is programmed to avoid sites that are down). Always check the “terms of service” for using each company’s web services. Many API providers charge usage fees based on the mashup’s number of calls made to the server. Some sites require you to ask permission before using their APIs for commercial purposes, and others (e.g., Google) require that mashups based on their web services be free. Also, while mashups add value to data, there is always the question of who owns the data, and thus who should profit from the mashup.

Figure 3.4 lists some popular mashups. The site Programmable Web catalogs APIs and mashups and offers a “Mashup Matrix” (http://www.programmableweb.com/matrix) detailing which APIs have been combined to form each mashup. As more companies offer APIs, the only limitation on mashups (and the businesses built on them) is the developer’s creativity. More complex mashups, using programs like Google Earth and Second Life, could be coming soon.3

Fig. 3.4 | Mashup examples.

Mashup

Combines

http://www.housingmaps.com

Google Maps and Craigslist real-estate listings to create a map marked with available housing listings.

http://www.chicagocrime.org

Google Maps and crime data from Citizen ICAM to create a map of Chicago marked with crime locations.

http://www.feedmashr.com

RSS feeds from Digg, ClipMarks, the New York Times, del.icio.us, Reddit and Slashdot to create a listing of the most popular stories from all sources.

http://www.secretprices.com

Amazon, Epinions.com and Shopping.com to create a comparison shopping site.

http://paul.kedrosky.com/publicloos/

Google Maps and Bathroom Diaries to create a map of San Francisco marked with the locations of public restrooms.

Widgets and Gadgets

Widgets, also referred to as gadgets, are mini applications designed to run either as stand-alone applications or as add-on features in web pages. Newsweek called 2007 the “Year of the Widget” because of the huge increase in popularity of these applications.4 Widgets can be used to personalize your Internet experience by displaying real-time weather conditions, aggregating RSS feeds, viewing maps, receiving event reminders, providing easy access to search engines and more. The availability of web services, APIs and various tools makes it easy even for beginner programmers to develop widgets. There are many catalogs of widgets online—one of the most all-inclusive is Widgipedia, which provides an extensive catalog of widgets and gadgets for a variety of platforms.

Amazon Web Services

Amazon is a leading provider of web services. The site provides historical pricing data and E-Commerce Services (ECS), which enable companies to use Amazon’s systems to sell their own products. Amazon also offers hardware and communications infrastructure web services that are particularly popular with companies, providing economical web-scale computing. Amazon’s Elastic Compute Cloud (EC2), Simple Storage Service (S3) andSimple Queue Service (SQS) enable businesses to pay for only the processing or storage space needed during any given period. This makes it possible for companies to save money (by not having to buy and maintain new hardware, software and communications equipment) while still being able to scale their storage and computing power to handle traffic surges (or reduce loss when the site’s popularity declines). This is extremely significant in the Internet world, where a site’s traffic can explode or crash overnight.

Amazon also provides “artificial artificial intelligence” with its unique Mechanical Turk. This web service allows applications to call on people to perform tasks (such as identifying pictures) that are easier for humans to do than computers. People can sign up to become part of the Mechanical Turk web service and bid on jobs (called Human Intelligence Tasks or HITs). This creates a competitive market, driving down developer costs, creating opportunities for people worldwide and allowing more applications to become feasible.

REST (Representational State Transfer)-Based Web Services

Representational State Transfer (REST) (originally proposed in Roy Thomas Fielding’s doctoral dissertation5) refers to an architectural style for implementing web services. Though REST is not a standard, RESTful web services are implemented using web standards. Each operation in a RESTful web service is easily identified by a unique URL. So, when the server receives a request, it immediately knows what operation to perform. Such web services can be used in a program or directly from a web browser. In some cases, the results of a particular operation may be cached locally by the browser. This can make subsequent requests for the same operation faster by loading the result directly from the browser’s cache.6 Amazon’s S3 is RESTful, and many other Web 2.0 web services provide RESTful interfaces.7

RESTful web services are alternatives to those implemented with SOAP (Simple Object Access Protocol). (We discuss both REST-based and SOAP-based web services in Chapter 28, Web Services.) With SOAP-based web services, the request and response are hidden (in entities known as a SOAP “envelopes”). SOAP requests must be deciphered as they are received at the server to determine the operation to perform and the arguments required to perform that operation. Similarly, the responses are encoded and deciphered on the client to obtain the result of the operation. SOAP does not currently provide a mechanism for caching results.




  1. O’Reilly, T. “What is Web 2.0: Design Patterns and Business Models for the Next Generation of Software.” September 2005 <http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html>.
  2. O’Reilly, T. “What is Web 2.0: Design Patterns and Business Models for the Next Generation of Software.” September 2005 <http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html>.
  3. Roush, W. “Second Earth.” Technology Review, July/August 2007, p.38.
  4. Braiker, B. “Tech: Welcome, Year of the Widget.” Newsweek, 30 December 2006 <http://www.msnbc.msn.com/id/16329739/site/newsweek/>.
  5. Fielding, R. T. “Architectural Styles and the Design of Network-Based Software Architectures.” <http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm>.
  6. Costello, R. “REST Tutorial.”xFront, 26 June 2002 <http://www.xfront.com/REST.html>.
  7. Richardson, L. and S. Ruby. RESTful Web Services. O’Reilly, 2007.
Print  
foot
Update :: July 28, 2017