{'fraction_non_alphanumeric': 0.02565597667638484, 'fraction_numerical': 0.011661807580174927, 'mean_word_length': 5.703125, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Integrated computational paradigms for flexible client-server communication

The basic insight behind client-server computing is separating the aspects of access and management of computational resources. This simple model offers simplicity in closely matching the flow of data with the control flow and promotes modular, flexible, and extensible system designs. It is, however, limited by its focus on clients requesting individual services. In fact, clients may need to invoke multiple services, coordinated to reflect how those services interrelate and contribute to the overall application. Important examples include task allocation and event notification in collaborative workgroup systems [Bender 1995], and task sequencing and routing in workflow applications [Fischer and White 1994]. As a consequence, there have been several proposals for extending the basic client-server model in order to provide flexible support of client interactions with multiple servers. (See, for instance, Adler [1995] for a discussion and classification of possible extensions.) In the Coordination Technologies Group at the Rank Xerox Research Centre we have addressed this problem by identifying the computational paradigms that can best provide clientserver computing with the flexibility required to meet the demands of workflow and workgroup applications. As a result, we have designed and implemented the Coordination Language Facility (CLF) [Andreoli et al. 1994, 1996], a middleware tool that extends the basic one-to-one client-server model of communication with capabilities for many-to-many interactions among clients and servers. The CLF achieves this flexibility by combining two different computational paradigms: