hdolder.com srl

  hdc Home    |    Contenido    |    KO1    |    Director    |    Direcciones    |    email
  BScript Métodos Multi-Environment

 

 

 

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

Metodos multi-environment

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;
        }

 

  TBW The BLOCKS World

©2012 hdolder.com srl  

CANJ5MGaJ
2011-12-16