There are two important issues to notice about existing World Wide Web (WWW, Web) technology. First of all, the Web is essentially a huge distributed system, but more like a distributed file system rather than a distributed computing system. Although client/server applications based on the Common Gateway Interface (CGI) protocol and Java exist on the Web, for the most part the Web still remains document-centric. Secondly, Web browsers are fast becoming the universal front-end. We have started expecting more and more capabilities from our favorite browsers. We want to be able to buy merchandise through the browser, listen to music, and even watch movies through the same magical browser. In short, we want to perform all our computing tasks through our browser. Isn't it true that the browser is one of the first applications we launch when we start a session with the computer?
It is possible to have commerce on the Web, have large scale digital libraries that store multimedia information and access them from the Web, and much more. Making all this possible, requires a paradigm shift, a technological leap, in the way we program distributed client/server applications in general, and applications for the Web in particular. In this chapter we will take a look at some key technologies that can turn the WWW into a more intelligent medium for communication and information dissemination and convert static Web documents into active compound documents with rich multimedia content. First of all, let's review the current status of Web technology.
When we talk about the Web today, we tend to glorify the benefits of Web technology and overlook the many shortcomings that can put a damper on the growth of the Web itself. Along with the increase in the popularity of the Web, the list of limitations imposed by the current Web technology is also on the rise. The following lists outline some of the major capabilities and shortcomings of the current Web technology:
Largest repository of information: The Web has become one of the largest repositories of information available to people. The nice thing about it is that it's totally unregulated; you can publish anything of your choice.
Huge installed base: The number of Internet hosts serving Web documents is increasing at a very high rate. Thus, the WWW provides a very large installed base for Web-based utilities and applications.
Interoperable standards: Web technology is largely based on interoperable standards such as the HyperText Transfer Protocol (HTTP) and HyperText Markup Language (HTML). The TCP/IP protocol suite, on which HTTP is based, has emerged as the dominant worldwide networking standard. These standards enable interoperability between Web applications and make them independent of the underlying hardware architectures and network protocols.
Browser interface: As mentioned earlier, the Web browser is becoming the interface of choice and has the potential to change the entire desktop paradigm.
Add-ons and plug-ins: Many plug-ins are available which enhance the basic capabilities of the Web browser, for example, plug-ins such as RealAudio and QuickTime movie plug-ins.
Ability to download code:The Java programming language has provided Web-users with an ability to download code from a server on the fly, and execute it on the local machine. This has opened up a whole new array of possibilities for the WWW, as we will see in a later section.
Support for simple applications: Protocols such as CGI, provide sufficient support for creating simple applications that don't require extensive state management and can be controlled through an HTML forms-based interface.
Limitations of protocols: Protocols such as HTTP and CGI severely constrain the Web communication model. The lack of persistent state management in HTTP is a major limitation for Web application designers.
Overloaded networks and servers: Web traffic seems to be increasing at an exponential rate, which is severely overloading HTTP servers and existing network links. The average document retrieval time is increasing constantly. The internet backbone is not overloaded as much as the links between the users and the internet service providers (ISPs). Statistics show that the final link is usually the one that takes the most time to cross.
Increasing size of browsers: As vendors try to pack more and more features into Web browsers, the size of browsers is increasing steadily. The browser software needs to be converted from a monolithic application into a set of independent software modules that can be called upon whenever necessary.
Lack of interaction: CGI-based applications provide very little support for active interaction between the browser and the Web server. Even though Java applets have helped in making Web documents more interactive, till now there has been little support in Java for interaction between independent applets in an HTML page.
Lack of database support: The WWW can provide a very elegant interface to existing relational and object-oriented databases, but the current communication model for the Web does not provide the necessary framework for creating such dynamic interfaces with ease.
Lack of secure application framework: Although many efforts are underway to create a standard secure framework for electronic commerce on the Web, there is no standard facility that allows companies and users to buy or sell goods on the Web freely, with minimal security risks.
Most of the limitations of existing WWW technology mentioned in the previous section can be overcome by employing distributed objects and component technology for building Web-based applications. So, what are distributed objects and components, and how do they differ from normal software 'objects'? Let's try to define and differentiate these.
Objects
Object-oriented programming differs a lot from classical procedural programming. The functions or procedures in procedural programs describe only behavior. The data which they operate on has to be passed to them as parameters. This is not the case in object-oriented programming. To understand the principles behind object-oriented programming let's define and 'object' and its properties.
An object is a piece of code that owns things called attributes (data) and provides services through methods (also called operations or functions). Typically, the methods operate on private data - also called instance data or object state - that the object owns. A class acts as a data type for an object, and conversely, an object is an instance of a class.
An object describes both behavior as well as information associated with a software entity. Objects can easily model real-world entities and are inherently self-managing pieces of code. They have the classical object-oriented properties of encapsulation, inheritance, and polymorphism, that make them very useful.
Distributed objects and Components
Distributed objects have all the above-mentioned properties that objects have and much more. These are software components that have self-contained intelligence and are independent of the language, operating system, and hardware architecture used for implementation. They can be located anywhere on the network and can provide services to remote as well as local clients via method invocations. Clients do not need to know where the server object resides or what operating system it executes on. All the functionality required for local/remote transparency, platform independence, locating server object dynamically at run-time, and for finding out their properties, is provided by a software framework that is called a Distributed object architecture.
A 'Component' is a stand alone 'object' that is not bound to a particular program, computer language, or implementation. It is not a complete application, but can be used to build cheap, personalized applications. Components reduce the cost and complexity of software development. Different components interact using language-neutral, client/server interaction models such as Event notifications. Component technology is, by origin, a desktop technology, whereby different applications on the desktop can access and modify data objects created by peer applications regardless of the data content and format. The underlying software framework that enables this functionality and provides the facilities required for it is called a Compound document framework.
Now, we can identify the two key technologies for overcoming the current shortcomings of the Web: Distributed Object Architectures and Compound Document Frameworks. Distributed object architectures help in building client/server applications using 'distributed objects' and provide services such as security, transactions, state management, licensing, etc. Compound document frameworks act as containers in which heterogeneous 'components' can be placed to build customized applications. They can provide a front-end to applications that use distributed objects. Orfali, 1996 is an excellent reference on Distributed object architectures and Compound document frameworks.
Before we get into the nitty-gritties of these technologies, let's take a short look at what they can do for the World Wide Web.
Distributed objects and components can enhance the capabilities of the WWW in a lot of ways. Following are some of the benefits object technology can provide to the WWW:
In the following sections we will take a look at some existing Distributed object architectures and Compound document frameworks and try to compare and contrast them. We will also see how these can be integrated into a uniform whole to benefit the WWW and look at the current developments taking place in this field.
Copyright © 1996 Ashish B. Shah, All Rights Reserved.
Ashish B. Shah
<ashish@csgrad.cs.vt.edu>
Last modified: Tue Oct 29 11:59:59 1996