hdolder.com srl

  hdc Home    |    Contenido    |    KO1    |    Director    |    Direcciones    |    email
  M&P TBW - Procesamiento Distribuido en Internet

 

 

 

                                v185

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".

Comunicación dúplex

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 procesador BGC

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.

BSXs: BScript eXpresssions

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

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. 

Mensajes entre procesadores

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 - F1 - RR  

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.

Suscripciones a Eventos BScript Remotos

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. 

M&P Remoting

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.

MPRe y MPRm

Ver también

 

 

  TBW The BLOCKS World

©2012 hdolder.com srl  

C80212A
2011-12-16