Bringing desktop interoperability to real-time systems

Component Object Model (COM) is the de facto standard for handling objects in desktop PCs and is how Microsoft implements many of its Windows system interfaces. COM provides a complete language-independent object model, and a simple programming model that is widely used and well understood. Distributed COM (DCOM) extends this programming model to the network, bringing location-independe...

By David Sellars May 1, 2000

Component Object Model (COM) is the de facto standard for handling objects in desktop PCs and is how Microsoft implements many of its Windows system interfaces. COM provides a complete language-independent object model, and a simple programming model that is widely used and well understood. Distributed COM (DCOM) extends this programming model to the network, bringing location-independence and remote method invocation to all COM objects.

Designing systems with software components means moving away from the monolithic application or even the object-oriented class library approach.

Using a well-established component framework allows quick and easy component development, while maintaining modularity and isolation among subsystems. This is achieved by carefully specifying the interfaces between components, often known as ‘design by contract.’ Each component can also be tested in isolation to make sure it meets design goals and fulfills its external contract.

COM provides a scalable infrastructure for software components. Within this framework, DCOM adds the capability for distributed components and interaction between embedded systems and desktop PCs. On the desktop, COM provides language bindings for C, C++, and other compiled and interpreted languages. Java, Perl, Visual Basic, and other languages have built-in COM support.

Besides aiding development and testing, using software components in COM’s framework allows distribution and replacement of components without requiring an application to be rebuilt.

Using extension mechanisms, DCOM enhancements allow real-time requirements, such as execution priority, to be factored into distributed object-based systems. DCOM scaled to embedded devices allows them to transparently connect to each other and to remote, PC-based management consoles.

Using VxDCOM’s architecture

These tasks can be accomplished with Wind River Systems Inc.’s (Alameda, Calif.) VxDCOM technology, which is the first implementation of DCOM for embedded systems. VxDCOM’s connectivity allows development of distributed, object-based applications on the VxWorks real-time operating system (RTOS) using the Tornado II development platform. Transparent interoperability with Windows-based desktop PCs is made possible by directly implementing DCOM wire protocol.

VxDCOM has a 280-KB footprint and supports C and C++. However, COM’s binary interface, coupled with the DCOM protocol, allows seamless interconnection between supported languages on the desktop and C++ code on the embedded target.

VxDCOM also includes an interface definition language (IDL) compiler, Wind IDL (WIDL), as well as sample source code, demo programs, runtime libraries and headers, and documentation. The runtime portion implements some familiar API calls, such as CoCreateInstance, which help COM-fluent developers get up to speed quickly.

In addition, VxDCOM’s Tornado 2.0 Project Facility provides simple configuration of the kernel image to include COM support or both COM and DCOM support. When DCOM support is enabled, users will see extra tasks in their running system, which provide DCOM protocol implementation and runtime environment.

VxDCOM uses standard network protocols to ensure compatibility between COM clients and servers on different machines, possibly with different processors and architectures. Its compact footprint and ability to add new threads to the thread pool-to handle peaks in activity-make VxDCOM technology suitable for building embedded devices. For example, VxDCOM permits a Windows NT workstation to interact with manufacturing robots through graphical supervisory packages, or allows a VxWorks-based sensor to publish data directly to a PC spreadsheet.

Author Information

David Sellars software engineer, Wind River Systems Inc.