Funciones ServerExternal y ServerExternal

Obsydian, Cool:Plex, Advantage Plex, AllFusion Plex...

Moderadores: Jorge Ubeda, pacopicon

Funciones ServerExternal y ServerExternal

Notapor vhorozco » Mié Ene 13, 2010 4:54 pm

Saludos Amigos,

Alguien me puede ayudar con las definiciones, su diferencia y los contextos de aplicación de las funciones ServerExternal y ServerExternal; al momento he utilizado las ServerExternal para incluir source codes con sentencias SQL, pero no me queda claro donde se ejecutan y cual es la diferencia con las funciones ServerInternal, si las 2 tienen las mismas definiciones en la documentación de Plex.

Gracias de antemano por sus gentiles aportes.

Atte.
Hugo Orozco
vhorozco
 
Mensajes: 20
Registrado: Mié Ago 12, 2009 11:14 pm
Ubicación: Mexico

Re: Funciones ServerExternal y ServerExternal

Notapor Jorge Ubeda » Sab Ene 16, 2010 7:10 pm

vhorozco escribió:Saludos Amigos,

Alguien me puede ayudar con las definiciones, su diferencia y los contextos de aplicación de las funciones ServerExternal y ServerExternal; al momento he utilizado las ServerExternal para incluir source codes con sentencias SQL, pero no me queda claro donde se ejecutan y cual es la diferencia con las funciones ServerInternal, si las 2 tienen las mismas definiciones en la documentación de Plex.

Si revisas los triples que definen ambos tipos de funciones, verás que una es "external", y la otra "internal". La diferencia entre ambos tipos está explicada en la ayuda de Plex, pero básicamente se trata de que la external será implementada como un objeto independiente, y la internal, como un objeto incluído dentro de otro, por generalizarlo de algún modo. Dependerá de la implementación de la plataforma cómo se expresará esto en un lenguaje determinado. En RPG, una internal se convertirá en una subrutina de otra función; en c++ será una función incluída como librería. Y siempre, una external será un objeto independiente. En este ejemplo, en RPG será un PGM, y en c++ una dll.
Un aspecto importante será el impacto de su implementación: Una internal presentará dos problemas: al ser compilada como incluída en otra función, cada vez que se producen cambios en una "internal", se deben recompilar todas y cada una de las llamadas a esa internal, porque de lo contrario, algunas tendrán la rutina antigua. En cambio, un cambio a una external sólo afecta a ésta (y si pasa o recibe parámetros, a cada llamada a ella). El segundo problema es que en una internal, el código se agrega al objeto principal que la llama. Si una función llama a varias internals, su código se incrementará con el tamaño de todas estas.

Un aspecto más: A mi juicio, declarar a una función como server external o server internal sólo afecta a éste aspecto, pero no dice nada de su estructura interna. Existe otra función que debería ser agregada primero en la herencia: Function Shell. Tus funciones deberían quedar como:
mi_funcion ...is a ...FunctionShell
mi_funcion ...is a ...ServerExternal

o, si se trata de una función servidora, mejor:
mi_funcion ...is a ...ServerShell
mi_funcion ...is a ...ServerExternal

De esta manera, habilitarás tu función para herencia múltiple, ya que FunctionShell está en la base de toda la herencia de funciones, y por lo tanto podrás heredar o construír herencia que combine con otras funciones que mantengan este orígen. (Esto suponiendo que se está heredando de Patterns. En otro caso, deberás construír tu propia estructura de herencia)
Jorge Ubeda
Site Admin
 
Mensajes: 229
Registrado: Mié Oct 26, 2005 6:00 pm
Ubicación: Valencia


Volver a Plex

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron