TBLA Component Communication

Mark J. Norton

May 11, 2001



Given a modular learning system which is composed of components which implement various services, how does one component communicate with another? Why types of communication and system integration are possible? How are component APIs defined and represented? This document builds on TBLA Component Discovery and explores issues related to inter-component communication.



This diagram is used for purposes of discussion, below. The Service Broker and Registry are intended to be standard components of all TBLA systems. The box labeled Service Comp can be considered to be a generic system component that provides one or more services. Similarly, the one labeled “Data Manager” is a system component that provides a data management service on the body of data labeled “Data Repository”. A repository can be a collection of files, files organized by directories, aggregated files such as an IMS package, or a database.


Communication Considerations

Learning systems can be configured in a variety of ways. Some of these are discussed in TBLA System Configurations. All learning systems are assumed to have multiple users which can communicate to it simultaneously. Users can communicate with each other outside of the system using email, Instant Messenger, etc. Learning systems themselves may consist of multiple computer systems and need to communicate. These systems may be different operating environments and may provide very different kinds of services.

Communication and Interfacing

To a large extent, there is correlation between how tightly coupled system components are and overall system performance. Components which have a well defined, broad interface defined between them will operate faster than components with a narrow, message based communication mechanism. Components which operated on a shared data model and operate directly on the shared data are likely to be faster still.

A general purpose, component based learning architecture is likely to need all of these communication approaches, depending on the levels of performance and integration needed. A component which formats and delivers learning exercises, such as Learning Structures, will need fast, efficient access to a content repository. To provide good response time, it may be necessary to join these components tightly, or define a common data model which allows direct access to learning objects, subject to the limitations provided by an Access Manager service.

On the other hand, certain components may have little or no requirements to communicate with other components. New content entered into a repository may need to notify a catalog or directory service. Since real time performance is unlikely to be critical in this situation an update notice could be sent in the form of a message. A message system allows new components to be added to the system which are loosely coupled and perhaps allows existing services to be extended.

Messages

If components could be relied upon to be co-resident on a single host system, methods such as signals and shared memory buffers could be used. In order to support distributed learning systems, however, inter-component communication needs to be network based. Many well known methods support this type of communication, including TCP/IP streams and application level protocols based on them such as HTTP, RMI, CORBA, etc. Some means of addressing components (and possibly services within them) which exist within a computing environment needs to be defined.

Software Interfaces

While message based communication schemes are very general, they are not as efficient as an agreed upon software interface. Designers of learning systems will need the ability to define such interfaces and build components which are intended to work closely together. Two types of integration should be considered: local integration where the components operate on a shared host, and distant integration where components are hosted on different machines. The SCORM run time interface could be considered an example of this kind of integration, although the learner interface is a special case.

Shared Data Models

In some cases, and even closer level of integration may be needed. Content stored using a data model which can be shared between applications potentially allows direct access to data. While issues of access rights needs to be determined, this level of integration allows rapid access to information, possibly from more than one component on a system.