|
*** Documento en elaboración *** v185
El Procesador BScript tiene capacidad nativa de procesamiento paralelo.
Mediante su arquitectura multi-environment puede procesar
en paralelo multiples threads sin que se produzcan interferencias entre
ellos, porquee cada thread cuenta con su propia área de datos (Environment).
Un Environment BScript es un objeto de
Clase ENV cuya función es proveer un área de
memoria de trabajo para el intérprete.
El Environment almacena el contenido de las variables y las
definiciones de funciones BScript. También contiene una HASHTABLE denominada
htUserData en la cual la Aplicación puede almacenar información.
| El rol de un Environment es análogo al del un
Application Domain (AppDomain) de .NET. |
Múltiples Environment
Al arrancar el intérprete BScript crea por default un Environment
que se denomina Environment Global al que le asigna el nombre "GLOBBL".
Una aplicación puede crear al vuelo y utilizar otros Environment. Los
Environment activos son completamente independientes entre sí. Por ejemplo
MPeServer asigna un Environment diferente para cada
usuario activo.
Las facilidades multi-environment de BScript le permiten un procesamiento
paralelo simple y eficiente mediante el uso de multithreading.
Las facilidades multi-environment de BScript le permiten, en el caso de
MPeServer, implementar en forma simple y eficiente
el procesamiento multiusuario.
En las tres Plataformas descriptas en este eBook existen una
gran cantidad de Métodos "overloaded" para trabajar en modo multi-environment.
Para simplificar el documento adoptamos el símbolo [ ]
para decorar los métodos "overloaded" para trabajar en modo multi-environment.
En los métodos decorados el "overloading" consiste en que se incluye como primer
parámetro el parámetro ENV Env.
Por ejemplo si tuviéramos decorado un método
public void xyz(String s)
implicaría la existencia de la variante
public void xyz(ENV Env, String s)
y la relación entre ambos métodos es la siguiente:
public void xyz(String s)
{
xyz(OB.GENV, s);
}
Las variantes overloaded se utilizan normalmente sólo al
codificar los Plugins de MPeServer.
Por ejemplo en la Clase SVRDialogsDemo en el Plugin Ejemplo
MPeSvrBasePin se incluye el
siguiente código:
public static void SetUp()
{
OB.RegSvc("gcsDialogsDemo", DialogsDemo);
}
internal static object DialogsDemo(ENV Env, BSX bsx)
{
String res;
OB.ShowMessage(Env, "Env, *** DialogsDemo ***", "Dialogs Demo");
res = (String)OB.ShowMessageYN(Env, "Do you want .... ? ", "*** My Question is ***");
OB.ShowMessage(Env, res.Trim('\"'), "*** Your Answer is ***");
res = (String)OB.AskInput(Env, "*** Value for X ***");
OB.ShowMessage(Env, res.Trim('\"'), "*** Value typed is ***");
return OB.T;
}
|