It is a brave architect who, in today's environment,
does not develop, or at least consider,
an object-oriented design.
Clearly, the architecture of the technological infrastructure of the Web, as well as the architecture of Web applications, may benefit from an object-oriented approach. Nevertheless, knowing this, we still do not know how to build actual Web applications.
The categorization is, however,
simple-minded because, as we may observe in retrospect,
most of the applications discussed contain elements
of at least a couple of the styles mentioned.
So, instead of discussing one style,
we need to consider a mix of styles,
and determine what mix of styles may be
effectively used to create the applications we have in mind.
The architecture of the Web
Secondly, the Web is continuously enhanced with new
functionality, including, for example,
synchronized multimedia as proposed in the SMIL standard, see
And thirdly,
many attempts are being undertaken to improve the quality
of the infrastructure itself,
as exemplified by the HTTP-NG effort,
which aims at higher speeds and a state-full
communication protocol, see
As clearly stated by the Web's principal architect,
Tim Berners-Lee,
graceful extensibility has always been one of the primary goals
in developing the architecture for the Web.
In this respect, the Web differs significantly from other
distributed technologies, such as CORBA,
which does not allow for non-compliant extensions.
In contrast, the Web does to a great degree allow
for non-compliant extensions simply by ignoring them,
until they become a standard.
The challenge, then, from an architectural point of view,
is to come up with better standards and better
technologies without sacrificing the extensibility
allowed by non-strict technologies such as HTML and HTTP.
Plugin architectures
Client NPP/Callbacks | Browser NPN/Calls |
Instantiation and Destruction | Version Info |
Stream Notification | Stream Creation and Destruction |
Reading and Writing Streams | StreamAsFile |
LiveConnect |
Plugin architectures are realized by using callbacks, in the same way as in object-oriented frameworks. Above, an overview is given of the callback functions required by the Netscape plugin architecture. These functions must be implemented by the (plugin) client, so that the browser can recognize and activate the plugin. Such callbacks encompass instantiation and destruction functions, notification when a stream is ready, functions for reading and writing streams, and the Live Connect functions, which enable the (plugin) client to communicate with Javascript functions and Java applets that are currently active. The browser, in return, provides convenience functions to obtain version information, to create or destroy streams or to store the contents of a stream in a temporary file.
It should be noted that the actual API for the creation of (Netscape) plugins is not object-oriented, although a partial class library is available to create plugins in an object-oriented manner.
Nevertheless, ignoring details, plugin architectures indicate what may become the dominant paradigm of the future, framework-like environments that are extensible by components following a clearly defined pattern or protocol; that is to say, components created according to the principles of object-oriented software development.
(C) Æliens 04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.