Love is in the air… Fusionándose con Nexus

“Ah, maestro, en la anterior clase habló de unirse a Nexus…” dijo el distraído novicio.

“La unión con Nexus es un acto espiritual sublime, solo al alcance de aquellos con el sentimiendo de amor más puro”, afirmó el maestro, mirando de reojo el dragón rampante esculpido en la escupidera de bronce.

“Ah, qué bonito es el Nexus en primavera, como le dije a aquella joven cerca del arroyo donde los juncos se mecen por la brisa del atardecer, de su belleza solo mesurable con la flor de loto… le susurré, mientras mi… mi… mi… programación a medida, pero hasta el fondo… esto… solo la puntita, perdón, un poquito…” balbuceaba el novicio, hasta que el sonido del bronce en su cabeza le envió al mundo de los sueños.

No cometamos el error del novicio, dejemos de pensar como programadores cualesquiera y met… centrémonos en la faena. Sigamos con la introducción a la programación de dlls terceros que comenzamos con el anterior artículo. Ahora toca implementar el esqueleto de nuestro módulo de ampliación de Nexus.

Eligiendo herramienta de desarrollo

Nexus ofrece dos soluciones para que código de terceros pueda escuchar los eventos que produce.

Con la primera opción se cubre todo el espectro de lenguajes que pueden crear DLLs Win32 (Delphi, C++, C, etc…).

Con la segunda, aquellos lenguajes que no pueden generar directamente DLLs nativas win32 (como Visual Basic 6 o inferior), o porque la única vía de interactuar con sus binarios sea mediante una capa COM (microsoft .NET).

Nuestro equipo de desarrollo puede proporcionar ejemplos en Delphi, VB6 o C# (.net). Para cualquier otro lenguaje, os aconsejamos que compartáis vuestras dudas y experiencias en los foros del distribuidor.

Implementando la DLL

Una vez escogido el lenguaje solo queda usar nuestra pericia y conocimientos (en su ausencia San Google ora pro nobis) y…

…en Win32:

Generar una DLL que exporte aquellos eventos que queremos escuchar del Nexus. Nexus cargará nuestra DLL e inspeccionará las funciones que exporta por NOMBRE. Si alguna de las funciones tiene un nombre de evento reconocido, esa será la invocada cuando el evento se produzca.

Ejemplo (Delphi):

library MiDllDeTerceros;

uses
SysUtils,

Classes,

MisFunciones in 'MisFunciones.pas';

{$R *.res}

exports
INICIARCONSISTEMA,
FINALIZAR,
DESPUESDEGUARDARDOCUMENTO,
DESPUESDEGUARDAREFECTO;

begin
end.

…en COM (VB6, .NET, otros):

Deberemos generar un objeto COM que publique una función que se llame “ListaProcedimientos” (sin parámetros) y que devuelva una lista de nombres de funciones (correspondientes a los eventos que se quieren escuchar).

Luego, una vez que queramos ponerla en producción, habrá de registrarse en Windows usando la utilidad regsvr32 para objetos COM escritos en código nativo o regasm para los objetos escritos para la plataforma .NET.

Un ejemplo (C#)

public object[] ListaProcedimientos()
{
  return new object[] { "INICIAR", "FINALIZAR", "DESPUESDEGUARDARMAESTRO"};
}

Obviamente, en el caso del mundo .NET, tendréis que usar interop para generar un wrapper COM para vuestro objeto (Especificando el ensamblado “Register for COM interop” en las propiedades de Build del proyecto, y o bien marcando la clase con atributo  [ComVisible(true)] o marcar el ensamblado entero “COM visible” en la información del ensamblado, por ejemplo). Así, éste se podrá llamar desde cualquier aplicación que pueda invocar objetos COM.

Repaso

Bien, recordemos los pasos que hemos indicado:

1º Decidir la herramienta de programación (aparte de que sepamos, dispongamos de ella, etc…) según el soporte que dé a DLLs nativas o programación COM.

2º Determinar los eventos que queramos escuchar de Nexus e implementar y exportar las funciones (Notad que deberán estar en mayusculas, ya que así las busca el nexus).

3º En caso de implementar un objeto COM, dárselo a conocer al sistema con la herramienta correspondiente.

Y con esto, y un poco de esfuerzo por nuestra parte, tenemos una bonita DLL (o servidor COM .EXE que también es posible).

“¿Qué nos queda? ¿Podrá la valiente DLL engancharse a Nexus? No se pierdan nuestro próximo capítulo ‘DLL y Nexus, el encuentro‘” – dijo incorporándose de un salto el novicio, quizás debido al efecto de los dragones de colores que rondaban su cabeza.

“¡Clonc!” sonó, mientras el maestro murmuraba “Es hora de descansar…”

Agradecimientos: a Didac Punyet por sus correcciones.

Acerca de El monstruo de Caerbannog

Temible guardián de la gruta que esconde un temible y obscuro secreto...

Publicado el marzo 2, 2009 en Desarrolladores, Distribuidores, Implantaciones y etiquetado en , , , . Guarda el enlace permanente. Dejar un comentario.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 103 seguidores