C/Visual C - CORBA

 
Vista:

CORBA

Publicado por jaimegb (1 intervención) el 15/06/2003 11:18:44
Tengo un problema con Corba.
Tengo que hacer un cliente Corba que interactue con un servidor (Corba), el problema es que recibiré todos los métodos para interactuar con él en tiempo de ejecución (y no sé cómo se hace).
Uso C++ y ORBacus (no sé si es la mejor opción, pero es lo que hay en mi puesto de trabajo).
Muchas gracias.
Saldos al foro.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cliente CORBA dinámico en C++ con ORBacus

Publicado por Alejandro (1286 intervenciones) el 03/07/2025 23:35:07
JaimeGB, para crear un cliente CORBA que interactúe con un servidor y que reciba los métodos en tiempo de ejecución, puedes seguir estos pasos:

1. Configuración del entorno: Asegúrate de que tienes ORBacus correctamente instalado y configurado en tu entorno de desarrollo. Esto incluye las bibliotecas necesarias y las configuraciones de compilación.

2. Definición de interfaces: Aunque recibirás los métodos en tiempo de ejecución, es útil tener una definición de las interfaces en un archivo IDL (Interface Definition Language). Esto te permitirá generar los stubs necesarios para la comunicación.

3. Compilación de IDL: Utiliza el compilador IDL de ORBacus para generar los stubs y skeletons a partir de tu archivo IDL. Esto te proporcionará las clases necesarias para interactuar con el servidor.

4. Uso de reflection: Para invocar métodos en tiempo de ejecución, puedes utilizar la reflexión. En C++, esto no es tan directo como en otros lenguajes, pero puedes implementar un sistema que utilice punteros a funciones o un mapa de métodos.

5. Implementación del cliente:
- Crea un objeto ORB y inicialízalo.
- Conéctate al servidor utilizando el nombre del servicio o la dirección del servidor.
- Utiliza un mecanismo para recibir los nombres de los métodos y sus parámetros en tiempo de ejecución. Esto puede ser a través de un archivo de configuración o un servicio de descubrimiento.
- Invoca los métodos utilizando punteros a funciones o un sistema de mapeo que asocie nombres de métodos con sus implementaciones.

6. Ejemplo de código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <orb/ORB.h>
#include "YourIDLStub.h" // Incluye el stub generado
 
int main(int argc, char* argv[]) {
    // Inicializa el ORB
    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
 
    // Obtén la referencia al objeto del servidor
    CORBA::Object_var obj = orb->resolve_initial_references("YourServiceName");
    YourService_var service = YourService::_narrow(obj);
 
    // Aquí puedes implementar la lógica para recibir métodos en tiempo de ejecución
    // y llamarlos dinámicamente.
 
    orb->destroy();
    return 0;
}

7. Pruebas y depuración: Asegúrate de probar tu cliente con diferentes métodos y manejar excepciones adecuadamente. La depuración puede ser crucial, ya que los errores en la invocación de métodos pueden ser difíciles de rastrear.

Con estos pasos, deberías poder crear un cliente CORBA que interactúe con un servidor y reciba métodos en tiempo de ejecución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar