Desarrollos CORBA con C++ Builder



Documentos relacionados
CORBA con Java IDL. Francisco Charte Ojeda ! " !# $ "$ % &'(!!! ) % #* %! " +,',' $! '(! $ - # " "! " '( %!.%# %%! +#! '(!! $!!#

SEGUNDO PARCIAL INFORMATICA II

Uso de la barra de tareas de Windows

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

PRACTICA 0:EL IDE DE C++ BUILDER 5.0

Objective C (Desarrollo con Apple)

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Práctica sobre compartición de instancias remotas.

Práctica 5: Common Object Request Broker Architecture CORBA

3.9 Patrón Distributed callback

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

1. Introducción. 1.1 Construcción de una aplicación CORBA

Práctica 4: Java Remote Method Invocation (RMI)

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Curso LINUX. AREA 1: Intercomunicación

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

APUNTES PROII 2º PARCIAL.

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences

El lenguaje de Programación C. Fernando J. Pereda

Una aplicación sencilla con CORBA y Java

Universidad ORT - Arquitectura de Software. Requisitos

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Ficheros de acceso aleatorio

MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes.

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

Introducción a la Programación Orientada a Objetos con C++

Tema 2. El lenguaje de programación Java (Parte 1)

APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...

Implementaciones de servidores CORBA con Java

Prof. Dr. Paul Bustamante

Ejercicios - Persistencia en Android: ficheros y SQLite

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

JAVA RMI: ESTRUCTURA INTERNA RMI

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Práctica 2: Java Remote Method Invocation (RMI)

LABORATORIO DE RC PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Aplicación Android de Asistencia al Caminante

Tema 4: INVOCACIÓN REMOTA

2. Estructura de un programa en Java

Parsear HTML con htmlparser para Android Guillem Pérez

Repaso de las características más importantes de la programación Java y su adaptación a Android

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT

Servicios web con SOAP y Eclipse

Examen escrito de Programación 1

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

!! Identificar las señales que llegan a la consola.

TP Nº4 Android - SQLite Fecha Miércoles 2014/08/29 Profesor: Pablo Ulman (Polshu)

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Examen de Prácticas de Programación Ingeniería Informática

Pruebas unitarias en profundidad

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Invocación de Métodos Remotos: Prácticas de Laboratorio

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11

Tema: Arreglos de Objetos en C++.

//Esta función es llamada cuando se produce un evento //de teclado void keycallback (void *userdata, SoEventCallback *eventoteclado) {

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Técnicas Avanzadas de Inteligencia Artificial Dpt. Lenguajes y Sistemas Informáticos. FISS. UPV-EHU

Introducción a Java LSUB. 15 de enero de 2015 GSYC

3.6 Patrón Factory y objetos persistentes. Políticas del POA asociadas

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

Tutorial 1: Desarrollo de un plugin

OMG - CORBA. Object Management Group. Common Object Request Broker (CORBA)

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Java RMI. Sistemas distribuidos

FRAMEWORK 2 Recepción de SMS

Implementación de clientes con CORBA y Java

Elementos léxicos del lenguaje de programación Java

SOR -::- Prácticas -::- Curso 05/06. RCP es un estándar desarrollado por Sun Microsystems y usado por muchos distribuidores de sistemas UNIX.

4.4 Caso de Estudio: Diseño e Implementación de la Capa Web de MiniPortal

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Programación de Aplicaciones Visuales II Ejercicio Paso a Paso: Aplicación para HelpDesk

Introducción - por qué usarlas?(1)

Interfaces gráficos en Qt con Qt-designer

Problemas de Redes de Computadores. Conjunto de problemas 1

JAVA RMI (REMOTE METHOD INVOCATION)

Práctica: Creación de un programa C# sencillo

Carlos A. Olarte BDII. CORBA Una arquitectura para integrar ambientes distribuidos y

Fundamentos de la programación

Sistemas Operativos Práctica 3

Servicios - Ejercicios

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

CAPITULO 3 ARQUITECTURA DE COMPONENTES GIS EN INTERNET

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Tema 2: Introducción a CORBA

EJEMPLO DE PRUEBAS UNITARIAS Y DE INTEGRACIÓN.

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida

IMPLEMENTACIÓN DE UN PROTOTIPO DE SOFTWARE DE E-LEARNING PARA LA ENSEÑANZA DE SQLSERVER UTILIZANDO MICROSOFT SILVERLIGHT

Procesamiento paralelo con hilos de Java

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Segunda práctica de Programación 2

Transcripción:

Desarrollos CORBA con C++ Builder Francisco Charte Ojeda Sumario! Introducción " # $# %$ &'()%$*+ " ),-. $ ) # %) ' ($ ) &/0 ) # ) $ (! $# Inprise VisiBroker para C++ ( &/0 ) 1.&2 3 4/0 ##)#$ /5 6 &)# /0) ) $ ( )'%)$ %$)!&/0 ) ) 1.&2 $ ) )! /0 ) " ' $ # ) ) %$&'( %$*) " "!!7 ")&/0$#$)! )$$# ) " $ )&'( ) $$ 7$&/08/0 #/0%$ 9" &/0 )"7 /0#( /0):! ';, Desarrollo de un servidor

9$<7)"! $(:") ) " $" $ # $ )$ 5 # # / (+")) #$ 9' # " )= $> " "34 / ()$#! 7. / ( " " " )")) 3 4 &'($!$#:) $7 idl)?!#) )$ #@* Definición de la interfaz " 8 ## " &'( ) ) "$+7 #"$! Application # ) : Run())! ) # ( = main() $ #

!"#$!% &'$ int main(int argc, char* argv[]) try // Initialize the ORB and BOA CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); CORBA::BOA_var boa = orb->boa_init(argc, argv); // Wait for incoming requests boa->impl_is_ready(); catch(const CORBA::Exception& e) cerr << e << endl; return(1); return 0; Listado 1. Código del proyecto correspondiente al servidor ( &'()!) " 7 # 7 (* Estadisticas#!) Basicas( : #?)#8 $ "7) # : module Estadisticas interface Basicas void Anade(in float Valor); void Elimina(); float Media(); float Maximo(); float Minimo(); ; ; Listado 2. Código del módulo IDL con la definición de la interfaz

< # # ) " # &'(! ##" $@A5 #! ) #)# &'() ( % "'$ Generación de stub y skeleton 1 &'(!! ) # ) #)) +! idltojava) %$)"idl2cpp> &'( &/0 9! # )# 5 " $ # 7 $ #)ServidorEstadistica)##cs) < )$ 9!7$:#:: $#"@9$$) " +7 ) ServidorEstadistica_s.hh) "$)):!&'( : $ ) " "!)" " " ) # 8 $

Implementación de la interfaz Estadisticas::Basicas 1$!) )#("))"$ $ # )! :!Estadisticas::Basicas ) &%'$ ** + " %! ) $ " ' # @B #! $ &'(): "+7$ (! <. #!)# "$ ) @ C) ) : 5: " ) )

, $ -. / ' -.Estadisticas::Basicas%" ( ) BasicasImpl) :7!&'(# ( A $ BasicasImpl skestadisticas::_sk_basicas) : $ $BasicasImpl ) ) :"$#) $!)

class BasicasImpl: public _sk_estadisticas::_sk_basicas protected: public: BasicasImpl(const char *object_name=null); CORBA::Float Maximo(); CORBA::Float Media(); CORBA::Float Minimo(); void Anade(CORBA::Float Valor); void Elimina(); ; Listado 3: Definición de la clase de implementación generada por el asistente de C++ Builder +?"BasicasImpl$"$)# " $!? ) $ // En el constructor BasicasImpl::BasicasImpl(const char *object_name): _sk_estadisticas::_sk_basicas(object_name) // inicializamos los miembros de datos isuma = inumoperandos = iminimo = imaximo = 0; // Devolvemos el valor máximo CORBA::Float BasicasImpl::Maximo() return imaximo; // Devolvemos el valor medio CORBA::Float BasicasImpl::Media() return isuma / inumoperandos; // Devolvemos el valor mínimo CORBA::Float BasicasImpl::Minimo() return iminimo; // Se añade un nuevo valor void BasicasImpl::Anade(CORBA::Float Valor) // Actualizamos los valores internos imaximo = inumoperandos? (Valor > imaximo? Valor : imaximo) : Valor; iminimo = inumoperandos? (Valor < iminimo? Valor : iminimo) : Valor; inumoperandos++; isuma += Valor; // Eliminamos los valores actuales void BasicasImpl::Elimina() // inicializamos los miembros de datos isuma = inumoperandos = iminimo = imaximo = 0; Listado 5. Implementación de los métodos

private: // Miembros para almacenar resultados float isuma, inumoperandos, imaximo, iminimo; "! ) :? # $$ ) $(B)#< Ejecución del servidor 1$!#$ ) ) $, +;'+ + # $" ) D) $:! )!+!, $ $ 9! " <# $ &/0<$" "$ )$"$# "?# $ " $ ) ")7<"<

Desarrollo de un cliente 9 $# ) ) "$." $"""$)$ $ ("$#)#?: # 1 $! " " '! ( # " )<$@E"$ 0 :$ @ F # $)@*9 ) ")# $&'(?$ServidorEstadistica.IDL <<7"$# &'( <"$ ) # # #) $#)"! ) &'(< <$$"#"7 &'( + #))"$ (C! # ) < : )! # "7 ## " #idl2cpp)7 $+ %) ) "$ %$

1 %2'$" -- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) try Application->Initialize(); // Initialize the ORB and BOA CORBA::ORB_var orb = CORBA::ORB_init( argc, argv); CORBA::BOA_var boa = orb->boa_init( argc, argv); Application->CreateForm( classid(tform1), &Form1); Application->Run(); catch (Exception &exception) Application->ShowException(&exception); return 0; Listado 6. Función principal del cliente CORBA Creación del objeto ' #!)!Estadisticas::Basicas: )! :_bind() ) + $ <% @ =G 5! ) )# 9 ) #? ) : +?")$

3 '"4-.""%" ':)")"$ $)$#:)< class TForm1 : public TForm published: // IDE-managed Components private: // User declarations Estadisticas::Basicas_ptr fastcall Getbasicas(); Estadisticas::Basicas_var Fbasicas; void fastcall Setbasicas(Estadisticas::Basicas_ptr _ptr); public: // User declarations fastcall TForm1(TComponent* Owner); property Estadisticas::Basicas_ptr basicas = read=getbasicas, write=setbasicas; ; Estadisticas::Basicas_ptr fastcall TForm1::Getbasicas(void) if (Fbasicas == NULL) Fbasicas = Estadisticas::Basicas::_bind(); return Fbasicas; void fastcall TForm1::Setbasicas(Estadisticas::Basicas_ptr _ptr) Fbasicas = _ptr; Listado 7. Código generado por el asistente de uso de objetos CORBA

( ) ") basicas!estadisticas::basicas $ # : # $(D:$ FbasicasNULL.))! 7 $# :# " Diseño del formulario basicas") :(!?!$#) ( " $ @ == 5 TEdit ) # 7 -. 5 5 $8 &TEdit# $"$$) : Anade()! Estadisticas::Basicas)# " "7 ( ")) $ 7 9 ) $ ( E) : Elimina()# 7 $ Ejecución del cliente + $ #) ) ) " # " $ " # : ( 8) $#) <) 7( ) "

// Controlar cada pulsación en el TEdit void fastcall TForm1::edEntradaKeyPress(TObject *Sender, char &Key) if(key == 13) // Si se ha pulsado Intro // añadimos el nuevo dato basicas->anade(strtofloat(edentrada->text)); // y mostramos los nuevos resultados lbmaximo->caption = FloatToStr(basicas->Maximo()); lbminimo->caption = FloatToStr(basicas->Minimo()); lbmedia->caption = FloatToStr(basicas->Media()); // seleccionar el contenido del TEdit edentrada->selectall(); Key = 0; // e ignorar la pulsación //------------------------------------------------------ // Al pulsar el botón Reiniciar void fastcall TForm1::btnReiniciarClick(TObject *Sender) basicas->elimina(); // Llamamos al método Elimina() lbmaximo->caption = "?"; // y eliminamos resultados lbminimo->caption = "?"; lbmedia->caption = "?"; Listado 8. Código de implementación del cliente 1 : $ $ ' H I) # $ ' $ ) 5')&/0) """! Estadisticas::Basicas " BasicasObject 7 $ ServidorEstadisticas.exe < oadutil)#$@=*' ": $ )/0" $) ": Concluyendo $ ) $#! )) # &/0 $#! )! ) )<$) 8 $ $# ($/0# )# $

6 oadutil "