Service-oriented architecture (SOA), rich Internet applications (RIA), open source software (OSS) and Web 2.0 are...
all hot and relevant topics on their own. When combined, however, they really become powerful. As a way of introduction, wikipedia generally defines these terms as:
SOA - First proposed by Gartner analysts, SOA expresses a perspective of software architecture that defines the use of services to support the requirements of software users. In an SOA environment, resources on a network are made available as independent services that can be accessed without knowledge of their underlying platform implementation.
RIA - Though the concept had been around for a number of years, the term RIA was introduced in a Macromedia whitepaper in March 2002. RIA applications are Web-based applications that run in a Web browser and do not require software installation, but still have the features and functionality of traditional desktop applications.
OSS - Open source software is computer software whose source code is available under a copyright license that permits users to study, change and improve the software, and to redistribute it in modified or unmodified form.
Web 2.0 - O'Reilly Media coined the phrase Web 2.0 in 2004 to refer to a supposed second-generation of Internet-based services that let people collaborate and share information online in perceived new ways — such as social networking sites, wikis, communication tools and folksonomies. Web 2.0 has become a popular, if ill-defined and often criticized, buzzword amongst the technical and marketing communities.
The strongest perceived relationship between these terms is between Web 2.0 and RIA. They are used synonymously at times, much to the dismay of those who define Web 2.0 as a way to use the Internet rather than a specific technology such as RIA.
Web 2.0 is supposed to describe the Internet as a social and collaborative network, where everyone and everything is connected though all means of available devises. An RIA browser is just one such devise. Web 2.0 also refers to futuristic concepts such as the Semantic Web, the long tail, social networking and Web ubiquity - which predicts that many devices, not just RIA browsers, will participate in the Web 2.0 network.
RIA as a starting point
But for many, Web 2.0 and RIA are tightly linked concepts, perhaps because the terms became popular at about the same time. In the context of this article, this tight relationship between RIA and Web 2.0 is a bit ironic. It could easily be argued that the on-demand properties of SOA services and the collaborative nature of OSS embody more of the intentions of Web 2.0 technologies than just the thick-client capabilities of RIA. Still the relationship between Web 2.0 and RIA seems to have solidified and they are concepts that together create greater Internet capabilities, so we will not object too strongly to their marriage.
RIA represents the evolution of the browser from a static request-response interface to a dynamic, asynchronous, interface. What does this mean? Technically it means your browser can communicate to a server in the background without you knowing about it. Or perhaps a better way of saying it is your browser can request information from a server without disturbing you.
Once the server responds, the browser will parse the server's results and decide the best way and the appropriate time to show the results to you. This is how the original client-server applications functioned. These thick-clients had the drawback that they had to be deployed to the client machine they ran on, which was often a manual and error-prone process.
Browsers eliminated these issues, but browsers also lacked the rich capabilities of their client-sever predecessors, capabilities enterprise applications require. RIA's goal is to be the best of both worlds. It aims to achieve the richness of client-server functionality with the ease of browser-based deployment.
Currently some of the best known RIA applications are just Internet toys and widgets to show off nifty graphical capabilities, but the real power of RIA will be realized as new applications are built entirely using RIA technologies and interfaces start to expose powerful transitional functionality.
Some prime examples of RIA frameworks are Adobe's Flex and Ajax. Some cool examples of RIA applications include Google's Earth, Mail and Finance applications as well as Microsoft Outlook's and Zimbra's browser-based e-mail tools. Some good sites for Ajax libraries and information include the open-source solutions available on script.aculo.us and Prototype. OpenLaszlo, although not just an AJAX library, is a powerful RIA open source framework that eases the development of RIA interfaces.
Another fascinating relationship exists between RIA and SOA. Independently, RIA and SOA are proving to be very useful concepts and now engineers are realizing the beneficial relationship when they are put together.
It stands to reason that if RIA is the best way to build a user interface and SOA is the best way to build and expose business services, then combined these technologies are capable of building superior applications. At the recent SPARK conference the relationship between RIA, SOA and Web 2.0 was explored and spawned many interesting blogs on the subject. Most of the conversation surrounds the compelling benefits of the combined technologies rather than specific solutions.
An application that combines RIA with SOA will benefit from the dynamic characteristics of an asynchronous, transactional and self-distributing user interface with the advantages of a loosely-coupled, reusable and agile services layer. There is some debate as to how to best integrate these technologies.
An RIA moves the Model-View-Controller abilities back to the client, where it originated in Smalltalk. I have an article in my blog on this topic. This movement muddies the existing serverside user interface tier's frameworks and architecture.
New architectures and frameworks will undoubtedly arise to address the security and scalability concerns of the RIA-to-SOA applications, but none are dominant yet. Some early solutions are beginning to show up however. See the LogicBlaze FUSE stack as an example. FUSE includes support for Ajax out of the box. Initially the coupling between SOA middleware and a UI framework for Ajax may seem awkward until the compelling relationship between SOA and RIA is recognized.
RIA applications also must consider how to be backward compatible to the current non-RIA Internet, including how bookmarks, search engine optimization and site analytics will work. Even though the RIA-to-SOA relationship is still emerging, organizations and engineers should realize their power and look to them to create a new breed of applications.
Now mix in the open sourceOpen source software is the underpinning of many SOA and RIA solutions. Open source software is the dominant solution for Ajax RIA interfaces. A few of the popular open source Ajax solutions are mentioned previously in this article. And even Flex, a commercial RIA framework, has a great open source framework called Cairngorm that Adobe provides to help Flex developers write interfaces that take advantage of J2EE patterns.
New RIA libraries are being generated by engineers every day and open source is the primary channel that the engineers like to use to share their solutions. SOA middleware solutions are also jumping on the open source bandwagon. Some of the popular SOA open source solutions include:
- LogicBlaze FUSE
- WS02 Tungsten
- JBoss JEMS
- ObjectWeb Celtix
- SymphomySoft Mule
- Sun Open ESB
- Apache Web Services Projects
Many of these solutions are composite stacks that contain many more open source projects within them to perform more fine-grained SOA capabilities. Open source thrives where software has become commoditized and standards exist, and SOA and RIA are two prime examples of this.
The RIA, SOA and OSS relationship to Web 2.0 is strong. Web 2.0 represents a rebirth of the Internet where more powerful applications exist. RIA enables these applications by providing a transactional and dynamic user experience.
Web 2.0 also describes Web ubiquity and on-demand access, where the Internet is always available and new applications are readily mashed-up. SOA is the epitome of this concept. SOA, at its core, enables the discovery and assembly of services into larger composite services and applications.
Web 2.0 is also about collaboration and using the Internet as a social network. It is hard to find a better example of this spirit than within the open source communities. Open source software is built socially. Communication and transparency are core values of an open source project.
Open source engineers are pioneers of communication and collaboration software tools that help them build open source solutions together. Web 2.0 prognosticators could learn from open source participants because open source developers were the first wide scale examples of the benefits of the Web 2.0 ideals.
So as we collectively head into the next generation internet described by Web 2.0, look to the software and methodologies of open source as well as a new breed of rich Internet applications, which will be supported by the harvesting of ever-available SOA services. It should be fun.
About the author
Adam Michelson has more than a decade of technology implementation experience. Adam is currently the director of service-oriented and enterprise architecture for Optaros Inc., an international consulting and systems integration firm that provides enterprises with best-fit solutions to IT business challenges, maximizing the benefits of open source software.