|
El M&P Runtime (MPR) tiene capacidad nativa de procesamiento distribuido en Internet en
modalidad peer-to-peer (P2P).
En el procesamiento distribuido varios MPR residentes en diferentes
procesadores interactúan entre si.
La modalidad P2P permite que cualquiera
de los MPR pueda iniciar una interacción cuando sea necesaria.
La imagen siguiente muestra varios usuarios remotos usando Browsers
y Windows Phones (WP) interoperando con un Server multiusuario MPeServer
en modo P2P:
La funciónalidad del MPR utilizado en los Browser y Windows Phones con Silverlight es un
subset/superset del MPR de .NET. Denominamos MPRe al MPR correspondiente al
Silverlight .NET y MPRm al MPR correspondiente al
Windows Phone .NET.
El MPRe al operar sobre Silverlight .NET puede correr en gran cantidad de Browsers (IE,
FireFox, Safari, Chrome).

M&P permite distribuir la funciónalidad de la aplicación entre
el Browser o WP y el Server MPeServer con gran libertad así como redistribuir rápidamente las
funciones en caso de requerimientos cambiantes. En procesos críticos en cuanto a
Seguridad permite correr el código critico en el Server sin necesidad de bajarlo
al Browser.
Ventaja respecto de la arquitectura client-serveer basada en HTTP
En la arquitectura tradiciónal es Client-Server basada en HTTP solo el Browser
o WP (el Client)
puede iniciar una interacción. Esto se debe a que el protocolo de comunicación HTTP utilizado es un protocolo Client-Server.
El esquema Client-Server resulta muy limitado para la implementación de "Rich Internet Applications". Por ejemplo, si el Client solicita al Server la realización de un cálculo y en medio del cálculo es necesario que el Server consulte al Usuario
remoto para poder continuar,
no lo puede hacer. Resolver una situación de este tipo implica la implementación de una lógica de interacción computaciónalmente sofisticada y antinatural para los Usuarios
acostumbrados a operar aplicaciones "Desktop".
El esquema Client-Server HTTP implica "para un estimulo, una sola respuesta". Esta limitación es insalvable con el protocolo HTTP.
El esquema Peer-to-Peer, en el que cualquiera de las partes (el Server o el Browser/WP) puede iniciar una interacción requiere la implementación de un canal de comunicación
"duplex".
Para lograr una comunicación duplex M&P adicióna un canal bidirecciónal basado en
Sockets TCP.
El canal duplex de M&P permite al Server invocar Servicios del
Browser/WP y publicar Eventos en el Browser/WP.
El M&P incorpora el procesador BGC que permite
al Server MPeServer usar un Browser o WP como si fuera una Consola Gráfica
Remotaa. En la siguiente imagen, tomada de la demo "Turtle
Graphics", los trazos de la figura "Octagon" son enviados, uno a uno,
desde un Server MPeServer. De la misma manera podría enviarse un
Electrocardiograma (ECG) en tiempo real.
En la
presentación de M&P introdujimos el Lenguaje BScript y
las BSX (BScript eXpresssions). Mencionamos que BSX es un
tipo de dato definido en el MPR y que un objeto BSX puede
contener datos y programas BScript.
También mencionamos que los objetos BSX desempeñan un rol
central en la arquitectura de procesamiento distribuido de M&P
que está basada en la evaluación remota de BSXs.
De esta manera la arquitectura de procesamiento distribuido de M&P
es extremadamente simple y eficiente y permite la adaptación
dinámica de las aplicaciones..
El BSX Channel es un elemento central en la arquitectura de
Procesamiento Distribuido de M&P porque conecta un Browser/WP con un
MPeServer permitiendo la evaluación remota de BSXs. .
El BSX Channel permite realizar invocaciones remotas recursivas (anidadas,
reentrantes) en ambas direcciones.
Ver MPRe Test de Reentrancia - Performance.
Las invocaciones remotas pueden ser sincrónicas o asincrónicas. Como el canal TCP básico es asincrónico el BSX Channel emula el funcionamiento sincrónico
en las invocaciones sincrónicas.
El BSX Channel utiliza multithreading e integra cuatro BLOCKS,
dos en el Browser/WP y dos en MPeSever:
Los BLOCKS, identificados en la imagen por el nombre de las
interfaces que implementan, pueden ser reemplazados fácilmente por otros
que provean variantes funciónales.
Los siguientes "code snippets", que se extajeron del código XAML
de los TopBoards del Browser/WP y del
Server respectivamente, muestran la composición de los BLOCKS mediante
código XAML.
|
Browser/WP - Silverlight
|
MPeServer
|
<mp:BChannelB2S
x:Name='ChannelB2S'
Description='Channel whith Server'>
<mp:BChannelB2S.Socket>
<mp:BSocket>
<!-- asigna un valor desde BUS -->
<blk:BReference
x:Name='Port1'
TargetPath='Port'
SourcePath='$BUS.gcPort' />
</mp:BSocket>
</mp:BChannelB2S.Socket>
</mp:BChannelB2S>
|
<mp:BChannelS2B
x:Name='ChannelS2B'
Description='Channel whith Clients'>
<mp:BChannelS2B.Socket>
<mp:BSocket>
<!-- asigna un valor desde BUS -->
<blk:BReference
x:Name='Port1'
TargetPath='Port'
SourcePath='$BUS.gcPort' />
</mp:BSocket>
</mp:BChannelS2B.Socket>
</mp:BChannelS2B>
|
Compresión y Encriptación de los Mensajes
El BSX Channel realiza la Compresión y la Encriptación de
los Mensajes.
Conexión automática
M&P establece automáticamente la comunicación duplex
al iniciar el procesamiento de la Aplicación.
Adaptación Dinámica
Como consecuencia de la interacción Peer-to-Peer M&P permite realizar una distribución optima de funciones entre el
Browser/WP y el Server MPeServer. Las funciones pueden ser redistribuidas con facilidad en cualquier momento permitiendo una adaptación
dinámica a nuevas exigencias de
procesamiento.
El BSX Channel provee métodos que permiten invocar remotamente Servicios
BScript
registrados en un procesador remoto. También provee una función que permite a un
procesador suscribirse a notificaciones de Eventos BScript publicadas en un procesador
remoto.
Los mensajes intercambiados entre los procesadores son BSX (BScript
eXpressions) serializadas en formato binario.
Los métodos permiten la invocación remota sincrónica y asincrónica
respectivamente.
Los Servicios invocados sincronicamente retornan BSXs.
Cada Mensaje contiene 3 elementos:
UID es un Identificador Univoco Universal asignado por el BSX Channel para
identificar unívocamente a los mensajes y realizar el matching entre los
'Requests' y sus correspondientes 'Responses'.
| El UID es un identificador de solo 8 caracteres generado con el
método AUTOKEY de M&P. |
Como veremos mas abajo los contenidos de F1 y RR constituyen la "carga útil" del Mensaje.
Por ejemplo un Mensaje del Browser/WP al Server podría ser:
"sgC86m5e" - (setq ClientID "A374") - false
|
Este Mensaje especifica que, en el Server MPeServer debe asignarse el string "A374" a la
variable BScript "ClientID".
Invocación Remota
Invoca en el procesador de destino la BSX indicada
en F1.
| Recordar que los valores retornados en las invocaciones
sincronicas son
también BSXs. |
El campo RR (response required)
RR es un dato booleano que indica si el procesador que realiza la invocación
requiere un valor retornado y es manejado internamente por el BSX Channel
para optimizar el uso del canal de comunicación. Por ejemplo si en una
invocación asincrónica no se especifica un delegate de callback significa que al
invocante no le interesa recibir un resultado y entonces el BSX Channel pone
RR = false.
Si la invocación asincrónica especifica un delegate de callback RR = true y
cuando arriba el resultado el BSX Channel ejecuta el delegate de
callback pasándole como argumento la BSX retornada.
El BSX Channel provee el método RegRemoteEvtSusc que permite a una
Aplicación en un procesador suscribirse a notificaciones de Eventos BScript publicadas en
el procesador remoto asociado por el BSX Channel.
El metodo RegRemoteEvtSusc permite asociar al evento BScript remoto un evento
BScript "proxy"
local. Una vez registrada la suscripción (asociación) cada vez que el evento remoto ocurra
M&P dispara el evento "Proxy" local asociado.
Los argumentos (datos) del evento remoto aparecen también como argumentos del evento "Proxy" local asociado.
Ver Ejemplo.
| Para la aplicación local es como si el evento fuera local. |
Las facilidades de M&P Remoting permiten la creación y manipulación de
objetos
.NET en
forma remota mediante los métodos de invocación remota del BSX Channel.
Ver también
|