We propose to provide both kinds of interoperability in a bus implementation that is secure and supports dynamic replication and migration. We will implement the bus in Java, defining hierarchies of Java classes corresponding to the hierarchical service domains mentioned earlier.
In particular, ``frequent'' bus accesses such as announcements of state changes and real-time support would be implemented in replicated modules executing on the workstation of users; ``occasional'' bus accesses such as announcements of lock releases would be implemented in centralized, migrating agents, and ``rare'' bus accesses such as announcements of new users and conferences would be implemented in centralized stationary agents.
We will investigate several policies for migrating bus components and the interfacing clients based on the dynamic behavior of the users. For instance, when new users connect to a session, migratable units might move near or to their hosts, and conversely, when they disconnect from the session, migratable units near them might move to other hosts.
Migration/replication of the bus components will use the mechanisms provided by Java for dynamically loading and instantiating objects. Migration/replication of the clients would, in general, require migration awareness in the clients. However, we intend to also experiment with automatic migration of clients based on logging input events, compressing these events, and then later uncompressing and refeeding the events to new incarnations of the clients at the new site.
As mentioned earlier, CORBA provides a methodology for securing an interoperating agent. Our research on bus security will extend this work by applying this methodology to the objects defined by the bus.
We plan to implement a service in a centralized bus six months after it has been designed. We plan to finish implementation of the replication/migration/security policies in the final year.