SlideShare una empresa de Scribd logo
1 de 14
Desarrollo de componentesCOM Introduccional desarrollo de servidores y clientes COM con Visual C++ y Visual Basic respectivamente. COM101
Desarrollo de componentes COM Podemos entender a COM como una especificacion determinada por una serie de reglas y mecanismos que nos permiten la creacionde componentes de software independientemente del lenguaje en el que han sido escritos.  Un componente de software puede verse como una pieza de software binaria que puede reutilizarse por otras aplicaciones que las cargan como clientes o consumidores.
Desarrollo de componentes COM Caracteristicas principales de COM: ,[object Object]
Transparencia de localizacion: Nos permite consumir un componente si preocuparnos  de donde se encuentra. A la hora de reutilizar un coponente de software  podemos encontrarlo en varios sitios (como librería dinamicao estatica, en otra maquina e incluso en otro sistema operativo).,[object Object]
Desarrollo de componentes COM Para crear un GUID utilizaremos la utilidad GUIDGEN.EXE que normalmente viene con las herramientas de Visual Studio y Visual C++, aunque tambien podemos utilizar un algoritmo para generarlo en nuestro codigo. Tambien podemos utilizar una funcion llamada CoCreateGuid que no documentamos aquí pero que te puede ser de utilidad, en ese caso consulta la documentacion en linea.
Desarrollo de componentes COM La parte de software que se encarga de encontrar un objeto COM e inicializarlo y cargarlo en memoria se denomina «Service Control Manager» tambien conocido como SCUM y es parte del sistema operativo de Windows. Equivalencias entre COM y CORBA para el cargador. SCUM en COM ORB en CORBA
Desarrollo de componentes COM Cuando el servidor COM ya no lo necesitamos mas lo podemos descargar de memoria o apagar a traves de  los metodos declarados en la interfaz «IUnknown» (QueryInterface, AddRef, Release). El metodoQueryInterface de IUnkown permite consultar a un objeto COM si proporciona una interfaz determinada. En ese caso devuelve un puntero valido a la Interfaz.
Desarrollo de componentes COM Para describir un componente independientemente del lenguaje en el que fue escrito se crea una librería de tipo. El archivo de la librería de tipo es un archivo binario que contiene el mismo tipo de informacion que encontraria en un archivo de cabezera de C++. Para poder crear una librería de tipo hay que crear las clases del servidor COM y describir sus interfaces utilizando el lenguaje de descripcion conocido como IDL. Al compilar el IDL con la herramienta MIDL proporcionada por Visual C++ se genera la librería de tipo que podemos utilizar posteriormente.
Desarrollo de componentes COM Hay dos conceptos en COM que debemos revisar antes de continuar aunque tampoco son un requisito indispensable para introducirnos en la tecnologia, estos son la contencion y la agregacion. Contencion: En la contencion de objetos COM se instancia un objeto interno y se crea una interfaz externa que se comunica y delega con la interfaz del objeto interno. Agregacion: El objeto interno envia todas las llamadas de QueryInterface (IUnkown interno) a la implementacionIUnknown  del objeto externo.
Desarrollo de componentes COM Creamos un servidor COM con Visual C++ 6. (Abrimos nuestro Visual C++ 6) Creamos un nuevo proyecto ATL/COM App Wizard. File -> new   Projects Seleccionamos ATL COM APP Wizard ServidorSimple (nombre) y le damos a OK. Seleccionamos Dinamic link library como tipo de servidor Finishy OK.  (Ya tenemos el proyecto abierto y listo)
Desarrollo de componentes COM Añadimos una clase COM con ATL ObjectWizard a nuestro proyecto. Insert -> new ATL Object Objects -> Simple Object y le damos a Next. Shortname le damos de nombre HelloWorld y veremos como las demas casillas se autocompletan automaticamente. Lo dejamos asi y pulsamos  Aceptar. Añadimos un metodo a nuestra clase COM. Boton derecho sobre la interfaz en el explorador de clases y pulsamos AddMethod. Como nombre le damos ShowThis En parameters ponemos esto: [out, retval] BSTR *bstrOutput OK. Ahora buscamos la definicion del metodoShowThis y añadimos el siguiente codigo: *bstrOutput = SysAllocString(L"Hola Mundo desde un servidor COM");   justo antes de return S_OK;
Desarrollo de componentes COM Ahora vamos al Explorador de FileView del proyecto y observamos que en la carpeta Source Files existe HelloWorld.cpp que contiene nuestro metodoShowThis.  Digamos que esto es un Hola Mundo COM simplificado ya que suelen ser un poco mas complejo, pero pienso que de esta manera sera sencillo introducirnos en el mundo COM y conocer sus mecanismos basicos sin tantos quebraderos de cabeza. Ahora vamos al explorador FileView y sobre la interfaz idl pulsamos boton derecho del raton y seleccionamos compilar «compile ServidorSimple.idl». Al compilarlo deberias de ver en la ventana Build algo asi: ServidorSimple.tlb - 0 error(s), 0 warning(s) «Esta es la librería de tipo» hay que fijarse en su extension terminada .tlb que hace referencia a que es una librería de tipo. Ahoracompilamoshacemos un build del proyectocompleto y obtendremos la siguientesalida: UnServidorSimple.dll - 0 error(s), 0 warning(s)
Desarrollo de componentes COM Ahoraabrimosunaventana de comandos con permisosadministrativossinosencontramos en una version de windows reciente y escribimos en el directoriodondegeneramos la dll el siguientecomando: ,[object Object],Estoregistra la DLL en memoria y asi la tenemos a disposicion de otrasaplicaciones. AhoraabrimosVisual Basic 6 y creamos un proyectonuevo y en el menu  Project ->References buscamosnuestrocomponente en la lista “ServidorSimple 1.0 Type Library” y lo seleccionamos. Creamos un formulario con un boton y tenemos el codigocomosigue: Private Sub Command1_Click() Dim object As New UNSERVIDORSIMPLELib.HelloWorld     Dim interface As IHelloWorld     Set interface = object MsgBoxinterface.ShowThis End Sub ´Nota: Ustedesdeberian de tenerSERVIDORSIMPLELib  y no comoyoUNSERVIDORSIMPLELib. Ojo al datoqueluegovienen con que no  funciona.
Desarrollo de componentes COM Enhorabuena! Ya has hechotuprimeraaplicacionCliente/Servidorutilizando la tecnologia COM.  No deberiashabertenidoningunproblema a la hora de completareste tutorial de inicio en COM si has utilizadolasversiones de Visual C++ 6 y de Visual Basic 6. Ante cualquierduda o sugerenciacontactar : Charly ASAP lpgc.carlos@gmail.com www.edicionempresarial.com

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Manual Code::Blocks lenguaje C++
Manual Code::Blocks lenguaje C++Manual Code::Blocks lenguaje C++
Manual Code::Blocks lenguaje C++
 
Introducción a net
Introducción a netIntroducción a net
Introducción a net
 
Dev c++
Dev c++Dev c++
Dev c++
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtime
 
Grupo 3 Vb, procedimientos, 1er programa
Grupo 3 Vb, procedimientos, 1er programaGrupo 3 Vb, procedimientos, 1er programa
Grupo 3 Vb, procedimientos, 1er programa
 
Code blocks & lenguaje c++
Code blocks & lenguaje c++Code blocks & lenguaje c++
Code blocks & lenguaje c++
 
Dcom visualC++
Dcom visualC++Dcom visualC++
Dcom visualC++
 
2 poo u1 1 Introduccion
2 poo u1 1 Introduccion2 poo u1 1 Introduccion
2 poo u1 1 Introduccion
 
tp informatica
tp informaticatp informatica
tp informatica
 
PROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESPROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORES
 
Tutorial de CodeBlocks
Tutorial de CodeBlocksTutorial de CodeBlocks
Tutorial de CodeBlocks
 
Instalacion jdk
Instalacion jdkInstalacion jdk
Instalacion jdk
 
Herramientas para programar en C
Herramientas para programar en CHerramientas para programar en C
Herramientas para programar en C
 
Dev c++ para vista y 7
Dev c++ para vista y 7Dev c++ para vista y 7
Dev c++ para vista y 7
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++
 
Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010
 
Tutorial de-codeblocks
Tutorial de-codeblocksTutorial de-codeblocks
Tutorial de-codeblocks
 
Cómo instalar dev c++
Cómo instalar dev c++Cómo instalar dev c++
Cómo instalar dev c++
 

Similar a COM componente

Yareli martinez rios
Yareli martinez riosYareli martinez rios
Yareli martinez riosYaaree
 
Tutorial de-codeblocks (1)
Tutorial de-codeblocks (1)Tutorial de-codeblocks (1)
Tutorial de-codeblocks (1)MartinCetis109
 
Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Alex Barrios
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarEduardo Méndez
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarJuan Hoyos
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Tutorial de-codeblocks
Tutorial de-codeblocksTutorial de-codeblocks
Tutorial de-codeblockslaura cortez
 
Lenguaje de programacion de visual basic
Lenguaje de programacion de visual basicLenguaje de programacion de visual basic
Lenguaje de programacion de visual basicRosa Marina Mosquera
 
Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Oliver Benitez
 

Similar a COM componente (20)

Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial code block
Tutorial code blockTutorial code block
Tutorial code block
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Yareli martinez rios
Yareli martinez riosYareli martinez rios
Yareli martinez rios
 
Tutorial de-codeblocks (1)
Tutorial de-codeblocks (1)Tutorial de-codeblocks (1)
Tutorial de-codeblocks (1)
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010
 
introduccion pdf
introduccion pdfintroduccion pdf
introduccion pdf
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
PROGRAMACION
PROGRAMACIONPROGRAMACION
PROGRAMACION
 
Tutorial de-codeblocks
Tutorial de-codeblocksTutorial de-codeblocks
Tutorial de-codeblocks
 
Lenguaje de programacion de visual basic
Lenguaje de programacion de visual basicLenguaje de programacion de visual basic
Lenguaje de programacion de visual basic
 
Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010Curso.de.introducción.net.con.visual.basic.2010
Curso.de.introducción.net.con.visual.basic.2010
 

Último

Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 

Último (20)

Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 

COM componente

  • 1. Desarrollo de componentesCOM Introduccional desarrollo de servidores y clientes COM con Visual C++ y Visual Basic respectivamente. COM101
  • 2. Desarrollo de componentes COM Podemos entender a COM como una especificacion determinada por una serie de reglas y mecanismos que nos permiten la creacionde componentes de software independientemente del lenguaje en el que han sido escritos. Un componente de software puede verse como una pieza de software binaria que puede reutilizarse por otras aplicaciones que las cargan como clientes o consumidores.
  • 3.
  • 4.
  • 5. Desarrollo de componentes COM Para crear un GUID utilizaremos la utilidad GUIDGEN.EXE que normalmente viene con las herramientas de Visual Studio y Visual C++, aunque tambien podemos utilizar un algoritmo para generarlo en nuestro codigo. Tambien podemos utilizar una funcion llamada CoCreateGuid que no documentamos aquí pero que te puede ser de utilidad, en ese caso consulta la documentacion en linea.
  • 6. Desarrollo de componentes COM La parte de software que se encarga de encontrar un objeto COM e inicializarlo y cargarlo en memoria se denomina «Service Control Manager» tambien conocido como SCUM y es parte del sistema operativo de Windows. Equivalencias entre COM y CORBA para el cargador. SCUM en COM ORB en CORBA
  • 7. Desarrollo de componentes COM Cuando el servidor COM ya no lo necesitamos mas lo podemos descargar de memoria o apagar a traves de los metodos declarados en la interfaz «IUnknown» (QueryInterface, AddRef, Release). El metodoQueryInterface de IUnkown permite consultar a un objeto COM si proporciona una interfaz determinada. En ese caso devuelve un puntero valido a la Interfaz.
  • 8. Desarrollo de componentes COM Para describir un componente independientemente del lenguaje en el que fue escrito se crea una librería de tipo. El archivo de la librería de tipo es un archivo binario que contiene el mismo tipo de informacion que encontraria en un archivo de cabezera de C++. Para poder crear una librería de tipo hay que crear las clases del servidor COM y describir sus interfaces utilizando el lenguaje de descripcion conocido como IDL. Al compilar el IDL con la herramienta MIDL proporcionada por Visual C++ se genera la librería de tipo que podemos utilizar posteriormente.
  • 9. Desarrollo de componentes COM Hay dos conceptos en COM que debemos revisar antes de continuar aunque tampoco son un requisito indispensable para introducirnos en la tecnologia, estos son la contencion y la agregacion. Contencion: En la contencion de objetos COM se instancia un objeto interno y se crea una interfaz externa que se comunica y delega con la interfaz del objeto interno. Agregacion: El objeto interno envia todas las llamadas de QueryInterface (IUnkown interno) a la implementacionIUnknown del objeto externo.
  • 10. Desarrollo de componentes COM Creamos un servidor COM con Visual C++ 6. (Abrimos nuestro Visual C++ 6) Creamos un nuevo proyecto ATL/COM App Wizard. File -> new Projects Seleccionamos ATL COM APP Wizard ServidorSimple (nombre) y le damos a OK. Seleccionamos Dinamic link library como tipo de servidor Finishy OK. (Ya tenemos el proyecto abierto y listo)
  • 11. Desarrollo de componentes COM Añadimos una clase COM con ATL ObjectWizard a nuestro proyecto. Insert -> new ATL Object Objects -> Simple Object y le damos a Next. Shortname le damos de nombre HelloWorld y veremos como las demas casillas se autocompletan automaticamente. Lo dejamos asi y pulsamos Aceptar. Añadimos un metodo a nuestra clase COM. Boton derecho sobre la interfaz en el explorador de clases y pulsamos AddMethod. Como nombre le damos ShowThis En parameters ponemos esto: [out, retval] BSTR *bstrOutput OK. Ahora buscamos la definicion del metodoShowThis y añadimos el siguiente codigo: *bstrOutput = SysAllocString(L"Hola Mundo desde un servidor COM"); justo antes de return S_OK;
  • 12. Desarrollo de componentes COM Ahora vamos al Explorador de FileView del proyecto y observamos que en la carpeta Source Files existe HelloWorld.cpp que contiene nuestro metodoShowThis. Digamos que esto es un Hola Mundo COM simplificado ya que suelen ser un poco mas complejo, pero pienso que de esta manera sera sencillo introducirnos en el mundo COM y conocer sus mecanismos basicos sin tantos quebraderos de cabeza. Ahora vamos al explorador FileView y sobre la interfaz idl pulsamos boton derecho del raton y seleccionamos compilar «compile ServidorSimple.idl». Al compilarlo deberias de ver en la ventana Build algo asi: ServidorSimple.tlb - 0 error(s), 0 warning(s) «Esta es la librería de tipo» hay que fijarse en su extension terminada .tlb que hace referencia a que es una librería de tipo. Ahoracompilamoshacemos un build del proyectocompleto y obtendremos la siguientesalida: UnServidorSimple.dll - 0 error(s), 0 warning(s)
  • 13.
  • 14. Desarrollo de componentes COM Enhorabuena! Ya has hechotuprimeraaplicacionCliente/Servidorutilizando la tecnologia COM. No deberiashabertenidoningunproblema a la hora de completareste tutorial de inicio en COM si has utilizadolasversiones de Visual C++ 6 y de Visual Basic 6. Ante cualquierduda o sugerenciacontactar : Charly ASAP lpgc.carlos@gmail.com www.edicionempresarial.com