The Extensible Services Switch (ESS) as a Heterogenous Execution Environment for Enterprise Integration Chris Tomlinson, Phil Cannata, Greg Lavender, Greg Meredith, Derrell Woelk Abstract: The Carnot project in the Enterprise Integration Division of MCC has developed an extremely flexible means of supporting the integration of a variety of heterogeneous components in a distributed computational setting. We term this means an Extensible Services Switch or ESS. The basic idea is that of a software version of a communication front-end on a traditional mainframe. In our case the ESS is used as an application layer front-end for applications and/or resources at a node of a distributed system. The ESS implements access to communications resources such as TCP/IP; OSI upper layers over TCP/IP, TP4, and X25; and as necessary, DCE etc. The basic technology of the ESS is a high-performance implementation of the Actor model [Agha 86], enhanced with mechanisms for inheritance and reflection. The Actor model provides the ESS with ultra-lightweight threads that are coordinated w.r.t. interference via the replacement behavior semantics. This makes it quite natural to express control and data flows of nested and distributed tasks that comprise a logical unit of work in an enterprise. The switch is completely interrupt driven and incorporates sophisticated support for the dynamic definition of storage structures and type-checked access to procedures generated by foreign language processors and linked dynamically into the switch environment. These features make it possible to rapidly integrate new facilities into the switch and to configure switches at runtime in the field. The majority of our experience with ESS technology has been in two areas: 1) OSI application and presentation layer support, and 2) so-called `tree spaces' for distributed/heterogenous workflow support. In workshop III we will focus on upper layer OSI support. We contend that the most effective approach to heterogeneous execution environment support for Enterprise Integration is to build directly on and enhance the OSI upper layers (6 and 7). To this end we use the ESS as an experimental model of a relatively ideal realization of the application layer framework. An ESS is fully capable of multiplexing and demultiplexing data and control flows for a multiplicity of service elements, application entities, and application processes. Some of these may be implemented directly in the switch, others may be implemented via the integration of library procedures, and still others may be supported via access to external O/S processes. For example, the ESS has been configured to support the SQL Access Group definition of the Remote Database Access protocol (SAG/RDA). In this application there may a variety of database resources accessible locally through an ESS and in this case the `application entity qualifier' is used to select the appropriate advertised database service at a switch. An interesting aspect of OSI upper layer support that is prominent in this application is the implementation of ASN.1 within the ESS. The developer is provided with class generators that build actor classes corresponding to each ASN.1 type defined in an application layer protocol. This allows the developer to work entirely in terms of the ASN.1 specification (including support for conversion to and from ASN.1 value notation). The ESS also includes generators that work from the Remote Operation Notation making it trivial to generate so-called client agents that access service elements defined via ROSE. Future directions include enhancing the ASN.1 support in the ESS to directly generate the tables used by the ISODE 7.0 supplied encoder/decoders, direct support for arbitrary macro notations, and experimentation with the new approaches to syntax extension in ASN.1. Of particular interest is support for the CMIS GDMO and enhancements.