Information Technology Reference
In-Depth Information
and remote procedure calls. Many distributed systems, such as the Open Network
Computing (ONC) system [98], have adopted this philosophy.
The second extreme approach, pioneered by the developers of Java's RMI,
argues that applications need to be aware of the distribution concern because
there are fundamental differences between the interactions of distributed objects
and the interactions of non-distributed objects, such as latency, different calling
semantics, and partial failures [118]. Consequently Java's RMI framework, and
associated technologies that depend upon it, require that the developer be aware
of remote objects and remote errors that may occur while interacting with remote
objects. This approach is highly intrusive as the developer is required to implement
specific interfaces, catch remote exceptions, and, in some cases, inherit from the
distribution framework.
We believe that both of these methods are unsatisfactory. On the one hand,
the attempt to make the network transparent results in brittle applications and
on the other, the distribution framework is tangled with the application, thereby
violating the concept of separation of concerns, making reuse of the application's
components dicult and the use of a different distribution framework without
significant refactoring almost impossible. Both of these extremes, and variations
in-between, result in applications that are polluted with the distribution concern.
The resultant applications, and associated components, are therefore dicult to
reuse in other domains, dicult to extend and dicult to maintain.
Aspect-oriented Programming and the Distribution Concern
Aspect-Oriented Programming (AOP) [59], a fairly recent innovation in software
development, attempts to isolate and modularise crosscutting concerns, termed
aspects , by composing them into modules and applying the aspects to existing code.
By doing so, the code only performs its intended function and is not 'polluted' with
the crosscutting concern. The additional modularisation capability introduced by
aspects provides the ability to apply crosscutting concerns in a non-invasive way
resulting in applications that are easier to maintain, extend and reuse.
Distribution is considered a crosscutting concern and seminal work in AOP
concentrated on modularising the distribution concern [66]. Since then, several
attempts have been made to apply the distribution concern to existing code using
AOP techniques. These attempts have generally concentrated on applying aspects
to existing code that has not been written with distribution in mind. This attempt
at distribution transparency has significant issues, similar to those identified by
Waldoetal.[118], because distributed method calls do not behave in the same
way as local method calls.
We have also found during our research that applications that have not been
written with distribution in mind can, once distribution has been applied, have
undesirable side effects. For example, a class that starts threads in its constructor
will, once methods in the class are made distributed, start these threads in both
the client and server because the, now distributed, object must be instantiated
Search WWH ::




Custom Search