What is a mash up site?
A mashup is a web site that combines data from multiple sources to form a web
portal. The content used in mashups comes from RSS feeds or data provided by the
application programming interfaces of various web applications. The mashup
provides a one stop destination for the Internet user where he or she can view
information that would otherwise require visits to many web sites. Therefore a
mashup site serves as a personal web portal. I have created an
example mashup page that combines data from Amazon,
Pownce, and LiveVideo.
RSS Feeds
Most of the content in a mashup site will come from RSS feeds. Really Simple
Syndication (RSS) is a method of delivering blog articles and other content. RSS
feeds can be read using feed readers or aggregators. Increasingly text content
is not read by people who are taking the time to visit many web sites. Instead
they subscribe to RSS feeds and have content delivered to them. RSS feeds can be
read in the browser, using online web applications, or even in Outlook 2007.
Web Application APIs
Many major web sites like Amazon and eBay which are really massive web applications
now provide application programming interfaces (APIs) so other web applications can
consume the data they have to offer. This data is usually made available as XML
that is delivered by a web service. Web services differ slightly from RSS feeds
in that they may have various methods which can be called to determine the data
they provide. For example, a web service that provides shipping quotes may
accept the package weight in a request for information to return the calculated
shipping charges. Another method call may be available for international
shipping. A mashup site can use eBays APIs to provide a search form for
auctions, the Amazon API to offer a similar search form for books, and the
YouTube API to list the most popular videos on that site for today.
Custom Web Services
A mash up site does not need to use publicly available sources of information. It
can also consume data provided by custom web services. This makes mash up sites
attractive for business and enterprise use because they can provide a one stop
destination for viewing a variety of information that management needs to stay
on top of their business operations. An enterprise mashup will combine data from
multiple databases to present charts, reports, and external news sources which
may feature news that is relevant to their business.
Mashup Site Development
There is a lot of development work involved in creating a mashup site. There
is also development work required to provide content to existing mashup sites.
To create custom mashup sites I use the web parts technology which is built
into ASP.NET 2.0. This is similar to the technology used by Sharepoint but
it is less involved and does not require expensive licensing. To provide content
for mashup site I use ASP.NET to create web services which expose the data in
databases as XML feeds. I have also written web parts to consume the data provided
by major web application APIs.
JSON
JSON is JavaScript Object Notation. Basically it is a way to serialize JavaScript object arrays as plain text. JSON is definitely a hot technology because it allows you to avoid the same origin policy (SOP) problem that you can encounter when using the XMLHttpRequest object. There is a browser restriction which prohibits you from pulling data from another domain. For example, if your browser loads a web page from www.example.com then that web page can't get XML data from a web service running on www.google.com. It can only get XML data from a web service running on www.example.com. Needless to say, this really makes it difficult to create mash up sites that combine data from many sources. The best way to work around this problem is to get the data in the JSON format inside a script tag and then use the JavaScript object directly in a callback function.
I've been using JSON a lot because it allows me to consume web services in
compiled HTML help. I have a web handler running on the server that retrieves
data from web services and then transforms it to JSON data which the web page in
the compiled help file can use without encountering any cross domain issues.