In a previous post, we described how to setup a web-based object-distribution framework where every object is served from an unique URL. Application developers build custom objects by wrapping different micro service providers, including WebAssembly Modules, into a universal container called droplet and publish them to a public repository.
In this post, we describe a simple protocol called Distributed Dynamic Remote Procedural Calls (DDRPC). DDRPC make it possible to create truly distributed applications powered by repository of objects.
A picture worth a thousand words and a video is even better. This video below instroduces how DDRPC works.
Warning, you must view the video in its entirety to understand the following discussion.
The DDRPC molecule is basically a micro-service provider that itself is transportable via droplet. A dependency graph of remote tasks can be created by adding many DDRPC molcules into a droplet. Since DDRPC uses async callback to signal completion, a promise-like setup would allow parallel, serial, or a mixed-mode execution of remote tasks to different peers.
Furthermore, droplets may contain graphical interface components, a remote task can be a survey form that remote peer must complete to continue local execution. Or an action taken by a remote peer before a local peer can follow in a gaming scenario.
Imagine a to-do list to carry out a high-level task can be shared from a repository and the list's participating parties can be changed by scripting before being initiated by anyone in the community.
Notice, DDRPC is peer-to-peer by nature, not following the traditional server-client application-distribution model. And since it is built on an object-distribution framework, it is also very dynamic.