To overcome the limitations resulting from the traditional separation between program and query optimization, the Tycoon\footnoteTycoon: Typed Communicating Objects in Open Environments. system integrates the analysis and rewriting of queries and programs using a common persistent intermediate representation (TML). TML is a continuation passing style (CPS) language which excels in its explicit, high-level representation of control and data dependencies. We describe Tycoon's innovative reflective system architecture that integrates program and query optimization and that supports modular compile-time as well as global run-time optimizations. We formally define TML and its core rewrite rules that unify many well-known optimizing transformations. Moreover, we describe how optimizations across abstaction barriers are performed in Tycoon and we report on our experience with optimizing large modular persistent applications.
This paper presents the type system of the TooL persistent programming language that captures much of the flavor of Smalltalk within a safe static typing discipline. Following the spirit of Smalltalk providing a highly flexible and extensible programming environment based on a small set of expressive language primitives, TooL provides only few built-in type concepts with rich semantics that achieve power through systematic use and orthogonality. The paper focuses on the language design issues that arise in the course of integrating type concepts that are well-understood in isolation like object types, subtyping, type matching, and type quantification into a practical database programming language. We illustrate these issues by code samples taken from the TooL generic bulk data library.
Mit der globalen Vernetzung von Rechnersystemen entsteht ein wachsendes Potential für eine Vielzahl spezialisierter Online-Dienste, welche sowohl Endbenutzern als auch Software-Anwendungen zur Verfügung stehen. Derartige offene verteilte Dienstemärkte sind insbesondere durch ihre Vielfalt des Dienstangebotes und die Dynamik der dort stattfindenden Nachfrager-Anbieter-Beziehungen gekennzeichnet. Dieser Artikel analysiert die Anforderungen einer solchen Umgebung und schlägt ein Architekturmodell vor, welches eine adäquate Grundlage für die Spezifikation, die Vermittlung und die Benutzung solcher Dienste bietet. Insbesondere Systemdienste zur Vermittlung und zum Zugriff auf Dienstangebote bilden einen Schwerpunkt der Betrachtung. Dabei werden auch konkrete Lösungsansätze vorgestellt, die zur Zeit in den am vorliegenden Beitrag beteiligten Arbeitsgruppen verfolgt und prototypisch implementiert werden.
Angesichts der Anzahl und Vielfalt vorhandener Standard- und Individualdienste in offenen verteilten Systemen gewinnt die Verwendung dieser Dienste innerhalb verteilter Anwendungen zunehmend an Bedeutung. Um die Dienste jedoch auch effizient in die Entwicklung komplexer verteilter Anwendungen einbeziehen zu können, sind geeignete Abstraktionen notwendig, die eine möglichst einfache Nutzung der Dienste ermöglichen. Hierdurch ergeben sich auch neue Anforderungen an die darunterliegende Systemtechnik, welche die notwendige Infrastruktur für eine solche Dienstnutzung bzw. Anwendungskooperation bereitstellen muß. Eine Analyse vorhandener Systeme zeigt jedoch, daß bisher keine integrierten Lösungsansätze existieren, welche die Aspekte der Dienstnutzung mit einer für kooperierende Anwendungen typischen vorgangsorientierten Verarbeitungssicht verbinden.
Auf dem Hintergrund dieser Einschränkungen stellt der vorliegende Beitrag die an der Universität Hamburg entwickelte TRADE-Architektur zur Unterstützung von Kooperationsanwendungen in offenen verteilten Systemen vor. Hierbei wird insbesondere auch auf die neu entwickelte Vorgangsbeschreibungssprache PAMELA eingegangen, welche eine Definition von Anwendungsvorgängen auf der hohen anwendungsspezifischen Abstraktionsebene der Kooperationsanwendungen bietet, in dem sie kontrollspezifische Aspekte der Vorgangsbearbeitung mit einer dienstorientierten Aktionsausführung verbindet.
Client support for locating, accessing, and using arbitrary services in open system environments emerges as one of the most interesting, complex, and practically relevant tasks of realising realistic open distributed systems applications. In the context of Open Distributed Processing (ODP), current standardisation efforts for a trading function play an increasingly important role for open system integration.
In addition to ongoing ODP standardisation activities official and de-facto standard system environments such as, e.g., the OSF Distributed Computing Environment (DCE), support efficient development and portability of distributed system applications. Therefore, time seems now ready to analyse and evaluate the use of such platforms also for developing efficient implementations of higher-level system support services, e.g., an ODP trading function.
This paper first elaborates on the specific potential of OSF DCE for supporting implementations of ODP trader functions. It then presents an architecture and reports on experiences with such an implementation in the context of system support for general service access, management and coordination in open distributed environments within the TRADE project. Finally, the paper draws the attention to still existing limitations and deficiencies of OSF DCE for realising ODP trader functions and proposes respective extensions to OSF DCE both at a conceptual and a concrete systems implementation level. According to such prototype implementation experiments, ODP trading functions can be integrated smoothly into a uniform standard system support platform (like DCE) and can be implemented efficiently by extending DCE by additional trading functions which specifically support service management, mediation and access for open distributed applications.
Based on the notion of persistent threads in Tycoon, we investigate thread migration as a programming construct for building activity-oriented distributed applications. We first show how astraight-forward extension of a higher-order persistent language can be used to define activities that span multiple (semi-) autonomous nodes in heterogeneous networks. In particular, we discuss the intricate binding issues that arise in systems where threads are first-class language citizens that may access local and remote, mobile and immobile resources.
We also describe how our system model can be understood as a promising generalization of the more static architecture of first-order and higher-order distributed object systems. Finally, we give some insight into the implementation of persistent and migrating threads and we explain how to represent bindings to ubiquitous resources present at each node visited by a migrating thread on the network to avoid excessive communication or storage costs.
We describe the Tycoon approach to scale the successful notion of a uniform, type-safe persistent object store to communication-intensive applications and applications where long-term activities are allowed to span multiple autonomous network sites. Exploiting stream-based data, code and thread exchange primitives we present several distributed programming idioms in Tycoon. These programming patterns range from client-server communication based on polymorphic higher-order remote procedure calls to migrating autonomous agents that are bound dynamically to networkresources present at individual network nodes. Following Tycoon's add-on approach, these idioms are not cast into built-in syntactic forms, but are expressed by characteristic programming patterns exploiting communication primitives encapsulated by library functions. Moreover, we present a novel form of binding support for ubiquitous resources which drastically reduces communication traffic for modular distributed applications.