{"id":1,"date":"2020-02-07T08:29:24","date_gmt":"2020-02-07T08:29:24","guid":{"rendered":"http:\/\/spiderwiz.org\/project\/?p=1"},"modified":"2025-04-09T06:14:46","modified_gmt":"2025-04-09T06:14:46","slug":"spiderwiz-paradigm","status":"publish","type":"post","link":"https:\/\/spiderwiz.org\/project\/spiderwiz-paradigm\/","title":{"rendered":"From Data Capturing to Data Sharing"},"content":{"rendered":"\n<div class=\"rockwell\"><p>In the beginning God created the <em>Data Objects<\/em>. And God blessed them, and God said unto them, Be fruitful, and multiply, and replenish the network, and subdue it: and have dominion over the protocols of the communication lines, and over the interfaces of the services, and over every bit that moveth upon the network.<\/p><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"550\" src=\"http:\/\/spiderwiz.org\/project\/wp-content\/uploads\/2020\/11\/How-does-it-work-1.png\" alt=\"\" class=\"wp-image-1389\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Goodbye Network Computing, welcome Data Object Sharing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The classic concept of network computing is of a system that consists of multiple compute units, each that consumes some sort of data, does some calculation on it and produces the result data. The system deploys a mechanism that creates one-to-one connections between consumers and producers (the endpoints), brokers between them to let the latter understand what the former needs, and then delivers the data from its source to its destination. The structure of the delivered data is based on a contract between the two endpoints (the agreed <em>interface<\/em>). Each endpoint is supposed to have the necessary knowledge to locate the peer endpoint and then generate or interpret the data. All of these form the mechanism of <em>Data Capturing<\/em>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Data Object Sharing concept turns this model upside down. The basic entity of a network is the Data. It consists of <em>Data Objects<\/em> that are structured in a hierarchy of <em>data object types<\/em>. The type determines the position of the object in the hierarchy (by telling the type of the object\u2019s parent) and describes the object <em>properties<\/em>. Every application that joins the network can <em>share<\/em> data objects, and those are <em>shared<\/em> across the network so that when an application joins it has immediate access to the entire data regardless of its source.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The difference between the models has dramatic implications. Most notably, with the sharing model data delivery is not limited to one-to-one communication. Any application that produces a certain data type can share it over the network, and applications that consume this type get the data from all the sources without additional consideration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Secondly, the view of the network as a collection of data objects enables powerful data delivery models. Hubs and routers can perform fine-grained multiplex and multicast of specific data objects. Additionally, since data objects of the same type tend to change over time only in a subset of their properties, powerful object-based data compression may be applied, similarly to video compression that is based on small discrepancies between successive frames. All together, the model allows spectacular reduction in network volume and acceleration of data delivery speed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another advantage of the sharing model is that it inherently supports pure event-driven programming, because the model implies that the basic units that travel through the network are events \u2013 of data object tree manipulations (insertions and removals) or property updates of existing data objects.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Spiderwiz Programming Model and Runtime<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Spiderwiz<\/em><\/strong> is an event-driven programming model and runtime that fully captures the power of the Data Object Sharing model. The foundation of the model is a <em>Data Object Class Library<\/em>, which contains the definitions of all the data object types used in a project. Each class defines object properties and the position of the object in the hierarchy, i.e. the type of its parent. The library classes usually do not include any implementation-specific code and are used by all the developers that participate in the project independently of each other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each service or microservice that plays a part in the mesh can be a <em>producer<\/em> or a <em>consumer<\/em> (or both) of some data object types. A producer manipulates the data object tree by inserting or removing objects, or updates the properties of existing objects, then <em>commits<\/em> the changes in order to share them over the network. The commits of the producers fire events at the consumers. A consumer handles the events by registering <em>implementation classes<\/em> that extend the library classes and implement event handling methods.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Spiderwiz runtime library supports the programming model and hides everything else deep under the hood. That includes dealing with communication lines, network protocols, endpoints, services, interfaces, data serialization, compression, routing, multiplex and multicast, service discovery, pub\/sub and all the cogwheels that require 90% of programming resources just to move the data around rather than dealing with the data itself. As a programmer, you never have to deal with them. As a system administrator, you just need to specify configuration parameters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To get convinced that Spiderwiz delivers what it promises, put your hands on it through its <a href=\"http:\/\/spiderwiz.org\/project\/tutorial\/\">tutorial<\/a>. <strong>Go ahead and see how programming is a joy when it is easy as a Lego toy<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rockwell\">\u201cIn the beginning God created the <em>Data Objects<\/em>. And God blessed them, and God said unto them, Be fruitful, and multiply, and replenish the network, and subdue it: and have dominion over the protocols of the communication lines, and over the interfaces of the services, and over every bit that moveth upon the network\u201d.<\/span><\/p>\n","protected":false},"author":1,"featured_media":1378,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":15,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":1390,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/posts\/1\/revisions\/1390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/media\/1378"}],"wp:attachment":[{"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spiderwiz.org\/project\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}