Collage Declarative Runtime for Distributed Web Apps
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Modern web applications face challenges in programming due to the mismatch between different programming models and runtime systems, leading to complexity and inefficiency in developing and deploying cross-organizational software, particularly in web mash-ups that require shifting between browser-side, server-side, and client-side logic.
Innovation Solution
A declarative programming model and runtime system, referred to as Collage, that unifies data and execution models across nodes, allowing for distributed computation and enabling cross-organizational software composition by using a resource description framework (RDF) and abstract interaction primitives to simplify user interface design and deployment.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If traditional programming models are used for web applications with separate browser-side, server-side, and data access logic, then each tier can be developed independently, but the complexity increases significantly when composing cross-organizational software and programs must be entirely rewritten when shifting between tiers
Solution Approach 1:
The patent applies universality by creating a unified programming model that works across all tiers (browser-side, server-side, data access). The declarative language and resource description framework enable the same program to be executed differently across tiers without rewriting, making the programming model multi-functional and adaptable to distributed web application architectures.
Solution Approach 2:
The patent introduces an intermediary layer in the form of a runtime system that translates and coordinates execution between different tiers. This runtime acts as a mediator that handles the complexity of distributed execution, allowing developers to write programs once while the runtime manages the adaptation across browser, server, and data access layers.
2Productivity
If multiple data access languages and scripting models are used for different tiers, then each tier can use optimized languages, but components do not compose well and require painful amounts of scaffolding
Solution Approach 1:
The patent merges multiple programming models into a single unified declarative language. Instead of using separate languages for data access, business logic, and presentation, the patent combines them into one language that can express all these concerns, eliminating the need for scaffolding and improving component composition.
Solution Approach 2:
The unified programming model serves multiple functions across different tiers simultaneously. The same declarative language can be used for data access queries, business logic definition, and presentation layer specifications, making it universal and eliminating the need to learn or switch between multiple languages.
3Reliability
If programming models and runtime systems are designed for monolithic applications, then development is simpler, but the mismatch becomes a significant impediment to producing and composing reliable distributed application software
Solution Approach 1:
The patent applies dynamics by creating a runtime system that dynamically adapts the execution of declarative programs across distributed tiers. The runtime can dynamically determine which tier should execute which part of the program based on the resource descriptions and capabilities available, rather than requiring static assignment of functionality to specific tiers.
Solution Approach 2:
The runtime system serves as an intermediary that manages the complexity of distributed execution. It handles the coordination, translation, and error management between tiers, shielding developers from the complexity while ensuring reliable execution of distributed applications.
Data Source
AI summary
A system and method for distributed computation includes providing a first service of a first computation node in a network of nodes, the first service having a first resource, the first resource including one of references to data and other resources. In a second service on a second computation node, the first resource is reference-able by associating the first resource in the second service for use in the second service. A distributed computation is performed across node boundaries using the references of the first resource to perform the computation in the first service and in the second service.


