Posted on July 11, 2013 by Herman Dolder
obje of the M&P plataform
is to maximize the adaptability
of applications in situations of high complexity and rapidly changing
The schema of Distributed Processing of M&P provides the
flexibility and modularity required to achieve this
In M&P different parts of an application can run simultaneously on
two or more computers. The parts communicate with each other over peer-to-peer
(P2P) Real Time channels mainly on Internet.
The peer-to-peer channels of M&P are based on WebSockets available in a
wide range of Operating Systems.
WebSockets provide Real Time full-duplex communications channels over a
single TCP connection.
WebSockets are designed to communicate web browsers and web
servers, but they can be used even for
local inter-process communications.
To establish a WebSocket connection, the client part sends a WebSocket
handshake request, and the server part sends a WebSocket handshake response.
Only for the handshake the client and server roles exist, after the
handshake both parts are peers and any of them can initiate a
For a connection the server part must be listening. This stablishes an
startup order of precedence that is specially important when creating "networks
of peer servers" (servers interconected as peers).
Networks of peer servers
M&P allows to organize networks of peer multiuser servers that
communicate among them and with the clients through the P2P channels.
As we will see M&P introduces the concept of "Servers as BLOCKS" (SaB).
A client can communicate with several M&P servers simultaneusly.
In the current version of development and for demonstrations we
use five "M&P logical servers", two implemented in
the Node.js platform and
three implemented in the .NET 4.5 platform. These "logical
servers" can reside in one or more computers ("physical" servers").
Mini Web Server for serving
the M&P Base Page and associated objects.
Serving Plugins, Files.
Notifications and Calculations.
Extends the MPNODE server
with .NET functionality.
.NET alternative for MPNODE
DB, IMDB, User Authentication
The Node.js servers are ultraportable,
bein able to reside in mobile
Node.js operation reprpduced
For simpliciity and efficiency the M&P .NET servers can emulate the
full-asynchronous non-blocking single-thread operation of Node.js.
We will describe the function of each of these servers in more detail
in future posts.
M&P Runtime and specialized BLOCKS
In M&P the peer parts use the M&P Runtime (MPR) and a set of specialized
BLOCKS that implements the interfaces IBChannel, IBSocket
A BLOCK that implements the IBSocket interface encapsulates
the functionality of a WebSocket. (or of any other socket type).
A BLOCK that implements the IBSerializer interface
encapsulates the functions of BSX serialization, data encryption and
data compression, and the corresponding inverse operations.
In M&P the remote interoperation is based in the remote evaluation of
BScript expressions (BSX). The remote MPR provides the BScript Processor for
A BLOCK that implements the IBChannel interface has the
responsability of preparing and sending a BSX for its remote evaluation,
and to receive requirements and callbacks (also in form of BSXs) from the associarted remote
An IBChannel utilizes the the IBSerializer and the
the IBSocket BLOCKS.
In a symmetrical manner the remote part compose a set of BLOCKS that
also implements the interfaces IBChannel, IBSocket and
Servers as BLOCKS (and Clients as BLOCKS)
The IBChannel BLOCKS can be viewed as local proxies of the
remote processor that provide a high level of abstraction of the remote
In essence, the operation of a IBChannel BLOCK is similar to the
operation of the BScript processor, which facilitates the reallocation
of functions among clients and servers.
BXml and BXaml are also available in .NET
We have ported the BXml and BXaml processors we developed in
shows the BLOCKS composition in BXaml declared inside the TopBoard of an M&P
server. The BXaml code is exactly the same for the Node.js
as for the .NET servers.
The corresponding BXaml code in the H5J client is
Dynamic Loading of Plugins
In an M&P application some (as many as appropriate) BLOCKS can be loaded
dinamically on demand from an M&P server.
M&P allows us to distribute the application's functionality among the
M&P clients and the M&P servers with great freedom, as well as to
redistribute functions quickly in case of changing requirements or of
And, in critical processes in regard to security, M&P allows us to
run the critical code on the servers, without the need to download it to
See some BXaml H5J images ...