Professional Documents
Culture Documents
|
© À
©
©
OLE (1991) para creación de documentos compuestos
Previo a OLE -> portapapel y DDE
En 1993 apareció OLE 2.0 el cual dio origen a COM
Con OLE 2.0 aparece ³automaticación´ -> controles OLE u
OCX
2
-
!
©
OO
Desarrollo basado en componentes
Consecuencia -> reutilización
©
"
#
$
%&| '
© (
Multiples lenguajes
Multiples S.O.
Aún en mismos lenguajes ± compatibilidad binaria ±
2
!
!
©
)
Cut & Paste dentro de un mismo lenguaje
En OO dependiendo del lenguaje (C++, Java)
© Se tiene abstracción, encapsulamiento y herencia
Encapsulamiento y Herencia facilita la reutilización de forma limitada
El problema es estos objetos NO pueden ser reutilizados en otros
lenguajes
Tambien existe incompatibilidades entre lenguajes iguales
© Binario y aún en fuente.
2
© ü
© *
'
Estructura de componente, comunicación entre componentes, manipulación
por parte de los ambientes de desarrolladores.
© + ,
COM, JavaBeans y CORBA
CORBA en sí mismo NO es un modelo de componentes.
© Permite que componentes u objetos escritos en diferentes lenguajes se
comuniquen entre sí
JavaBean muy ligado a Java
COM es una especificación binaria
Un objeto COM puede crearse usando cualquier lenguaje, lo que importa es
que la imagen binaria de ese objeto cumpla con la especificación COM
© Ë
)
COM es una especificación que define modelos de componentes binarios.
©
% ü
%
"
-
2
© .
Separación entre la Interfaz Pública de un Componente y si
Implementación.
Interfaces COM, tablas de métodos o clases de objetos
© *
! ' |
/
-
Tablas de punteros a métodos
© "
Componente COM: Análogo a un objeto C++ aunque difiere
Interfaz COM: conjunto de servicios expuestos por un componente
COM, físicamente la interfaz es una tabla de punteros
Servidor: los componentes COM se alojan en DLL o EXE. Son
contenedores.
Cliente: aplicación que hace uso e los servicios de un componente
COM
2
'Ë0
|
)
© *
% '
-
© 1
!-
© *
|%-.2
(*%-ü
0
!-
Una Interfaz es como una clase abstracta.
©
' ' |
/-
© |
|
' !
/ '
ü 0
-
© (
!
'
-
2
|
© *
-
Equivalente a una clase abstracta
|
|
2
|3
4
3
55
-ü* 678 9 :;
3
55
-ü* 678 9 :;
3
55
-ü* 678 9 :;
3
55
-ü*
689 :;
<;
©
|3
2
'Ë0 !
)
2
!
|
|"#$
| !
2
'Ë0 3
)
2
3
&' |"#$
| % %
(
')*+
(
', -.
/
2
/ |
© |
!-
©
!)
© Ë
|* > )
© %&*? | @ |
! A
IDL hace COM independiente del lenguaje
IDL es un lenguaje descriptivo
Se utilizará MIDL (Microsoft IDL) que viene con Visual C++
2
/ |
© ü
%
© 0
-ü*
-
© Ë
0
B 3
)
Atributo retval
[out, retval] tipo* «
©
|
3 C-
"
3
D==
' /
! +-
©
"
'
!
D==- (-- E
1
2
|
|*>
© * !
'
'
|* >
© !3
Ciclo de vida
Resolución de interfaces
© 3
AddRef()
Release()
© -
ËueryInterface
2
|
! |
2
© (
© 3
|
3
© ||
|
||5|3
© ü| ü|5|3
© . /
CoInitialize()
CoCreateInstance()
©
3
Se invoca CoInitialize()
Y luego CoCreateInstance() facilitando en CLSID
La asociación del CLSID y el servidor es el Registro de Windows
Si el servidor es una DLL utiliza la subclave: InprocServer32
Otros casos son: LocalServer32 ó RemoteServer32
2
© 3
|
68
&
!68
0
|
|
.
-
2
|
6F8
©
© *
ü3
© ü /
/'
LIPC (Local Interprocess Communication)
&(
0(-! ü
|
|0
© *
ü3 /'
&(
|
0(-!
ü
0
© ü
3
-
© * 3 !
3
©
2
© (
6
/ 8
-
©
D
© %
| (
© ü
%- %>
-
©
ü
=
©
ü 6
ü38
3
-
© (
' 3
ü '
3 68
©
ü
+
D-
3
-
©
ÀGH
=-
©
=
/
2
|
© 3
! E
== '
-
© E E
==-
2